# 重建K8s憑證後, 出現權限異常狀況 ###### tags: `GCP` ## 更新憑證後的失敗情境 背景:Kubernetes憑證過期,重新頒發憑證後,使用kubeadm alpha certs check-expiration命令檢視憑證有效時間,相關憑證都已重新核發。 但在Kubernetes叢集master節點上執行kubectl指令報如下錯誤: ```bash= error: You must be logged in to the server (Unauthorized) ``` --- 原因:這是權限問題,設定認證的檔案為/etc/kubernetes/admin.conf,颁发证书时/etc/kubernetes/admin.conf文件重新生成,但是$HOME/.kube/config並沒有被替換。 解決方案: ```bash= sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config ``` --- 解釋:當我們使用kubeadm成功引導啟動(init)一個Kubernetes叢集的控制平面後,kubeadm會在init的輸出結果中給予我們下面這樣的「指示」: ```bash= `... ... Your Kubernetes master has initialized successfully! To start using your cluster, you need to run the following as a regular user: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ... ... ``` kubeadm init在結尾處輸出的這些資訊是在告知我們如何設定kubeconfig檔。 依照上述指令配置後,master節點上的kubectl就可以直接使用$HOME/.kube/config的資訊存取k8s cluster了。 並且,透過這種設定方式,kubectl也擁有了整個叢集的管理員(root)權限。 ## 其他狀況 > 非必要 如果上述都更新完畢+未更新ssh憑證的情況,登入後還出現以下訊息 ```bash= Permission denied (publickey,password). ``` 可能也需要作重置.ssh憑證目錄權限更新 ```bash= --可查看ssh log cat /var/log/auth.log cat /var/log/secure --更新目錄權限 chmod 600 /home/{用戶}/.ssh/authorized_keys chmod 700 /home/{用戶}/.ssh ``` --- 參考: https://blog.csdn.net/luanpeng825485697/article/details/83955721