每天5分钟玩转Kubernetes | 一个数据库例子

书籍来源:cloudman《每天5分钟玩转Kubernetes》

一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!

附上汇总贴:每天5分钟玩转Kubernetes | 汇总_COCOgsta的博客-CSDN博客


本节演示如何为MySQL数据库提供持久化存储,步骤为:

(1)创建PV和PVC。

(2)部署MySQL。

(3)向MySQL添加数据。

(4)模拟节点宕机故障,Kubernetes将MySQL自动迁移到其他节点。

(5)验证数据一致性。

首先创建PV和PVC,配置说明如下。

  • mysql-pv.yml如下所示。
[root@k8s-master ~]# cat mysql-pv.yml 
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
spec:
  accessModes:
    - ReadWriteOnce
  capacity:
    storage: 1Gi
  persistentVolumeReclaimPolicy: Retain
  storageClassName: nfs
  nfs:
    path: /nfsdata/mysql-pv
    server: 192.168.1.146
[root@k8s-master ~]# 
  • mysql-pvc.yml如图下所示。
[root@k8s-master ~]# cat mysql-pvc.yml 
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: mysql-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: nfs
[root@k8s-master ~]# 

创建mysql-pv和mysql-pvc,如图所示。

每天5分钟玩转Kubernetes | 一个数据库例子_第1张图片

接下来部署MySQL,配置文件如下所示。

[root@k8s-master ~]# cat mysql.yml 
apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  ports:
  - port: 3306
  selector:
    app: mysql
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - image: mysql:5.6
        name: mysql
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: password
        ports:
        - containerPort: 3306
          name: mysql
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql
      volumes:
      - name: mysql-persistent-storage
        persistentVolumeClaim:
          claimName: mysql-svc
[root@k8s-master ~]# 

PVC mysql-pvc Bound的PV mysql-pv将被mount到MySQL的数据目录var/lib/mysql,如图所示。

每天5分钟玩转Kubernetes | 一个数据库例子_第2张图片

MySQL被部署到k8s-node2,下面通过客户端访问Service mysql,如图所示。

每天5分钟玩转Kubernetes | 一个数据库例子_第3张图片

① 切换到数据库mysql。

② 创建数据库表my_id。

③ 插入一条数据。

④ 确认数据已经写入。

关闭k8s-node2,模拟节点宕机故障,如图所示。

一段时间后(约5分钟),Kubernetes将MySQL迁移到k8s-node1,如图所示。

每天5分钟玩转Kubernetes | 一个数据库例子_第4张图片

验证数据的一致性,如图所示。

每天5分钟玩转Kubernetes | 一个数据库例子_第5张图片

MySQL服务恢复,数据也完好无损。

你可能感兴趣的:(读书笔记,kubernetes,数据库,mysql)