K8S 部署 Mysql(NFS 持久化)

1,744 阅读1分钟

环境

部署 Mysql 的前提是有 K8s 或者 k3s 。

[root@cs100 ~]# kubectl get nodes
NAME         STATUS   ROLES                  AGE   VERSION
k3s-master   Ready    control-plane,master   26h   v1.20.4+k3s1

NFS 服务创建

安装命令nfs

yum install nfs-utils -y

设置挂载路径

vim /etc/exports
/root/data/nfs *(rw,no_root_squash)

创建挂载路径

mkdir /root/data/nfs

启动nfs

systemctl start nfs

ps -ef | grep nfs

Mysql

Persistent Volume 和 Persistent Volume Claim,主要是管理服务持久化的存储资源 Volume。这里我们先创建 PV,再创建 PVC,将两者绑定。

mysql-nfs-pv.yaml

/root/data/nfs/mysql要提前创建好文件夹mysql

cat > /root/k3s_yaml/mysql57_nfs/mysql-nfs-pv.yaml  <<EOF
kind: PersistentVolume
apiVersion: v1
metadata:
  name: mysql-nfs-pv
  namespace: db-mysql
spec:
  accessModes:
    - ReadWriteOnce      
  capacity:
    storage: 1Gi
  persistentVolumeReclaimPolicy: Retain
  storageClassName: nfs
  nfs:
    path: /root/data/nfs/mysql
    server: 192.168.72.100

EOF

mysql-nfs-pvc.yaml

cat > /root/k3s_yaml/mysql57_nfs/mysql-nfs-pvc.yaml <<EOF

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

EOF

mysql-nfs-deploy.yaml

cat > /root/k3s_yaml/mysql57_nfs/mysql-nfs-deploy.yaml <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql-nfs-deploy
  namespace: db-mysql
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql_nfs
  template:
    metadata:
      labels:
        app: mysql_nfs
    spec:
      containers:
      - name: mysql57
        image: mysql:5.7
        imagePullPolicy: IfNotPresent
        
        env:                        
        - name: MYSQL_ROOT_PASSWORD
          value: "123456"
        args:
        - --lower_case_table_names=1
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql         
      volumes:
      - name: mysql-persistent-storage
        persistentVolumeClaim:
          claimName: mysql-nfs-pvc      
EOF

mysql-nfs-svc.yaml

cat > /root/k3s_yaml/mysql57_nfs/mysql-nfs-svc.yaml <<EOF
apiVersion: v1
kind: Service
metadata:
  name: mysql
  namespace: db-mysql
spec:
  type: NodePort
  ports:
  - port: 3306
    targetPort: 3306
    nodePort: 32306
  selector:
    app: mysql_nfs

EOF

创建命名空间

kubectl create namespace db-mysql

分别执行yaml

kubectl create -f  mysql-nfs-pv.yaml

kubectl create -f  mysql-nfs-pvc.yaml

kubectl create -f mysql-nfs-deploy.yaml

kubectl create -f  mysql-nfs-svc.yaml

查看poddb-mysql mysql-nfs-deploy-5f4fc57696-7cjkn

[root@cs100 mysql57_nfs]# kubectl get pods -A -o wide
NAMESPACE       NAME                                      READY   STATUS             RESTARTS   AGE    IP           NODE         NOMINATED NODE   READINESS GATES
kube-system     helm-install-traefik-rb69p                0/1     Completed          0          2d2h   10.42.0.9    k3s-master   <none>           <none>
kube-system     metrics-server-86cbb8457f-nkck4           1/1     Running            2          2d2h   10.42.0.36   k3s-master   <none>           <none>
kube-system     coredns-854c77959c-mvlqz                  1/1     Running            2          2d2h   10.42.0.33   k3s-master   <none>           <none>
fleet-system    fleet-agent-55bfc495bd-g7mt8              1/1     Running            2          2d1h   10.42.0.39   k3s-master   <none>           <none>
default         seata-server-5ccbbdfb87-rnzp8             1/1     Running            2          47h    10.42.0.38   k3s-master   <none>           <none>
kube-system     svclb-traefik-8rk4w                       2/2     Running            6          2d2h   10.42.0.34   k3s-master   <none>           <none>
kube-system     traefik-6f9cbd9bd4-ppcmc                  1/1     Running            2          2d2h   10.42.0.32   k3s-master   <none>           <none>
kube-system     local-path-provisioner-5ff76fc89d-s698r   1/1     Running            3          2d2h   10.42.0.40   k3s-master   <none>           <none>
db-mysql        mysql-nfs-deploy-5f4fc57696-7cjkn         1/1     Running            0          20m    10.42.0.41   k3s-master   <none>           <none>
cattle-system   cattle-cluster-agent-68b9fbcc5d-ghp2x     0/1     CrashLoopBackOff   228        2d1h   10.42.0.35   k3s-master   <none>           <none>

查看mysql数据

[root@cs100 mysql]# pwd
/root/data/nfs/mysql
[root@cs100 mysql]# ls
auto.cnf  ca-key.pem  ca.pem  client-cert.pem  client-key.pem  ib_buffer_pool  ibdata1  ib_logfile0  ib_logfile1  ibtmp1  mysql  performance_schema  private_key.pem  public_key.pem  server-cert.pem  server-key.pem  sys