kubectl ログエラー: サーバーにログインする必要があります (サーバーがクライアントに資格情報の提供を要求しました)

kubectl ログエラー: サーバーにログインする必要があります (サーバーがクライアントに資格情報の提供を要求しました)

私の k8s バージョン v1.17.13
証明書の有効期限が今日切れたので、 すべてのマスター サーバーで
kubeadm alpha certs renew all
systemctl restart kubelet を実行しました。 実行したすべての kubectl コマンドは正常に動作しました。kubectl get nodes、kubectl scale、kubectl describe などです。 ただし、kubectl logs を実行すると、次のエラーが発生します 。サーバーにログインしている必要があります (サーバーがクライアントに資格情報の提供を要求しました)。




理由が分かりますか...他の kubectl コマンドを実行できるので、~/.kube/config は正常だと思います。強制的に再起動するために kube-apiserver を削除しましたが、それでも同じ問題が起こります。

この問題について助けてください。よろしくお願いします。

答え1

見回していると...ワーカーノードで次の
メッセージが表示されました エラーのため、リクエストを認証できません: x509: 証明書の有効期限が切れているか、まだ有効ではありません

さらにトラブルシューティングを行った結果、3つのマスターのうち2つだけがこのエラーを引き起こしていました
。kubectlはエラーをログに記録します: サーバーにログインしている必要があります (サーバーがクライアントに資格情報の提供を求めています)

多くのリソースをチェックした後、問題の原因が本当にわからなかったので、障害が発生した 2 つのマスターを 1 つずつ再起動することにしました。これで問題は解決しました。kube-system 内の一部のポッドを再起動する必要があったようです。

さらに、すべてのワーカーノードで kubelet を再起動しましたが、効果があるかどうかはわかりません。

注意:https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/#manual-certificate-renewalマスターの再起動については言及されていない

最後に、なぜ証明書の更新がスムーズにいかなかったのかはわかりません。この投稿で説明されているkubectlログの問題に遭遇する前に、最初のマスターでこのエラーに遭遇しました(「bootstrap-kubelet.confが存在しません」という問題があり、kubeletを再起動できませんでした)。そのため、次の修正に従う必要がありました。https://stackoverflow.com/questions/56320930/renew-kubernetes-pki-after-expired

関連情報