簡體   English   中英

使用與 k8s python 客戶端等效的 kubectl rollout restart

[英]Using kubectl rollout restart equivalent with k8s python client

我正在嘗試開發 AWS lambda 以使用 python 客戶端進行rollout restart deployment 我在 github 存儲庫或參考資料中找不到任何實現。 kubectl rollout restart中使用 -v 並沒有給我足夠的提示來繼續開發。

無論如何,它與 python 客戶端更相關:

https://github.com/kubernetes-client/python

有任何想法嗎? 也許我可能會錯過一些東西

python 客戶端直接與 Kubernetes API 交互。 類似於kubectl所做的。 但是, kubectl添加了一些實用命令,其中包含 Kubernetes API 中未包含的邏輯。 Rollout 是這些實用程序之一。

在這種情況下,這意味着您有兩種方法。 您可以對 API 調用kubectl rollout restart進行反向工程。 專業提示:使用 go,您實際上可以導入內部 Kubectl 行為和庫,這非常容易。 所以考慮用 golang 編寫你的 lambda。

或者,您可以讓您的 Lambda 調用 Kubectl 二進制文件(使用 python 中的 process exec 庫)。 但是,這確實意味着您需要以某種方式將二進制文件包含在 lambda 中(通過將其與 lambda 一起上傳或構建包含 k 的kubectl層)。

@Andre Pires,可以這樣完成:

data := fmt.Sprintf(`{"spec":{"template":{"metadata":{"annotations":{"kubectl.kubernetes.io/restartedAt":"%s"}}}},"strategy":{"type":"RollingUpdate","rollingUpdate":{"maxUnavailable":"%s","maxSurge": "%s"}}}`, time.Now().String(), "25%", "25%")
newDeployment, err := clientImpl.ClientSet.AppsV1().Deployments(item.Pod.Namespace).Patch(context.Background(), deployment.Name, types.StrategicMergePatchType, []byte(data), metav1.PatchOptions{FieldManager: "kubectl-rollout"})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM