Kubernetes 数据库部署与 StatefulSets 深入解析
1. Kubernetes 部署与服务基础
Kubernetes Deployments 为管理一组克隆 Pod 的生命周期提供了复杂的行为。可以通过更改 Deployment 的 YAML 规范并重新应用来测试这些生命周期操作(回滚除外)。例如,将副本数量扩展到 2 个,然后再恢复,或者使用不同的 MySQL 镜像。更新 Deployment 后,可以使用 kubectl describe deployment wordpress-mysql
命令观察 Kubernetes 为使 Deployment 达到所需状态而发起的事件。
在完成数据库的 PVC、Secret 和 Deployment 创建后,需要让数据库对应用程序可访问,这就涉及到 Kubernetes Services。Service 是将数据库作为网络服务暴露访问的基本资源,它为其后运行的一组 Pod 提供抽象。即使是单个 MySQL 节点,创建 Service 也很有必要,因为它能提供一个稳定不变的命名端点,避免数据库 Pod 重启获取新 IP 地址时更新客户端。
创建访问 MySQL 的 Service 的 YAML 配置如下:
apiVersion: v1
kind: Service
metadata:
name: wordpress-mysql
labels:
app: wordpress
spec:
ports:
- port: 3306
selector:
app: wordpress