参考文档:

https://blog.csdn.net/qq_46480020/article/details/132551081

https://blog.csdn.net/jialiu111111/article/details/128626529

新建k8s部署mysql的配置文件:

vim mysql-deploy.yaml

内容如下:

  1apiVersion: v1
  2kind: Namespace
  3metadata:
  4  name: mysql-dev
  5---
  6apiVersion: v1
  7kind: ConfigMap
  8metadata:
  9  name: mysql-config
 10  namespace: mysql-dev
 11data:
 12  my.cnf: |
 13    [client]
 14    default-character-set=utf8mb4
 15    [mysql]
 16    default-character-set=utf8mb4
 17    [mysqld]
 18    default_authentication_plugin=mysql_native_password
 19    default-time-zone='+08:00'
 20    character-set-server=utf8mb4
 21    collation-server=utf8mb4_unicode_ci
 22---
 23apiVersion: v1
 24kind: PersistentVolume
 25metadata:
 26  name: mysql-pv
 27  namespace: mysql-dev
 28spec:
 29  accessModes:
 30  - ReadWriteOnce
 31  capacity:
 32    storage: 10Gi
 33
 34  hostPath:
 35    path: /home/zhangcong/dev/mysql-data
 36---
 37apiVersion: v1
 38kind: PersistentVolumeClaim
 39metadata:
 40  name: mysql-pvc
 41  namespace: mysql-dev
 42spec:
 43  accessModes:
 44  - ReadWriteOnce
 45  resources:
 46    requests:
 47      storage: 1Gi
 48    limits:
 49      storage: 10Gi
 50
 51---
 52apiVersion: apps/v1
 53kind: Deployment
 54metadata:
 55  name: mysql-deployment
 56  namespace: mysql-dev
 57spec:
 58  replicas: 1
 59  selector:
 60    matchLabels:
 61      app: mysql
 62  template:
 63    metadata:
 64      labels:
 65        app: mysql
 66    spec:
 67      containers:
 68      - name: mysql
 69        image: docker.io/library/mysql:8.0.35
 70        env:
 71        - name: MYSQL_ROOT_PASSWORD
 72          value: "123456"
 73        ports:
 74        - containerPort: 3306
 75        volumeMounts:
 76        - name: data
 77          mountPath: /var/lib/mysql
 78        - name: timezone
 79          mountPath: /etc/localtime
 80        - name: config
 81          mountPath:  /etc/mysql/conf.d/my.cnf
 82          subPath: my.cnf
 83      volumes:
 84      - name: data
 85        persistentVolumeClaim:
 86          claimName: mysql-pvc
 87      - name: timezone
 88        # 使用主机中的配置
 89        hostPath:
 90          path: /etc/localtime
 91      - name: config
 92        configMap:
 93          name: mysql-config
 94---
 95apiVersion: v1
 96kind: Service
 97metadata:
 98  name: mysql-svc
 99  namespace: mysql-dev
100spec:
101  selector:
102    app: mysql
103  type: NodePort
104  ports:
105  - name: mysql
106    port: 3306
107    targetPort: 3306

应用配置:

 1[zhangcong@master k8s]$ kubectl apply -f mysql-deploy.yaml
 2namespace/mysql-dev created
 3configmap/mysql-config created
 4persistentvolume/mysql-pv created
 5persistentvolumeclaim/mysql-pvc created
 6deployment.apps/mysql-deployment created
 7service/mysql-svc created
 8
 9[zhangcong@master k8s]$ kubectl get all -n mysql-dev
10NAME                                    READY   STATUS    RESTARTS   AGE
11pod/mysql-deployment-67bb474b48-6tlkq   1/1     Running   0          44s
12NAME                TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
13service/mysql-svc   NodePort   10.108.200.73   <none>        3306:31374/TCP   44s
14NAME                               READY   UP-TO-DATE   AVAILABLE   AGE
15deployment.apps/mysql-deployment   1/1     1            1           44s
16NAME                                          DESIRED   CURRENT   READY   AGE
17replicaset.apps/mysql-deployment-67bb474b48   1         1         1       44s

接下来就可以通过连接工具进行连接了。

注意service/mysql-svc中的端口为:31374