美文网首页
《每天5分钟玩转 Kubernetes》9.3 数据管理 - m

《每天5分钟玩转 Kubernetes》9.3 数据管理 - m

作者: SlowGO | 来源:发表于2018-12-13 16:02 被阅读2次

目标

创建 pv,pvc,部署一个 mysql,加载 pv,然后连接到 mysql,添加新的数据,之后节点模拟故障,使 kubernetes 将 mysql 迁移到新的节点,此时需要保证之前 mysql 中数据没有丢失。

步骤:

  1. 创建 pv,pvc
  2. 部署 mysql
  3. 连接 mysql 添加数据
  4. 模拟节点故障
  5. 连接新 mysql,验证数据完整

创建配置文件

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
    server: 172.17.8.101

mysql-pvc.yml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: nfs

mysql-svc.yml

apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  type: NodePort
  ports:
  - port: 3306
  selector:
    app: mysql

---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - image: mysql:5.7
        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-pvc

启动

kubectl apply -f mysql-pv.yml
kubectl apply -f mysql-pvc.yml
kubectl apply -f mysql-svc.yml

查看状态:

image

查看 pod:

kubectl get pod -o wide
NAME                     READY     STATUS    RESTARTS   AGE       IP            NODE
mysql-7869f56d8f-hmpql   1/1       Running   0          1m        172.33.27.3   node3

mysql 被部署到 node3。

连接 mysql 添加数据

访问 mysql service

kubectl run -it --rm --image=mysql:5.7 --restart=Never mysql-client -- mysql -h mysql -ppassword

创建一个数据库 'test'

image

模拟节点故障

关闭 node3 模拟故障,过一会儿,mysql pod 就会被迁移:

kubectl get pod -o wide
NAME                     READY     STATUS    RESTARTS   AGE       IP            NODE
mysql-7869f56d8f-4lhgp   1/1       Running   0          20s       172.33.42.3   node2
mysql-7869f56d8f-hmpql   1/1       Unknown   0          8m        172.33.27.3   node3

mysql 重新在 node2 上部署了。

验证数据

连接 mysql,查看新建的数据库 'test' 还在不在:

image

数据都在,实现了数据隔离持久化。

相关文章

网友评论

      本文标题:《每天5分钟玩转 Kubernetes》9.3 数据管理 - m

      本文链接:https://www.haomeiwen.com/subject/wsrbhqtx.html