公众号:鸣霄溪
容器编排与作业管理
Deployment
创建一个多复本应用首选的方式就是 Deplyment,Deployment 内部使用 ReplicaSet 实现。
Deployment 实际上是一个两层控制器:
ReplicaSet
StatefulSet
StatefulSet 这个控制器的主要作用之一,就是使用 Pod 模板创建 Pod 的时候,对它们进行编号,并且按照编号顺序逐一完成创建工作。
而当 StatefulSet 的“控制循环”发现 Pod 的“实际状态”与“期望状态”不一致,需要新建或者删除 Pod 进行“调谐”的时候,它会严格按照这些 Pod 编号的顺序,逐一完成这些操作。
与此同时,通过 Headless Service 的方式,StatefulSet 为每个 Pod 创建了一个固定并且稳定的 DNS 记录,来作为它的访问入口。
实际上,在部署“有状态应用”的时候,应用的每个实例拥有唯一并且稳定的“网络标识”,是一个非常重要的假设。
StatefulSet 其实是一种特殊的 Deployment,只不过这个“Deployment”的每个 Pod 实例的名字里,都携带了一个唯一并且固定的编号。这个编号的顺序,固定了 Pod 的拓扑关系;这个编号对应的 DNS 记录,固定了 Pod 的访问方式;这个编号对应的 PV,绑定了 Pod 与持久化存储的关系。所以,当 Pod 被删除重建时,这些“状态”都会保持不变。
Headless Service
Persisted Volume Claim (PVC) 对象
Persisted Volume 对象
声明式 API 与 Kubernets 编程范式
在 Kubernetes 项目中,一个 API 对象在 Etcd 里的完整资源路径,是由:Group(API 组)、Version(API 版本)和 Resource(API 资源类型)三个部分组成的。
Operator: 聪明的微创新
Operator 的工作原理:
Controller Manager
基于 etcd watch 的实现方式:
kube-proxy :
容器网络:Service 是如何被发现的?
Service 是由 kube-proxy 组件,加上 iptables 来共同实现的
访问 Service VIP 的 IP 包经过上述 iptables 处理之后,就已经变成了访问具体某一个后端 Pod 的 IP 包了。不难理解,这些 Endpoints 对应的 iptables 规则,正是 kube-proxy 通过监听 Pod 的变化事件,在宿主机上生成并维护的。
Informar 和 缓存机制 - ListAndWatch 机制
所谓 Informer,其实就是一个带有本地缓存和索引机制的、可以注册 EventHandler 的 client。
kubernetes 提供了 client-go 以便使用 go 语言进行二次开发。
controller-runtime 是社区封装的一个控制器处理框架。
kubebuilder 基于 controller runtime 做了一些封装,目的是快速生成 operator 代码。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/170075.html