在我的工作站上,我可以列出吊舱,检查组件状态等。
[dude@bionic K8s]$ kubectl get componentstatuses
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
scheduler Healthy ok
etcd-2 Healthy {"health":"true"}
etcd-0 Healthy {"health":"true"}
etcd-1 Healthy {"health":"true"}
[dude@bionic K8s]$ kubectl get svc -A
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default kubernetes ClusterIP 10.32.0.1 443/TCP 41d
kube-system kube-dns ClusterIP 10.32.0.10 53/UDP,53/TCP,9153/TCP 49m
[dude@bionic K8s]$ kubectl get pod -n kube-system coredns-574fc576d6-4hbl4
NAME READY STATUS RESTARTS AGE
coredns-574fc576d6-4hbl4 0/1 CrashLoopBackOff 13 46m但是,当我想查看日志(调试上面的CrashLoop )时,我会得到一个证书错误:
[dude@bionic K8s]$ kubectl logs -n kube-system coredns-574fc576d6-4hbl4
plugin/kubernetes: Get "https://10.32.0.1:443/version?timeout=32s": x509: certificate is valid for 172.16.68.221, 172.16.68.222, 172.16.68.223, 172.16.68.69, 127.0.0.1, not 10.32.0.1为什么会这样呢?我的设置是一个在三个控制节点前面的haproxy。haproxy位于172.16.68.69上,配置在我的kubecon图中:
apiVersion: v1
clusters:
- cluster:
server: https://172.16.68.69:6443就像出于某种原因,“kubectl日志”决定以某种方式发现ClusterIP并直接使用它,而其他kubectl命令则使用正确配置的服务器。
发布于 2021-05-07 15:44:59
我解决了。问题是,我没有将10.32.0.1包含在kubernetes.pem证书中。我不认为我需要这样做,但我这样做了,大概是因为apiserver启动的连接不通过hadn,只有入站连接才会这样做。
我重新创建了kubernetes.pem和kubernetes-key.pem,其中包括集群IP作为kubernetes主机名,然后将这些证书分发给控制器上的/etc/etcd /var/lib/kubernetes,并重新启动kubernetes。现在一切都好:)
(这也解决了崩溃循环问题)
https://serverfault.com/questions/1062880
复制相似问题