深入浅出 Kubernetes:StatefulSet 概念理解与实践

  • 时间:
  • 浏览:3

StatefulSet 的核心功能,过后 通过五种土最好的办法记录几个情况汇报,但会 在 Pod 被重新创建时,都都还都还里能为新 Pod 恢复几个情况汇报。

几个 Pod 的创建,也是严格按照编号顺序进行的。比如,在 web-server-gysl-0 进入到 Running 情况汇报、但会 细分情况汇报(Conditions)成为 Ready 从前,web-server-gysl-1 会老是处在 Pending 情况汇报。

存储情况汇报。你你这个情况汇报原困着,应用的多个实例分别绑定了不同的存储数据。对于几个应用实例来说,Pod A 第一次读取到的数据,和隔了十分钟从前再次读取到的数据,应该是同一份,哪怕在此期间 Pod A 被重新创建过。你你这个情况汇报最典型的例子,过后 有一一一二个多数据库应用的多个存储实例。

在上述操作过程中,我随机删除了几个 Pod 中的某有一一一二个多或几个,稍后再次来查看的从前,新创建的 Pod 依然按照从前的编号进行了编排。

从前测试环境资源有限,原计划使用 rook-ceph 来进行实验的,无奈使用 NFS 来进行实验。 Ceph 创建 PV 的相关 yaml 如下:

通过以下命令向相关 Pod 写入验证内容:

你你这个 Service 又是如保被访问的呢?

此外,我将 StatefulSet 的有一一一二个多 Pod 所在的集群内节点下线,再次查看 Pod 的情况汇报,系统在许多节点上以原 Pod 的名称飞快创建了新的 Pod。编号全是从 0 开始英文英文累加,与 StatefulSet 的每个 Pod 实例一一对应,绝不重复。

让大家来看一下以下例子:

NFS 实验相关 yaml:

当大家在集群内主次别 ping 域名 web-server-gysl-0.nginx.default.svc.cluster.local 和 web-server-gysl-1.nginx.default.svc.cluster.local 时,正常返回了对应的 Pod IP, 在 ping 域名 nginx.default.svc.cluster.local 时,则随机返回有一一一二个多 Pod IP 中的有一一一二个多。完整印证了上文所述内容。

从前最近版本的 busybox 有坑,我个人制作了有一一一二个多 DNS 测试工具,Dockerfile 如下:

观察实验结果:

StatefulSet 的设计其实非常容易理解。它把真实世界里的应用情况汇报,抽象为了五种情况汇报:

回到 Master 节点看一下:

第五种土最好的办法,是以 Service 的 VIP(Virtual IP,即:虚拟 IP)土最好的办法。比如:当我访问 172.20.25.3 你你这个 Service 的 IP 地址时,172.20.25.3 其实过后 有一一一二个多 VIP,它会把请求转发到该 Service 所代理的某有一一一二个多 Pod 上。

从实验结果中大家还都还里能看出 Pod 与 PV、PVC 的对应关系,结合上文中的 yaml 大家先要发现:

第二种土最好的办法,过后 以 Service 的 DNS 土最好的办法。比如:这从前,假若我访问“my-svc.my-namespace.svc.cluster.local”这条 DNS 记录,就还都还里能访问到叫雷 my-svc 的 Service 所代理的某有一一一二个多 Pod。

拓扑情况汇报。你你这个情况汇报原困着,应用的多个实例之间全是完整对等的关系。几个应用实例,都还都还里能按照许多顺序启动,比如应用的主节点 A 要先于从节点 B 启动。而从前你把 A 和 B 有一一一二个多 Pod 删除掉,它们再次被创建出来时过后 能严格按照你你这个顺序才行。但会 ,新创建出来的 Pod,都还都还里能和从前 Pod 的网络标识一样,从前从前的访问者都还都还里能使用同样的土最好的办法,访问到你你这个新 Pod。

使用以下命令测试: