[Kubernetes] 在K8S上部署MySQL 8.0并数据持久化
生活随笔
收集整理的這篇文章主要介紹了
[Kubernetes] 在K8S上部署MySQL 8.0并数据持久化
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在K8S上安裝MySQL
1、創建PV
apiVersion: v1 kind: PersistentVolume metadata:name: model-db-pv spec:storageClassName: ml-pv1accessModes:- ReadWriteOncecapacity:storage: 5GihostPath:path: /home/work/share/model-dbpersistentVolumeReclaimPolicy: RetainvolumeMode: Filesystem其中:home/work/share/? 為所有K8S都共有的目錄,相當于所有主機mount了一個NFS目錄
也可以
apiVersion: v1 kind: PersistentVolume metadata:name: model-db-pv spec:storageClassName: ml-pv1accessModes:- ReadWriteOncecapacity:storage: 5GipersistentVolumeReclaimPolicy: RetainstorageClassName: nfsnfs:path: /home/work/share/model-dbserver: 192.168.20.10volumeMode: Filesystem2、創建PVC
apiVersion: v1 kind: PersistentVolumeClaim metadata:name: model-db-pv-claimnamespace: default spec:storageClassName: ml-pv1accessModes:- ReadWriteOnceresources:requests:storage: 5Gi3、確認pv及pvc的狀態
# kubectl get pv # kubectl get pvc4. 創建mysql configMap
apiVersion: v1 kind: ConfigMap metadata:name: model-db-confignamespace: defaultlabels:app: model-db data:my.cnf: |-[client]default-character-set=utf8mb4[mysql]default-character-set=utf8mb4[mysqld]max_connections = 2000secure_file_priv=/var/lib/mysqlsql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION5、部署(Deployment)文件
apiVersion: apps/v1 kind: Deployment metadata:name: model-dbnamespace: default spec:replicas: 1selector:matchLabels:app: model-mysqltemplate:metadata:labels:app: model-mysqlspec:containers:- args:- --datadir- /var/lib/mysql/datadirenv:- name: MYSQL_ROOT_PASSWORDvalue: root- name: MYSQL_USERvalue: user- name: MYSQL_PASSWORDvalue: userimage: mysql:5.6name: model-db-containerports:- containerPort: 3306name: dbapivolumeMounts:- mountPath: /var/lib/mysqlname: model-db-storage- name: configmountPath: /etc/mysql/conf.d/my.cnfsubPath: my.cnfvolumes:- name: model-db-storagepersistentVolumeClaim:claimName: model-db-pv-claim- name: config configMap:name: model-db-config- name: localtimehostPath:type: Filepath: /etc/localtime6、創建svc(service)
ClusterIP:只對集群內部可見
apiVersion: v1 kind: Service metadata:labels:app: model-mysqlname: model-db-svcnamespace: default spec:type: ClusterIPports:- port: 3306protocol: TCPtargetPort: 3306selector:app: model-mysqlNodePort:對外部可見
apiVersion: v1 kind: Service metadata:labels:app: model-mysqlname: model-db-svcnamespace: default spec:type: NodePortports:- name: httpport: 3306nodePort: 30336protocol: TCPtargetPort: 3306selector:app: model-mysql先在mysql中創建test_db庫,再修改環境變量,重啟test_db后報錯“Access denied for user ‘root’@‘172.17.0.1’ (using password: NO)”。但mysql用Navicat能夠連接上。
??? 對于熟悉mysql的人,這個錯誤應該很容易定位。從MySQL8.0 開始,默認的驗證方式是 caching_sha2_password(參見 MySQL 8.0.4 : New Default Authentication Plugin : caching_sha2_password)。
方案1:修改配置文件spring.datasource.password:***
方案2:將驗證方式修改為“mysql_native_password”
?
總結
以上是生活随笔為你收集整理的[Kubernetes] 在K8S上部署MySQL 8.0并数据持久化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机经历的四个时代是什么?
- 下一篇: linux cmake编译源码,linu