亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當使用 k8s.io/client-go 庫更改 kubernetes 部署時

當使用 k8s.io/client-go 庫更改 kubernetes 部署時

Go
一只斗牛犬 2023-05-08 15:04:59
語境我正在編寫一個腳本,該腳本使用k8s.io/client-go庫(此處為 godocs)來操作部署。特別是,我想為集群中的每個 Deployment 添加一個標簽選擇器。部署標簽選擇器是不可變的。所以我的方法是:創建每個 Deployment 的副本,唯一的區別是名稱以“-temp”為后綴。這是為了最大限度地減少現有部署的停機時間。刪除原來的 Deployments。重新創建原始 Deployments,唯一的區別是多了一個標簽選擇器。刪除臨時部署。我不能只使用 client-go 庫按順序執行步驟 1-4,因為我只想在 API 服務器認為上一步已完成時繼續下一步。例如,在 API 服務器說原始 Deployments 已被刪除之前,我不想執行第 3 步。否則,我會得到同名 Deployment 已存在的錯誤。問題使用 client-go 庫檢測 Deployment 何時完成創建和刪除以及附加回調函數的最佳方法是什么?我遇到了以下包裹。手表告密者緩存/線人但是我不確定它們之間有什么區別以及使用哪一個。我在這里閱讀了watch和informer的示例。這是兩個 相關的SO 問題。更新watch似乎提供了一種較低級別的方式來監視資源的變化并接收有關變化的事件。似乎使用SharedInformerFactory創建 SharedInformer 是可行的方法。到目前為止我有import (    "encoding/json"    "errors"    "flag"    "fmt"    "io/ioutil"    "k8s.io/api/apps/v1"    metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"    "k8s.io/client-go/informers"    "k8s.io/client-go/kubernetes"    typedv1 "k8s.io/client-go/kubernetes/typed/apps/v1"    "k8s.io/client-go/tools/cache"    "path/filepath"    "strings"    // We need this import to load the GCP auth plugin which is required to authenticate against GKE clusters.    _ "k8s.io/client-go/plugin/pkg/client/auth/gcp"    "k8s.io/client-go/tools/clientcmd"    "log"    "os")
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號