<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[xqs51163的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/xqs51163</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xqs51163]]></copyright><item><title><![CDATA[kubernetes in action 第二版----第十七章翻译]]></title><link>https://blog.youkuaiyun.com/xqs51163/article/details/153419708</link><guid>https://blog.youkuaiyun.com/xqs51163/article/details/153419708</guid><author>xqs51163</author><pubDate>Thu, 16 Oct 2025 21:59:28 +0800</pubDate><description><![CDATA[本章涵盖        •      使用作业运行有限任务        •      处理作业失败        •      为通过作业创建的 Pod 设置参数        •      处理工作队列中的项目        •      启用作业 Pod 之间的通信使用 CronJob 在特定时间或定期间隔运行作业正如你在前几章中学到的，通过 Deployment、StatefulSet 或 DaemonSet 创建的 Pod 会持续运行。当 Pod 中某个容器运行的进程终止时，Kubelet 会重新]]></description><category></category></item><item><title><![CDATA[kubernetes in action 第二版----第十六章翻译]]></title><link>https://blog.youkuaiyun.com/xqs51163/article/details/153419651</link><guid>https://blog.youkuaiyun.com/xqs51163/article/details/153419651</guid><author>xqs51163</author><pubDate>Thu, 16 Oct 2025 21:56:27 +0800</pubDate><description><![CDATA[DaemonSet 是一种 API 对象，它确保每个集群节点上正好运行一个 Pod 副本。默认情况下，守护进程 Pod 会部署在每个节点上，但你可以使用节点选择器将部署限制在某些节点上。]]></description><category></category></item><item><title><![CDATA[kubernetes in action 第二版----第十五章翻译]]></title><link>https://blog.youkuaiyun.com/xqs51163/article/details/153419596</link><guid>https://blog.youkuaiyun.com/xqs51163/article/details/153419596</guid><author>xqs51163</author><pubDate>Thu, 16 Oct 2025 21:53:17 +0800</pubDate><description><![CDATA[15使用statfulsets部署有状态工作负载本章涵盖•      通过StatefulSet 对象管理有状态工作负载•      通过无主服务暴露单个 Pod•      理解 Deployment 与 StatefulSet 的区别使用 Kubernetes Operator•      自动化有状态工作负载管理你 Kiada 套件中的三个服务现在都通过 Deployment 对象进行部署。Kiada 和 Quote 服务各有三个副本，而 Quiz 服务只有一个副本，因为其数据不允许轻松扩展。在本章中]]></description><category></category></item><item><title><![CDATA[kubernetes in action 第二版----第十四章翻译]]></title><link>https://blog.youkuaiyun.com/xqs51163/article/details/153391107</link><guid>https://blog.youkuaiyun.com/xqs51163/article/details/153391107</guid><author>xqs51163</author><pubDate>Thu, 16 Oct 2025 09:21:05 +0800</pubDate><description><![CDATA[14使用Deployment管理Pod本章涵盖•      使用 Deployment 对象部署无状态工作负载•      水平扩展 Deployment以声明方式•      更新工作负载•      防止有缺陷工作负载的发布•      实施各种部署策略在上一章中，你学习了如何通过 ReplicaSets 部署 Pods。然而，工作负载很少通过这种方式部署，因为 ReplicaSets 不提供轻松更新这些 Pods 所需的功能。这一功能由 Deployment 对象类型提供。在本章结束时，Kiada 套]]></description><category></category></item><item><title><![CDATA[kubernetes in action 第二版----第十三章翻译]]></title><link>https://blog.youkuaiyun.com/xqs51163/article/details/153390734</link><guid>https://blog.youkuaiyun.com/xqs51163/article/details/153390734</guid><author>xqs51163</author><pubDate>Thu, 16 Oct 2025 09:19:06 +0800</pubDate><description><![CDATA[13使用 ReplicaSets 复制 Pods本章涵盖•      使用ReplicaSet对象复制Pods•      在集群节点故障时保持 Pods 运行•      Kubernetes 控制器中的调和控制循环•      API 对象所有权与垃圾回收到目前为止，在本书中，你都是通过直接创建 Pod 对象来部署工作负载的。在生产集群中，你可能需要部署相同 Pod 的几十个甚至上百个副本，因此单独创建和管理这些 Pod 会很困难。幸运的是，在 Kubernetes 中，你可以使用 ReplicaSet]]></description><category></category></item><item><title><![CDATA[kubernetes in action 第二版----第十二章翻译]]></title><link>https://blog.youkuaiyun.com/xqs51163/article/details/153326584</link><guid>https://blog.youkuaiyun.com/xqs51163/article/details/153326584</guid><author>xqs51163</author><pubDate>Wed, 15 Oct 2025 14:23:36 +0800</pubDate><description><![CDATA[本章涵盖•  创建Ingress对象•  部署理解Ingress控制器•  使用TLS保护入口•  向Ingress添加额外配置•  在安装多个控制器时使用IngressClasses•  在非服务后端中使用 Ingress在上一章中，你学习了如何使用 Service 对象在一个稳定的 IP 地址上暴露一组 Pod。如果你使用 LoadBalancer 类型的服务，该服务可以通过负载均衡器向集群外的客户端提供。这种方法在你只需要对外暴露单个服务时是可行的，但当服务数量众多时就会出现问题，因为每个服务都需要一]]></description><category></category></item><item><title><![CDATA[kubernetes in action 第二版----第十一章翻译]]></title><link>https://blog.youkuaiyun.com/xqs51163/article/details/153320173</link><guid>https://blog.youkuaiyun.com/xqs51163/article/details/153320173</guid><author>xqs51163</author><pubDate>Wed, 15 Oct 2025 12:07:53 +0800</pubDate><description><![CDATA[11使用Services暴露pods本章涵盖•  pods之间的通信•  将客户端连接分布在一组提供相同服务的pod上•  通过DNS和环境变量发现集群中的服务•  向集群外部的客户端暴露服务•  使用字段选择器根据对象的属性进行筛选•  使用就绪探测从服务中添加或删除单个pod如今，人们通常不会只运行一个 pod 来提供某个特定服务，而是运行多个 pod 副本，以便将负载分布到多个集群节点上。但这意味着所有提供相同服务的 pod 副本应该通过一个单一地址可达，这样客户端就可以使用这个地址，而无需跟踪并直接]]></description><category></category></item><item><title><![CDATA[kubernetes in action 第二版----第十章翻译]]></title><link>https://blog.youkuaiyun.com/xqs51163/article/details/153282349</link><guid>https://blog.youkuaiyun.com/xqs51163/article/details/153282349</guid><author>xqs51163</author><pubDate>Wed, 15 Oct 2025 00:06:02 +0800</pubDate><description><![CDATA[本章覆盖        •  使用命名空间将物理集群拆分为虚拟集群        •  使用标签组织对象        •  使用标签选择器对对象的子集执行操作        •  使用标签选择器将 Pod 调度到特定节点上        •  使用字段选择器根据对象的属性进行筛选        •  为对象添加额外的非身份识别信息Kubernetes 集群通常会被多个团队使用。这些团队应该如何在同一个集群中部署对象并组织它们，以避免一个团队意外修改其他团队创建的对象？另外，对于一个部署数百个微服务的大型团]]></description><category></category></item><item><title><![CDATA[kubernetes in action 第二版----第九章翻译]]></title><link>https://blog.youkuaiyun.com/xqs51163/article/details/153274275</link><guid>https://blog.youkuaiyun.com/xqs51163/article/details/153274275</guid><author>xqs51163</author><pubDate>Tue, 14 Oct 2025 20:57:47 +0800</pubDate><description><![CDATA[9 通过 ConfigMaps、Secrets 和 Downward API 进行配置本章涵盖    •  为容器的主进程设置命令和参数    •  设置环境变量    •  在config map中存储配置    •  在secrets中存储敏感信息    •  使用Download API向应用程序公开pod元数据时    •  使用configMap,secret,downloadapi与投影卷您现在已经学会了如何使用 Kubernetes 运行应用程序进程并将文件卷附加到它。在本章中，您将学习如何配]]></description><category></category></item><item><title><![CDATA[kubernetes in action 第二版----第八章翻译]]></title><link>https://blog.youkuaiyun.com/xqs51163/article/details/153269594</link><guid>https://blog.youkuaiyun.com/xqs51163/article/details/153269594</guid><author>xqs51163</author><pubDate>Tue, 14 Oct 2025 17:47:08 +0800</pubDate><description><![CDATA[8在PersistentVolumes中持久化数据本章涵盖    •  使用PersistentVolume对象来表示持久存储前一章教你如何将网络存储卷挂载到pod中。然而，这种体验并不理想，因为你需要了解集群所处的环境，才能知道要向pod添加什么类型的卷。比如，如果你的集群运行在谷歌的基础设施上，那么你必须在你的pod清单中定义一个gcePersistentDisk卷。你不能在同一清单上运行应用程序在Amazon上运行因为在他们的环境中不支持GCE持久磁盘。要使清单与Amazon兼容，必须在部署pod之前]]></description><category></category></item><item><title><![CDATA[kubernetes in action 第二版----第七章翻译]]></title><link>https://blog.youkuaiyun.com/xqs51163/article/details/153077307</link><guid>https://blog.youkuaiyun.com/xqs51163/article/details/153077307</guid><author>xqs51163</author><pubDate>Sat, 11 Oct 2025 22:28:02 +0800</pubDate><description><![CDATA[当容器启动时，其文件系统中的文件是在构建时添加到其容器镜像中的文件。但是，如下图所示，如果向pod添加一个卷并将其挂载到两个容器中，就可以使这两个容器成为一个完整的系统，提供有价值的服务，而且不仅仅是各部分的总和。因此，存储在卷中的数据是持久的，即使在应用程序运行的pod被在不同工作节点上运行的新pod取代之后，它也可以使用。如果在清单中部署pod，你会注意到，无论容器重启的频率如何，在pod的整个生命周期中，quote都将保持不变，因为/usr/share/nginx/html目录是从其他地方挂载的。]]></description><category></category></item><item><title><![CDATA[kubernetes in action 第二版----第六章翻译]]></title><link>https://blog.youkuaiyun.com/xqs51163/article/details/153055087</link><guid>https://blog.youkuaiyun.com/xqs51163/article/details/153055087</guid><author>xqs51163</author><pubDate>Sat, 11 Oct 2025 17:05:11 +0800</pubDate><description><![CDATA[文章摘要 本文深入探讨了 Kubernetes Pod 中容器的生命周期管理，包括检查 Pod 状态、使用活性探针保持容器健康、生命周期钩子在容器启动和关闭时的操作，以及 Pod 及其容器的完整生命周期。主要内容包括： Pod 状态：Pod 生命周期分为 Pending、Running、Succeeded、Failed 和 Unknown 五个阶段，状态字段提供详细信息。 活性探针：通过 HTTP GET、TCP 套接字或 Exec 命令检查容器健康状态，失败时自动重启容器。 启动探针：为启动缓慢的应用程序]]></description><category></category></item><item><title><![CDATA[kubernetes in action 第二版----第五章翻译]]></title><link>https://blog.youkuaiyun.com/xqs51163/article/details/152417268</link><guid>https://blog.youkuaiyun.com/xqs51163/article/details/152417268</guid><author>xqs51163</author><pubDate>Thu, 02 Oct 2025 20:19:05 +0800</pubDate><description><![CDATA[比如，运行在容器中的一个进程被期望将日志写进标准输出。在接下来的两节中，您将了解如何将日志和其他文件从容器复制到您的计算机上或从本机复制文件到容器，以及如何在运行中的容器中运行命令。很明显，如果在Node.js应用程序本身中实现TLS支持，应用程序将消耗更少的计算资源并具有更低的延迟，因为不需要额外的网络跳转，但是添加Envoy代理可能是一个更快更简单的解决方案。因为这个原因，当你使用命令kubectl logs -f跟踪容器的日志时，如果容器重启，命令将终止，为了查看新容器的日志流你必须重新运行命令。]]></description><category></category></item><item><title><![CDATA[kubernetes in action 第二版----第四章翻译]]></title><link>https://blog.youkuaiyun.com/xqs51163/article/details/152324593</link><guid>https://blog.youkuaiyun.com/xqs51163/article/details/152324593</guid><author>xqs51163</author><pubDate>Tue, 30 Sep 2025 15:51:48 +0800</pubDate><description><![CDATA[因为事件是正常的API对象，你可用通过查看事件对象的结构文件使用它。Status段因不同的对象类型而不同，但是它的目的通常是一样的-包含对象代表的东西的最近观察到的状态。对于Node对象，状态揭示节点的IP地址，主机名，提供的计算资源容量，节点的当前状态，已下载的容器镜像，本地缓冲的容器镜像，以及Kubernetes组件运行的操作系统信息及版本.不像其他对象，你可能从来都不用展示Event对象的完整YAML.但是我希望抓住这个机会向你展示API返回的Kubernetes对象清单的一件烦人的事情。]]></description><category></category></item><item><title><![CDATA[kubernetes in action 第二版----第三章翻译]]></title><link>https://blog.youkuaiyun.com/xqs51163/article/details/152273129</link><guid>https://blog.youkuaiyun.com/xqs51163/article/details/152273129</guid><author>xqs51163</author><pubDate>Mon, 29 Sep 2025 16:27:57 +0800</pubDate><description><![CDATA[这可能发生在，主机节点失败，有人不经意上次pod，或pod从一个要为更重要的pod挪出空间的健康的节点中驱逐。注意 如果你使用Docker Desktop部署你的集群，负载均衡器的IP地址显示的是localhost，引用Windows或macOS机器的地址，而不是Kubernetes和应用程序运行的虚拟机的IP地址。如果另一个问题导致pod不能运行，或者你只是想查看有关pod的更多信息，那么你还可以使用kubectl describe pod命令，就像你之前所做的那样，查看工作节点的详细信息。]]></description><category></category></item><item><title><![CDATA[kubernetes in action 第二版----第二章翻译]]></title><link>https://blog.youkuaiyun.com/xqs51163/article/details/152255485</link><guid>https://blog.youkuaiyun.com/xqs51163/article/details/152255485</guid><author>xqs51163</author><pubDate>Mon, 29 Sep 2025 09:59:47 +0800</pubDate><description><![CDATA[你可能好奇为什么用指定的镜像作为你的基础镜像，因为你的app是一个Node.js应用，你需要你的镜像包含运行app的node二进制文件。最初，Linux操作系统上的所有可用系统资源，比如文件系统，进程ID，用户ID，网卡，与其他，所有的进程看到和使用同一个桶里的资源。为此，我们需要Linux内核的另外一个特性。在本例中，你使用node容器镜像，标签为12.在第二行，你从本地目录把app.js添加进镜像根目录，用同样的名字(app.js). 最后，在第3行，你指定当你执行镜像时Docker应该执行的命令。]]></description><category></category></item><item><title><![CDATA[kubernetes in action 第二版----第一章翻译]]></title><link>https://blog.youkuaiyun.com/xqs51163/article/details/152254623</link><guid>https://blog.youkuaiyun.com/xqs51163/article/details/152254623</guid><author>xqs51163</author><pubDate>Mon, 29 Sep 2025 09:43:55 +0800</pubDate><description><![CDATA[知道汽车的原理，当你的汽车在路边抛锚的时候，可能帮助你修好抛锚的汽车。除了安全性的增加，也提供了更好的默认性能，提供上游的Kubernetes API的同时也提供了额外的对象类型。大部分时间，你的应用运行在本地没有租用虚拟机的开销，但是一年可能有几次短时间的峰值负荷，你的应用可以用云上的资源处理超出容量的负载。你的应用由多种类型的对象组成-一种类型表示将应用部署作为一个整体，另外的类型代表你的应用的运行实例，其他的类型代表由服务实例集合提供的服务，并且允许你通过单个IP地址访问它们，还有很多其他的类型。]]></description><category></category></item><item><title><![CDATA[kubernetes in action 第二版翻译]]></title><link>https://blog.youkuaiyun.com/xqs51163/article/details/152253975</link><guid>https://blog.youkuaiyun.com/xqs51163/article/details/152253975</guid><author>xqs51163</author><pubDate>Mon, 29 Sep 2025 09:41:45 +0800</pubDate><description><![CDATA[在第一部分，在介绍kubernetes和container后，你将用最简单的方式部署应用程序。在那之后的第三部分你将探索kubernetes组件的内部原理。第三部分让你有一个好的基础学习困难的第四部分-如何在生成环境管理kubernetes。根据书的评审者的意见和评论判断，读者喜欢像这样详细的书。书的练习将带你从部署简单的使用基础特性的kubernetes的应用到成熟的使用本书介绍的额外kubernetes特性的应用。如果本书的任何部分难以理解，请提出你的问题，在liveBook论坛上发表评论或建议。]]></description><category></category></item><item><title><![CDATA[kutrace--系统性能分析环境搭建]]></title><link>https://blog.youkuaiyun.com/xqs51163/article/details/137617450</link><guid>https://blog.youkuaiyun.com/xqs51163/article/details/137617450</guid><author>xqs51163</author><pubDate>Thu, 11 Apr 2024 02:34:37 +0800</pubDate><description><![CDATA[1.1 本着生命不息，折腾不止的人生理念，最近迷上了系统性能优化；找了一本书作为研究资料，看完前几章，作者对系统（从硬件到软件）的理解令人叹为观止，性能优化从硬件讲到软件，时间精确到纳秒，跟着作者的思路理解系统性能优化，颇有醍醐灌顶之感。2.1 kutrace是一款基于Linux的软件工具，可以记录每一次用户态与内核态之间转换、每一次系统调和返回，每一次系统中断到中断返回，每一次系统trap，每一次上下文切换的时间。]]></description><category></category></item><item><title><![CDATA[centos7 grpc安装]]></title><link>https://blog.youkuaiyun.com/xqs51163/article/details/123760642</link><guid>https://blog.youkuaiyun.com/xqs51163/article/details/123760642</guid><author>xqs51163</author><pubDate>Sat, 26 Mar 2022 18:35:27 +0800</pubDate><description><![CDATA[1. 给个结论先，官方给的git安装法安装不了，除非你有梯子；以下方案是非官方安装法。

2. 下载grpc

    wgethttps://github.com/grpc/grpc/archive/refs/tags/v1.45.0.tar.gz

3. 安装依赖包

yum install -y build-essential autoconf libtool pkg-config

4. 下载安装protobuf

    a. wgethttps://githu...]]></description><category></category></item></channel></rss>