iT邦幫忙

2021 iThome 鐵人賽

DAY 23
0
DevOps

從煉獄走到天堂的AWS DevOps 工具及應用開發大進擊系列 第 23

如果Pod應用程式出事情的話,還是做一下健康檢查

  • 分享至 

  • xImage
  •  

檢查後滿血復原

當電腦在運行應用程式時,突然遇到當機,勢必就需要重新啟動,相對來說,當Pod裡的Container在執行應用程式的時候,可能遇到記憶體不足,造成crash,服務就需要重啟,所以在Pod的描述檔裡,就需要增加檢查機制的功能,來確定Pod有持續的運作。

Pod有Health Check檢查程式如我們所期望的方式運作,而這項功能有兩種檢驗方式:livenessProbe和readinessProbe

livenessProbe: 依據判斷的方式,來決定Container是否要重啟。
readinessProbe: 依據判斷的方式,來決定Service功能是否要將流量access到Pod

  1. 執行命令的方式:根據Pod描述檔來執行撰寫的指令,若指令成功返回0,則代表Container可以正常運作,不會被重啟,如下:
livenessProbe:
      exec:
        command:
          - cat
          - /var/www/html/index.php
  1. httpGet:判斷Web Server的檔案是否存在,參考如下:
livenessProbe:
      httpGet:
        path: /index.php
        port: 80
  1. tcpSocket:kubelet會對指定的Port傳輸封包給Container來判定是否成功建立連結,參考如下:
livenessProbe:
      tcpSocket:
        port: 80

readinessProbe也是一樣的撰寫方式,只需要把livenessProbe做替換即可,以下會採用httpGet的方式,對livenessProbe進行demo

livenessProbe YAML定義

apiVersion: v1
kind: Pod
metadata:
  name: myappformoreliveness
  labels:
    name: myappformoreliveness
spec:
  containers:
  - name: myappformoreliveness
    image: httpd
    resources:
      limits:
        memory: "512Mi"
        cpu: "512m"
      requests:
        memory: "128Mi"
        cpu: "256m"
    ports:
      - containerPort: 80
    livenessProbe:
      httpGet:
        path: /index.php
        port: 80
      initialDelaySeconds: 5
      periodSeconds: 5
  nodeSelector:
    name:  morepods

initialDelaySeconds: 初始化時間。執行第一次檢測時,所需要的等待時間
periodSeconds: 週期性檢測

在httpd這個Container中Web Server沒有index.php這個檔案,所以會一直重啟
https://ithelp.ithome.com.tw/upload/images/20211007/20140172NXMpiKJyxv.png
https://ithelp.ithome.com.tw/upload/images/20211007/20140172scKDiXvs3x.png

readinessProbe的部分會放到明日與Service一起講,因為兩者需要一起實作,才可以更能理解


上一篇
Who Pod Who
下一篇
給客戶提供優質服務並驗證服務,讓客戶感覺有被重視
系列文
從煉獄走到天堂的AWS DevOps 工具及應用開發大進擊30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言