天天看點

k8s容器化資料庫方案(持久化存儲)

參考連結

https://blog.csdn.net/zhuchance/article/details/86468137

使用了nfs阿裡雲上的nfs服務做資料持久的,熟悉docker的朋友都知道docker适合無狀态的服務,而其實MySQL是需要持久化資料的,是以這裡使用了nfs(阿裡雲提供的),自己搭建也是可以的,或者是用hostpath也是可以的,為什麼推薦這倆,因為簡單,新手很容易上手,而越是簡單的東西越是好維護.

1. nfs

---
apiVersion: v1
kind: Service
metadata:
 name: mysql-youdomain-service
 labels:
  version: "1.0"
spec:
 type: NodePort
 ports:
  - port: 3306
    protocol: TCP
    targetPort: 3306
 selector:
  name: mysql-chezhibao
  version: "1.0"
 
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata: 
 name: mysql-youdomain
 labels: 
  name: mysql-youdomain
  version: "1.0"
spec: 
 replicas: 1
 strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
    type: RollingUpdate
 template: 
  metadata:
   labels: 
    name: mysql-youdomain
    version: "1.0"
  spec:
   volumes: 
   - name: sqldata
     nfs:
       path: /mysql/youdomain/data
       server: youNFS Service address
###這裡放mysql的邏輯備份檔案,注意檔案格式是.sql的
   - name: sqldump
     nfs:
       path: /mysql/youdomain/docker-entrypoint-initdb.d/
       server: youNFS Service address
###這裡是挂載mysql的配置檔案
   - name: conf
     nfs:
       path: /mysql/conf
       server: youNFS Service address
   containers: 
   - name: msql-youdomain
     image: mysql:5.7
     imagePullPolicy: IfNotPresent
     resources:
      requests:
        memory: 1Gi
     ports: 
     - containerPort: 3306
       protocol: TCP
     env: 
     - name: MYSQL_ROOT_PASSWORD
       value: "password"
     # - name: --lower-case-table-names
     #   value: "1"
     volumeMounts:
      - name: sqldata 
        mountPath: /var/lib/mysql/
      - name: sqldump
        mountPath: /docker-entrypoint-initdb.d/
      - name: conf
        mountPath: /etc/mysql/conf.d
           

2. Hostpath

https://blog.csdn.net/asdf57847225/article/details/78517172

kind: ReplicationController
metadata:
  name: my-mysql-v1
  namespace: default 
  labels: 
    name: my-mysql 
    version: v1 
spec: 
  replicas: 1 
  selector: 
    name: my-mysql 
    version: v1 
  template: 
    metadata: 
      labels: 
        name: my-mysql 
        version: v1 
    spec: 
      containers: 
        - image: f-registry:5000/mysql
          name: my-mysql-v1 
          ports: 
            - containerPort: 3306 
          env: 
            - name: MYSQL_ROOT_PASSWORD 
              value: abcd123 
          volumeMounts: 
            - name: mysql-storage 
              mountPath: /var/lib/mysql 
      volumes: 
        - name: mysql-storage 
          hostPath: 
            path: /data/mysql


           

繼續閱讀