Kubernetes 部署 Cronjob 备份数据库

部署configmap文件用于mysqldump备份数据库所使用的变量:

mysqldump.configmap.yaml 变量文件

apiVersion: v1
kind: ConfigMap
metadata:
  name: mysqldump
data:
  dbhost: DB host details
  db1: db name
  all_databases: "true"

部署mysqldump.secret.yaml

Opaque:使用base64编码存储信息,可以通过base64 --decode解码获得原始数据,因此安全性弱。
kubernetes.io/dockerconfigjson:用于存储docker registry的认证信息。
kubernetes.io/service-account-token:用于被 serviceaccount 引用。serviceaccout 创建时 Kubernetes 会默认创建对应的 secret。Pod 如果使用了 serviceaccount,对应的 secret 会自动挂载到 Pod 的 /run/secrets/kubernetes.io/serviceaccount 目录中。

apiVersion: v1
kind: Secret
metadata:
  name: mysqldump
type: Opaque
data:
  dbuser: user name in base64 encode          #注意使用base64加密工具对账户密码进行加密;
  dbpass: password in base64 encode

mysqldump.scheduledjob.all.yaml job文件;部署所有的数据库;

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: mysqldump
spec:
  schedule: "*/2 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: mysqldump
            image: manastri/mysqldump
            env:
              - name: ALL_DATABASES
                valueFrom:
                  configMapKeyRef:
                    name: mysqldump
                    key: all_databases
              - name: DB_HOST
                valueFrom:
                  configMapKeyRef:
                    name: mysqldump
                    key: dbhost
              - name: DB_USER
                valueFrom:
                  secretKeyRef:
                    name: mysqldump
                    key: dbuser
              - name: DB_PASS
                valueFrom:
                  secretKeyRef:
                    name: mysqldump
                    key: dbpass
            imagePullPolicy: Always
            volumeMounts:
              - mountPath: /mysqldump
                name: mysqldump
          volumes:
            - name: mysqldump
              hostPath:
                path: /home/core/mysqldump
          restartPolicy: OnFailure

部署job:

      kubectl create -f mysqldump/mysqldump.configmap.yaml
      kubectl create -f mysqldump/mysqldump.secret.yaml
      kubectl create -f mysqldump/mysqldump.scheduledjob.all.yaml

Kubernetes 部署 Cronjob 备份数据库_第1张图片

 注:MySql 8.0.11 换了新的身份验证插件(caching_sha2_password), 原来的身份验证插件为(mysql_native_password)。而客户端工具Navicat Premium12 中找不到新的身份验证插件(caching_sha2_password),对此,我们将mysql用户使用的 登录密码加密规则 还原成 mysql_native_password,即可登陆成功。

你可能感兴趣的:(kubernetes,数据库,kubernetes,database)