k8s部署mysql pod模版
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mysql5-7
spec:
serviceName: "mysql-service" # 必须有一个对应的 Headless Service
replicas: 1
selector:
matchLabels:
app: mysql5-7
template:
metadata:
labels:
app: mysql5-7
spec:
containers:
- name: mysql
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/ranchercharts/mysql:5.7.14
env:
- name: MYSQL_ROOT_PASSWORD
value: "password"
ports:
- containerPort: 3306
volumeMounts:
- name: mysql-data
mountPath: /var/lib/mysql # MySQL 数据目录
volumeClaimTemplates: # 核心:存储声明模板
- metadata:
name: mysql-data
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 3Gi
storageClassName: mysql-storage
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: mysql-pv
spec:
capacity:
storage: 3Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: mysql-storage
local:
path: /data/k8s/mysql
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: node-type
operator: In
values:
- master #针对本地存储使用,Pod必须被调度到标签为 node-type: master
的节点上,此处需要设置结点node-type kubectl label nodes zjk node-type=master
---
apiVersion: v1
kind: Service
metadata:
name: mysql-service
spec:
type: NodePort
selector:
app: mysql5-7
ports:
- port: 23306 #集群内部使用端口
targetPort: 3306 #pod端口
nodePort: 30006 #外部使用端口