日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

[Kubernetes] 在K8S上部署MySQL 8.0并数据持久化

發布時間:2023/12/15 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [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: Filesystem

2、創建PVC

apiVersion: v1 kind: PersistentVolumeClaim metadata:name: model-db-pv-claimnamespace: default spec:storageClassName: ml-pv1accessModes:- ReadWriteOnceresources:requests:storage: 5Gi

3、確認pv及pvc的狀態

# kubectl get pv # kubectl get pvc

4. 創建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_SUBSTITUTION

5、部署(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/localtime

6、創建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-mysql

NodePort:對外部可見

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”
?

USE mysql; ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '<password>';FLUSH PRIVILEGES;

總結

以上是生活随笔為你收集整理的[Kubernetes] 在K8S上部署MySQL 8.0并数据持久化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。