iT邦幫忙

2026 iThome 鐵人賽

DAY 19
0

第十九篇:Kubernetes Pod 探針

這次建立獨立的 probe-demo Pod。它啟動時會建立一個就緒標記檔,再執行 Nginx。就緒探針檢查標記檔是否存在,存活探針則檢查網站首頁。兩者使用不同條件,可以避免實驗就緒失敗時,同時誤觸容器重新啟動。

把設定存成 probe-demo.yaml 並套用,等待 Pod 就緒後觀察狀態。接著刪除容器裡的標記檔,等待數次探測週期,就緒欄位應從一個就緒容器變成零個,但容器仍持續執行,重新啟動次數通常不會因此增加。

重新建立標記檔後,就緒探針會再次成功,Pod 恢復可接收一般服務流量的狀態。本例沒有另外建立 Service,所以主要驗證 Pod 的就緒變化;若要測試路由結果,還必須配置選取這個 Pod 的服務,不能把狀態變化當成完整網路測試。

這個練習刻意使用簡單檔案模擬應用狀態,正式程式應提供有意義的健康判斷。探測頻率、逾時與失敗門檻都需要配合啟動時間及負載,設定得太急可能放大短暫波動。觀察完成後可保留設定檔,作為日後調整探針的起點。

probe-demo.yaml

apiVersion: v1
kind: Pod
metadata:
  name: probe-demo
spec:
  containers:
    - name: nginx
      image: nginx:1.28
      command: ["/bin/sh", "-c"]
      args:
        - "touch /tmp/ready; exec nginx -g 'daemon off;'"
      readinessProbe:
        exec:
          command: ["test", "-f", "/tmp/ready"]
        periodSeconds: 3
        failureThreshold: 1
      livenessProbe:
        httpGet:
          path: /
          port: 80
        initialDelaySeconds: 10
        periodSeconds: 10

建立並觀察 Pod

kubectl apply -f probe-demo.yaml
kubectl wait --for=condition=Ready pod/probe-demo --timeout=120s
kubectl exec probe-demo -- rm /tmp/ready
kubectl get pod probe-demo -w

看到 0/1 後按 Ctrl+C 停止觀察,再執行:

kubectl exec probe-demo -- touch /tmp/ready
kubectl wait --for=condition=Ready pod/probe-demo --timeout=60s
kubectl get pod probe-demo

參考

Kubernetes:探針行為


上一篇
DAY 18
系列文
我的 Pod 又掛了:30 天學會 Kubernetes 共 19 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言