Kubernetes 入門:運行不同類型的 Job

本文以 Mongo 數(shù)據(jù)備份為例,演示在 Kubernetes 集群中運行 Job,以及相關命令和概念。

部署 MongoDB

1、創(chuàng)建 Mongo 部署文件 mongo.yaml

apiVersion: v1
kind: Service
metadata:
  name: mongo
spec:
  selector:
    app: mongo
  ports:
    - port: 27017
  type: NodePort
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mongo-pv-claim
  labels:
    app: mongo
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongo
  labels:
    app: mongo
spec:
  replicas: 1
  template:
    metadata:
      name: mongo
      labels:
        app: mongo
    spec:
      containers:
      - name: mongo
        image: registry.docker-cn.com/library/mongo
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 27017
          name: mongo
        volumeMounts:
        - name: mongo-persistent-storage
          mountPath: /data/db
      restartPolicy: Always
      volumes:
        - name: mongo-persistent-storage
          persistentVolumeClaim:
            claimName: mongo-pv-claim
  selector:
    matchLabels:
      app: mongo

2、部署 Mongo

kubectl create -f mongo.yaml

3、在 Dashboard 中查看 Mongo 服務相關信息,訪問 http://192.168.99.100:30000 ,一般為 Minikube VM IP(192.168.99.100) + Port (30000)

Mongo 持久化卷
Mongo Pod

部署 MongoDB 數(shù)據(jù)備份任務

1、創(chuàng)建備份任務的配置文件 backup.yaml

apiVersion: batch/v1
kind: Job
metadata:
  name: mongo-backup
spec:
  template:
    spec:
      containers:
      - name: mongo-backup
        image: registry.docker-cn.com/library/busybox
        command: ["tar", "cvf", "/backup/backup.tar", "/data/db"]
        volumeMounts:
          - mountPath: /backup
            name: mongo-backup-persistent-storage
          - mountPath: /data/db
            name: mongo-persistent-storage
      restartPolicy: Never
      volumes:
        - name: mongo-backup-persistent-storage
          hostPath:
            path: /tmp/mongo
        - name: mongo-persistent-storage
          persistentVolumeClaim:
            claimName: mongo-pv-claim
  backoffLimit: 4

其中用到了 2 個數(shù)據(jù)卷,mongo-backup-persistent-storage 綁定主機的 /tmp/mongo 路徑, mongo-persistent-storage 對應 MongoDB 的數(shù)據(jù)卷,并同時掛載到 busybox 容器,這樣就能將 MongoDB 的數(shù)據(jù)備份到 /tmp/mongo 目錄下。

2、啟動備份 Job

kubectl create -f backup.yaml

3、查看 Job 執(zhí)行情況

4、確認備份文件存在,在 Minikube VM 中查看 /tmp/mongo 文件

移除備份任務

直接在 Dashboard 面板上刪除任務,包括任務和容器組。

創(chuàng)建 Cron 任務

1、每分鐘備份一次 MongoDB 數(shù)據(jù) backup-cron.yaml

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: mongo-backup-cron
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: mongo-backup
            image: registry.docker-cn.com/library/busybox
            command:
              - /bin/sh
              - -c
              - tar cvf /backup/mongo-data.tar /data/db
            volumeMounts:
              - mountPath: /backup
                name: mongo-backup-persistent-storage
              - mountPath: /data/db
                name: mongo-persistent-storage
          restartPolicy: Never
          volumes:
            - name: mongo-backup-persistent-storage
              hostPath:
                path: /tmp/mongo
            - name: mongo-persistent-storage
              persistentVolumeClaim:
                claimName: mongo-pv-claim

2、啟動 Cron 任務

kubectl create -f backup-cron.yaml

3、查看任務調度

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容