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


猜你喜欢

转载自blog.csdn.net/sun007700/article/details/89510502