

#设置持久卷apiVersion: v1kind: PersistentVolumeClaimmetadata:name: mysql-pv-claimlabels:app: mysqlspec:accessModes:- ReadWriteOnceresources:requests:storage: 20Gi #持久卷的容量是 20 GB

#有状态服务apiVersion: apps/v1kind: StatefulSetmetadata:name: mysql-deploymentspec:selector:matchLabels:app: mysqlreplicas: 3 #创建3个副本serviceName: mysqltemplate:metadata:labels:app: mysqlspec:containers:- name: mysqlimage: mysql:latest #mysql镜像,直接选择最高版本imagePullPolicy: Always #允许自动拉取镜像env:- name: MYSQL_ROOT_PASSWORD # 这里设置root的密码value: test12345678args: ["--default-authentication-plugin=mysql_native_password"] #作用是解除高版本Mysql不允许账号密码连接远程mysqlresources:requests:cpu: "50m"memory: 1Gilimits:cpu: "50m"memory: 1GivolumeMounts:- name: mysql-storemountPath: home/storageVolume/mysql # MySQL容器的数据默认都是存在这个目录subPath: mysqldata # 这里通过subPath挂载到子目录,就可以避免出错volumes:- name: mysql-storepersistentVolumeClaim:claimName: mysql-pv-claim #存储卷名称使用上一步创建的持久卷名称
以上配置我们部署有状态Mysql服务,开启了3个副本,如果不存在Mysql镜像,允许自动拉取镜像,同时设置密码为test12345678,并且分配了一个20G的持久卷。

完成以上部署之后,我们需要创建一个Service来允许外部访问,这里我们指定一个外部访问端口30306
#对外服务apiVersion: v1kind: Servicemetadata:name: mysql-servicelabels:app: mysqlspec:type: NodePortselector:app: mysqlports:- protocol : TCPnodePort: 30306port: 3306targetPort: 3306

#设置持久卷apiVersion: v1kind: PersistentVolumeClaimmetadata:name: mysql-pv-claimlabels:app: mysqlspec:accessModes:- ReadWriteOnceresources:requests:storage: 20Gi #持久卷的容量是 20 GB---#有状态服务apiVersion: apps/v1kind: StatefulSetmetadata:name: mysql-deploymentspec:selector:matchLabels:app: mysqlreplicas: 3serviceName: mysqltemplate:metadata:labels:app: mysqlspec:containers:- name: mysqlimage: mysql:latestimagePullPolicy: Alwaysenv:- name: MYSQL_ROOT_PASSWORD # 这里设置root的密码value: test12345678args: ["--default-authentication-plugin=mysql_native_password"]resources:requests:cpu: "50m"memory: 1Gilimits:cpu: "50m"memory: 1GivolumeMounts:- name: mysql-storemountPath: home/storageVolume/mysql # MySQL容器的数据默认都是存在这个目录subPath: mysqldata # 这里通过subPath挂载到子目录,就可以避免出错volumes:- name: mysql-storepersistentVolumeClaim:claimName: mysql-pv-claim---#对外服务apiVersion: v1kind: Servicemetadata:name: mysql-servicelabels:app: mysqlspec:type: NodePortselector:app: mysqlports:- protocol : TCPnodePort: 30306port: 3306targetPort: 3306
保存之后加载配置文件,在服务器上输入以下命令
kubectl apply -f mysql-deployment-status-scale.yaml
完成加载后可以查看部署的情况

发现有成功运行,并且部署了3个副本,我们本地连接下是否可以连接Mysql服务

本地发现也可以成功连接。
文章转载自程序员技术笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。






