開篇
? 引言:
- 磨刀不誤砍柴工
- 工欲善其事必先利其器
K8S 叢集規模,有的公司傾向於少量大規模 K8S 叢集,也有的公司會傾向於大量小規模的 K8S 叢集。
如果是第二種情況,是否有一個簡單的 kubectl
命令來獲取一個 kubeconfig 檔案並將其合併到 ~/.kube/config
檔案作為一個額外的上 context?
? 提示:
Kubeconfig 檔案會包含 Kubernetes 叢集的以下資訊:
- 叢集
- 上下文(context)
- 使用者
有以下解決方案:
解決方案
方案一:KUBECONFIG
環境變數指向多個檔案
透過在 KUBECONFIG 環境變數中指定多個檔案,可以臨時將 KUBECONFIG 檔案組合在一起,並在 kubectl
中使用。
如下,那麼是在 kubeconfig 是在記憶體中做的合併:
export KUBECONFIG=~/.kube/config:~/anotherconfig
方案二:flatten
直接如下:
export KUBECONFIG=~/.kube/config:~/anotherconfig
kubectl config view --flatten
如果需要,還可以管道輸出到另外一個新檔案。
--flatten
:將生成的 kubeconfig 檔案扁平化為自包含的輸出(用於建立可移植的
kubeconfig 檔案)
方案三:kubectl
外掛 konfig
kubectl
有個 krew
外掛包管理器,可以透過 krew
安裝 konfig
實用外掛來管理 kubeconfig。
實用工具:krew
什麼是 krew
:
Krew 是 kubectl
命令列工具的外掛管理器。
Krew 可以幫助你:
- 發現 kubectl 外掛
- 將它們安裝到您的機器上
- 並保持安裝的外掛是最新的
目前在 krew
上有 164個 kubectl
外掛。
Krew 可以在所有主要平臺上工作,比如 macOS、Linux和Windows。
Krew 還可以幫助 kubectl
外掛開發者: 你可以很容易地在多個平臺上打包和釋出你的外掛,並且可以透過 krew
集中的外掛庫來發現它們。
安裝
Krew 本身是一款透過 Krew 安裝和更新的 kubectl 外掛(是的,krew 自託管)。
Bash 或 ZSH shell 安裝:
-
如果需要用代理,請先配置 proxy,操作指南:Advanced Configuration · Krew
-
確認已安裝
git
-
下載並安裝
krew
:( set -x; cd "$(mktemp -d)" && OS="$(uname | tr '[:upper:]' '[:lower:]')" && ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" && KREW="krew-${OS}_${ARCH}" && curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" && tar zxvf "${KREW}.tar.gz" && ./"${KREW}" install krew )
-
新增
krew
到PATH
:export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
並重啟 shell -
執行
kubectl krew
來驗證 -
要看完整的外掛列表,執行:
kubectl krew search
實用工具:konfig
安裝:kubectl krew install konfig
krew
外掛 konfig
可以幫助你管理 ~/.kube/config
。
使用 konfig
外掛的語法如下:
kubectl konfig import -s new.yaml
總結
今天分享了 2 個實用外掛:
- krew:
kubectl
外掛管理器 - konfig:kubeconfig 配置管理外掛
???
三人行, 必有我師; 知識共享, 天下為公. 本文由東風微鳴技術部落格 EWhisper.cn 編寫.