基础设施没有变化如果我执行任何 kubectl 命令,即:
kubectl get nodes
Run Code Online (Sandbox Code Playgroud)
我有错误
You must be logged in to the server (Unauthorized)
Run Code Online (Sandbox Code Playgroud)
而且我有工作的 kubernetes 集群并且没有对其进行任何更改......任何想法如何调试它?kubectl 没有 -vv od 调试标志来提供更多信息。
如果我尝试
kubectl version
Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.0",
(...)
error: You must be logged in to the server (the server has asked for the client to provide credentials)
Run Code Online (Sandbox Code Playgroud)
我今天遇到了类似的问题,上述评论帮助我解决了这个问题。我在我的场景中添加了更多详细信息,因为这可能对具有类似设置的人有所帮助。
我有一个单独的用户用于连接到我的 k8s 集群(这是 EC2 实例中的普通集群)。我通过添加 ClusterRoleBindings 创建了具有有限访问权限的用户 arunlal。
如果在运行 API 到集群时出现以下错误(在我的例子中是 Kubectl):
error: You must be logged in to the server (Unauthorized)
Run Code Online (Sandbox Code Playgroud)
请按照以下顺序进行操作。
- 首先检查配置文件中使用的证书(本地客户端)
我在本地系统上有一个单独的配置,因为主配置包含有关其他 k8s 和 okd 集群凭据的详细信息。因此,我在笔记本电脑上创建了第二个配置(/Users/arunlal/.kube/config_two)。在这种情况下,我有以下别名:
alias kctl="kubectl --kubeconfig=/Users/arunlal/.kube/config_two"
Run Code Online (Sandbox Code Playgroud)
- 从该文件中,您将获得我们正在使用的证书。
[arunlal.as@crybit.com ~] cat /Users/arunlal/.kube/config_two| grep -A 5 个用户
用户:
- 姓名:阿伦拉尔
用户:
客户端证书:/Users/arunlal/.arunlal-keys/arunlal.crt
客户端密钥:/Users/arunlal/.arunlal-keys/arunlal.key
- 在客户端配置中获取证书后,您可以使用 openssl 命令检查有效性。
[arunlal.as@crybit.com ~] openssl x509 -noout -dates -in /Users/arunlal/.arunlal-keys/arunlal.crt
notBefore=2021 年 6 月 22 日 23:43:22 GMT
notAfter=2021 年 9 月 30 日 23:43:22 GMT
- 验证有效期
在创建用户时,我度过了 5 天,这就是问题所在。我如何创建用户?
openssl genrsa -out arunlal.key 2048
openssl req -new -key arunlal.key -out arunlal.csr -subj "/CN=arunlal/O=crybit"
openssl x509 -req -in arunlal.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out arunlal.crt -days 5
kubectl config set-credentials arunlal --client-certificate=/root/arunlal-keys/arunlal.crt --client-key=/root/arunlal-keys/arunlal.key
Run Code Online (Sandbox Code Playgroud)
- 为了解决这个问题,我重新创建了更多天数的证书
openssl x509 -req -in arunlal.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out arunlal.crt -days 100
- 我们需要从 k8s 集群运行。
- 在本地替换了证书。
使用新证书修改了 /Users/arunlal/.arunlal-keys/arunlal.crt。
希望这会对某人有所帮助。谢谢!
〜阿伦
更新证书后我得到了同样的结果:
kubeadm alpha certs renew all
然后我不得不跟随
$ cd ~/.kube
# Archive the old config file containing the out of date certificates
$ mv config conf.archive.2021
# Copy the new configuration file created using kubeadm
$ cp /etc/kubernetes/admin.conf config
# apply permissions to your current admin user and group
$ sudo chown $(id -u):$(id -g) config
Run Code Online (Sandbox Code Playgroud)
库伯内特版本:1.19
小智 7
在我的情况下,问题是在更新 kubernates 证书后开始的,这导致现有的~/.kube/config密钥和证书值过时。
解决方案是用更新后的同名文件中的值替换文件中的值 client-certificate-data和client-key-data文件。~/.kube/config/etc/kubernetes/kubelet.conf
| 归档时间: |
|
| 查看次数: |
24100 次 |
| 最近记录: |