使用GKE Autopilot部署MySQL
使用GKE Autopilot部署MySQL
一、登录GCP平台,点击Kubernetes Engine,选择创建GKE Autopilot集群(一个按 Pod 付费的 Kubernetes 集群)

二、创建完后可以点击Connect连接,进入Cloud Shell控制台

三、创建之前,需要创建一个Secrets,保存数据库的用户名和密码。Secret 里的值是用 base64 方式加密的,所以这里的 MYSQL_ROOT_PASSWORD,要用实际的密码用 base64 的方式加密。

1)编写一个mysql-secret.yaml文件,文件内容如下:

2)然后使用以下命令运行,运行完后也可以在页面的Secrets&ConfigMaps看到你新建的Secrets


四、创建PV和PVC
1)创建一个 StorageClass
注意:创建pvc之前可以创建一个 StorageClass,然后volumeBindingMode字段配置成Immediate,这样创建 PersistentVolumeClaim的时候,Kubernetes 会自动为您预配PV,不需要单独创建pv
编写一个pd-example-class.yaml文件,文件内容如下,然后运行kubectl get sc命令查看创建的StorageClass


2) 创建一个 pvc
编写一个pvc-example.yaml文件,文件内容如下,然后运行kubectl apply -f pvc-example.yaml命令运行创建pvc


五.部署mysql
1)编写mysql.yaml文件,然后运行kubectl apply -f mysql.yaml,kubectl get pod,kubectl get StatefulSet查看执行结果。




2)在MySQL数据库中添加数据


3)模拟MySQL服务故障
k8s集群会生产一个新的Pod,验证这个Pod内是否有之前数据。先查看运行MySQL服务的Pod在哪个节点,然后将该节点挂起,我们知道k8s肯定会在另外一个节点重新生成一个Pod。

4)新生成Pod后,同样进入Pod验证数据是否存在。

