【GCP常見問題】更新到了 GKE 1.26 後無法使用 kubectl?

為什麼我無法使用 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

訂閱 CloudMile 電子報

所有 CloudMile 最新消息、產品動態、活動資訊和特別優惠,立即掌握。