k8s nfs mysql部署

文章详细介绍了在Kubernetes中使用pvpvc模式配置持久化卷(PV)和持久化卷声明(PVC),以及如何在Deployment中挂载NFS存储,包括MySQL示例。还讨论了服务(Service)的NodePort配置。

#方式一使用  pv pvc 模式

---


#方式一使用  pv pvc 模式
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv100d002
spec:
  capacity:
    storage: 100Mi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: local-storage
  mountOptions:
    - hard
    - nfsvers=4.1
  nfs:
    path: /data/nfs/db/pv100d002
    server: 192.168.155.130
---
# https://kubernetes.io/docs/concepts/storage/persistent-volumes/
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysqlpvc002
  namespace: default
  labels:
    app: mysql002
spec:
  storageClassName: local-storage
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 100Mi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql002
  namespace: default
  labels:
    app: mysql002
spec:
  selector:
    matchLabels:
      app: mysql002
  replicas: 1
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: mysql002
    spec:
      containers:
      - name: mysql002
        image: mysql/mysql-server:8.0
        imagePullPolicy: IfNotPresent
        resources:
          requests:
            cpu: 500m
            memory: 1024Mi
          limits:
            cpu: 20000m
            memory: 2048Mi
        env:
        - name: ACCEPT_EULA
          value: "Y"
        - name: MYSQL_ROOT_PASSWORD
          value: mysql88.8
        - name: MYSQL_ROOT_USER
          value: root
        - name: MYSQL_SQL_MODE
          value: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
        - name: MYSQL_DATABASE
          value: db001
        - name: MYSQL_AUTHENTICATION_PLUGIN
          value: mysql_native_password
        - name: MYSQL_DATABASE
          value: db001
        - name: DATADIR
          value: /var/lib/mysql
        - name: MYSQL_ROOT_HOST
          value: %
        ports:
        - containerPort: 3306
          name: mysql002
        volumeMounts:
        - name: localtime
          mountPath: /etc/localtime
        - name: mysql-data
          mountPath: /var/lib/mysql
      volumes:
        - name: localtime
          hostPath:
            path: /usr/share/zoneinfo/Asia/Shanghai
        - name: mysql-data
          nfs:
          persistentVolumeClaim:
            claimName: mysqlpvc002
---
apiVersion: v1
kind: Service
metadata:
  name: mysql002
  namespace: default
  labels:
    app: mysql002
spec:
  selector:
    app: mysql002
  type: NodePort
  ports:
  - name: mysql002
    protocol: TCP
    port: 3306
    targetPort: 3306
    nodePort: 23306



#方式二 直接使用 volumes的 nfs ->server和path
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql001
  namespace: default
  labels:
    app: mysql001
spec:
  selector:
    matchLabels:
      app: mysql001
  replicas: 1
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: mysql001
    spec:

      containers:
      - name: mysql001
        image: mysql/mysql-server:8.0
        imagePullPolicy: IfNotPresent
        resources:
          requests:
            cpu: 500m
            memory: 1024Mi
          limits:
            cpu: 20000m
            memory: 2048Mi
        env:
        - name: ACCEPT_EULA
          value: "Y"
        - name: MYSQL_ROOT_PASSWORD
          value: mysql88.8
        - name: MYSQL_ROOT_USER
          value: root
        - name: MYSQL_SQL_MODE
          value: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
        - name: MYSQL_DATABASE
          value: db001
        - name: MYSQL_AUTHENTICATION_PLUGIN
          value: mysql_native_password
        - name: MYSQL_DATABASE
          value: db001
        - name: DATADIR
          value: /var/lib/mysql/data
        - name: MYSQL_ROOT_HOST
          value: %
        ports:
        - containerPort: 3306
          name: mysql001
        volumeMounts:
        - name: localtime
          mountPath: /etc/localtime
        - name: mysql-data
          mountPath: /var/lib/mysql
      volumes:
        - name: localtime
          hostPath:
            path: /usr/share/zoneinfo/Asia/Shanghai
        - name: mysql-data
          nfs:
            path: /data/nfs/db/pv100d001/
            server: 192.168.155.130
---
# https://kubernetes.io/docs/concepts/services-networking/service/
apiVersion: v1
kind: Service
metadata:
  name: mysql001
  namespace: default
  labels:
    app: mysql001
spec:
  selector:
    app: mysql001
  type: NodePort
  ports:
  - name: mysql001
    protocol: TCP
    port: 3306
    targetPort: 3306
    nodePort: 23306



 

#方式二 直接使用 volumes的 nfs ->server和path

---

apiVersion: apps/v1

kind: Deployment

metadata:

  name: mysql001

  namespace: default

  labels:

    app: mysql001

spec:

  selector:

    matchLabels:

      app: mysql001

  replicas: 1

  strategy:

    rollingUpdate:

      maxSurge: 25%

      maxUnavailable: 25%

    type: RollingUpdate

  template:

    metadata:

      labels:

        app: mysql001

    spec:



      containers:

      - name: mysql001

        image: mysql/mysql-server:8.0

        imagePullPolicy: IfNotPresent

        resources:

          requests:

            cpu: 500m

            memory: 1024Mi

          limits:

            cpu: 20000m

            memory: 2048Mi

        env:

        - name: ACCEPT_EULA

          value: "Y"

        - name: MYSQL_ROOT_PASSWORD

          value: mysql88.8

        - name: MYSQL_ROOT_USER

          value: root

        - name: MYSQL_SQL_MODE

          value: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

        - name: MYSQL_DATABASE

          value: db001

        - name: MYSQL_AUTHENTICATION_PLUGIN

          value: mysql_native_password

        - name: MYSQL_DATABASE

          value: db001

        - name: DATADIR

          value: /var/lib/mysql/data

        - name: MYSQL_ROOT_HOST

          value: %

        ports:

        - containerPort: 3306

          name: mysql001

        volumeMounts:

        - name: localtime

          mountPath: /etc/localtime

        - name: mysql-data

          mountPath: /var/lib/mysql

      volumes:

        - name: localtime

          hostPath:

            path: /usr/share/zoneinfo/Asia/Shanghai

        - name: mysql-data

          nfs:

            path: /data/nfs/db/pv100d001/

            server: 192.168.155.130

---

# https://kubernetes.io/docs/concepts/services-networking/service/

apiVersion: v1

kind: Service

metadata:

  name: mysql001

  namespace: default

  labels:

    app: mysql001

spec:

  selector:

    app: mysql001

  type: NodePort

  ports:

  - name: mysql001

    protocol: TCP

    port: 3306

    targetPort: 3306

    nodePort: 23306

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值