為什麼我無法使用 kubectl ?
由於更新到 GKE 1.26 版本後,為了要區分使用開源的 Kubernetes 版本或是受託管的版本(例如:GKE on GCP, EKS on AWS),原先可直接使用的 kubectl 將會在 v1.26 GKE 版本後被要求需要獲得授權,若您在沒有授權的情況下,會出現以下錯誤 [1]。
手把手操作
一、需要下載的套件
kubeadm, kubectl, kubelet, google-cloud-sdk-gke-gcloud-auth-plugin
二、步驟(分為 Debian / Ubuntu 兩版本)
Debian 使用者相對簡單許多:
sudo apt-get update && sudo apt-get install kubeadm kubectl kubelet \ google-cloud-sdk-gke-gcloud-auth-plugin
Ubuntu 使用時,若想直接下載,會出現 [2,3] 的錯誤,以下步驟可解決此問題,提供參考:
1. 更新 apt 版本:sudo apt-get update
2. 將 kubernetes.list 寫入,原先的 source.list 中缺少 kubernetes list:
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
3. 可看到缺少的 key ID (BxxxxxxD13xxxxxx):sudo apt-get update
4. 從 keyserver 獲取該 key:sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BxxxxxxD13xxxxxx
5. 下載 kubeadm, kubectl, & kubelet:sudo apt-get update && sudo apt-get install kubectl
6. 如同步驟二所述,source.list中也不存在 google-cloud-sdk.list,需自行建立:
echo "deb https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
7. 從packages.cloud.google.com 獲取 key:
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -
8. 下載套件:sudo apt-get update && sudo apt-get install
google-cloud-sdk-gke-gcloud-auth-plugin
參考文件
[1] error: The gcp auth plugin has been removed.
Please use the "gke-gcloud-auth-plugin" kubectl/client-go credential plugin instead.
Check the article for more details https://cloud.google.com/blog/products/containers-kubernetes/kubectl-auth-changes-in-gke
[2] E: Unable to locate package google-cloud-sdk-gke-gcloud-auth-plugin
[3] E: Unable to locate package kubectl