[英]Kubernetes deployment status in Jenkins
我正在編寫一個 Jenkins Global 管道庫,在那里我有一個階段可以將我的 docker 映像部署到 K8s 集群。 因此,在 CI 過程中構建我的 docker 鏡像后,我將鏡像提升(部署)到多個環境(按順序從低到高)。 所以,要在運行后獲得正確的部署狀態
kubectl apply -f Application-k8s-file.yaml
我在 shell 步驟中使用了以下命令。
kubectl rollout status deployment deployment_name
如果我的部署沒有錯誤但如果我的部署有一些錯誤(可能是一些代碼錯誤,應用程序沒有啟動)那么這個命令kubectl rollout status deployment <deployment name>
無限運行(因為 k8s 一次又一次地重試重新部署)並且我的 Jenkins 作業無限運行(直到作業超時)。
因此,為了找到一個 hack,我嘗試了一種邏輯,將超時置於此命令上,計算如下:
超時 =(pod 數 * 活性探測時間 + pod 數 * 10)秒
不確定這個計算是否正確。
我的代碼片段看起來像這樣
sh(returnStdout: true,script:"#!/bin/sh +e\n timeout --preserve-status ${timeout_value} kubectl rollout status deployment ${deploymentName} --kubeconfig='/opt/kubernetes-secrets/${env}/kubeconfig' 2>tmpfile; echo \$? > tmpfile1")
def readThisFile = readFile "tmpfile1.txt"
def var=readThisFile.toInteger()
if(var==0)
{
echo "deployment successful"
}
else{"do something else"}
這最初效果很好,但后來我發現 k8s“kubectl rollout status deployment”命令不會給出退出代碼 0,直到所有 pod 都被安排好並且舊的 pod 完全終止,這有時需要時間。
我基本上想要的是一個最小的計算超時值。
我的 K8s 文件有這樣的參數:
spec:
minReadySeconds: 30
livenessProbe:
httpGet:
path: /ping
port: 80
initialDelaySeconds: 45
periodSeconds: 5
timeoutSeconds: 60
name: test-dummyservice
ports:
- containerPort: 80
readinessProbe:
httpGet:
path: /health
port: 80
initialDelaySeconds: 60
periodSeconds: 120
timeoutSeconds: 60
我在 K8s 文檔中沒有找到任何與此相關的特定內容。 有人面臨同樣的挑戰嗎?
你應該看看progressDeadlineSeconds
。 一旦超過最后期限, rollout status
將退出。
kubectl rollout status deployment ng
Waiting for rollout to finish: 2 out of 7 new replicas have been updated...
error: deployment "ng" exceeded its progress deadline
https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#progress-deadline-seconds
您可以添加如下timeout
標志,這是文檔https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands
kubectl rollout status deployment deployment_name --watch --timeout=5m
如果您不想等待部署完成,則可以使用--watch=false
。
kubectl rollout status deployment deployment_name --watch=false
現在,您可以使用此命令檢查具有特定間隔的持續時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.