Kubernetes 集群部署与配置实战
1. 持久存储与部署策略
使用持久存储时,实例无法像正常情况那样复制或重启。因此,需将副本数设为 1,并将策略设为 Recreate。通常,部署更新时会先启动新 Pod 再关闭旧 Pod,但使用持久存储时,新 Pod 启动时卷可能正在使用,导致新 Pod 无法部署,所以要让 Deployment 在更新时先关闭旧 Pod。
2. StatefulSets 的使用
若要复制实例(如使用复制数据库从服务器),需使用 StatefulSets 而非 Deployment。StatefulSets 允许启动过程排序,使主服务器先启动,还支持 PVC 模板,为每个部署的 Pod 创建存储声明。在 StatefulSets 中,每个 Pod 有可预测的名称,如名为 myset 的 StatefulSets,第一个 Pod 名为 myset - 0,第二个为 myset - 1 等。每个 Pod 还有一个标签,键为 statefulset.kubernetes.io/pod - name,值为 Pod 名称,便于通过服务选择器定位单个 Pod。
3. 前端服务
- 容器通信 :Pod 中的容器使用不同镜像,它们通过共享挂载卷进行通信。这里由于文件大小小,使用主机上的空目录作为存储。在 volumes 键下,有一个名为 website - data 的卷,它引用一个无额外选项的 emptyDir,使 Pod 创建一个可在容器间共享的空目录卷,该目录是临时的,Pod 终止时会被删除。
- initContainers