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 #外部使用端口

 

posted @ 2025-10-14 16:15  蓝色土耳其  阅读(4)  评论(0)    收藏  举报