iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 29
0
IoT

從開源kubernetes雲端運算到kubeedge雲邊協同系列 第 29

Day 29 KubeEdge小專題: 使用Job實現定期備份功能

  • 分享至 

  • xImage
  •  

今天我們要使用Cron job作排程,搭配幾天前用python實現的備份程式。

容器化應用

將應用打包成映像檔。因為在樹梅派上執行的緣故,我的映像檔選擇使用arm版本的python3,需要在樹梅派上打包與運行。接著將必要的檔案放入,
esp8266.py對應到的是在Day 24中的python檔、backup.py對應到Day 25用來備份資料庫的程式碼,dht11.py則是透過GPIO取得dht11感測器資料並直接寫入資料庫的程式。

FROM arm32v7/python:3.7.9

COPY requirements.txt /cmd/requirements.txt
COPY esp8266.py /cmd/esp8266.py
COPY backup.py /cmd/backup.py
COPY dht11.py /cmd/dht11.py

RUN pip3 install -r /cmd/requirements.txt

其他環境

在一開始測試程式時,我使用virtulenv創建一個乾淨的開發環境,同時將使用到的安裝包匯出程一個檔案後,創建映像檔時便可以將它放入,安裝必要的python套件即可。

requirements.txt
certifi==2020.6.20
chardet==3.0.4
dnspython==2.0.0
idna==2.10
influxdb==5.3.0
msgpack==0.6.1
paho-mqtt==1.5.0
python-dateutil==2.8.1
python-etcd==0.4.5
pytz==2020.1
requests==2.24.0
six==1.15.0
urllib3==1.25.10
Adafruit-DHT==1.4.0

build完映像檔後便可以接著下一步。

Cron job佈署

Cron job是Kubernetes用來作定期排程的資源類型。在這裡我們利用定期排程的特性讓它定時執行備份程式。底下是我的YAML:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: databackup-lightsensor-test
spec:
  schedule: "0 */4 * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: backup
            image: alan0415/handler-arm:v3
            args:
            - python3
            - /cmd/backup.py
          nodeSelector:
            name: edge-1
          restartPolicy: OnFailure

在YAML中有幾項欄位:

  • spec.schedule
  • jobTemplate.spec.template.spec.containers
    這個地方就跟Deployment中的YAML差不多,同樣是給定容器相關的參數。image的部份就是我透過剛剛的Dockerfile build出來的映像檔;args則是運行容器的參數。

nodeSelector用來指定運行在哪個節點上、restartPolicy則是重新執行的政策,當它運行失敗時會自動重新執行。

# 查看排程
kubectl get cronjob


從Grafana的圖形中可以看到:

在邊緣端的感測器資料圖中,12.多以前的資料被截掉了(因為每4小時備份一次,所以會在每天的0、4、8、12、16、20點進行備份)

透過Grafana取得雲端的資料庫之後也可以看到,在邊緣端上面被截斷的資料有成功備份到雲端資料庫中。


上一篇
Day 28 KubeEdge小專題: NodeMCU設定
下一篇
Day 30 KubeEdge的使用心得與總結
系列文
從開源kubernetes雲端運算到kubeedge雲邊協同30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言