【发布时间】:2020-09-05 18:35:18
【问题描述】:
我已经在生产环境中部署了带有 kubeadm 的 Kubernetes 集群 v1.18.8。集群设置是 3 个 Master 和 3 个 Worker 节点,带有外部 Kube-api 负载均衡器,etcd 驻留在 Master 节点中。在安装和所有 pod 期间没有发现任何问题在 kube-system 中正在运行。但是,当我在以下命令下运行时出现错误时,我得到错误:
kubectl get cs
NAME STATUS MESSAGE ERROR
controller-manager Unhealthy Get http://127.0.0.1:10252/healthz: dial tcp 127.0.0.1:10252: connect: connection refused
scheduler Unhealthy Get http://127.0.0.1:10251/healthz: dial tcp 127.0.0.1:10251: connect: connection refused
etcd-0 Healthy {"health":"true"}
在进行故障排除时,我发现端口没有被监听。
sudo netstat -tlpn |grep kube
tcp 0 0 127.0.0.1:10248 0.0.0.0:* LISTEN 132584/kubelet
tcp 0 0 127.0.0.1:10249 0.0.0.0:* LISTEN 133300/kube-proxy
tcp 0 0 127.0.0.1:10257 0.0.0.0:* LISTEN 197705/kube-control
tcp 0 0 127.0.0.1:10259 0.0.0.0:* LISTEN 213741/kube-schedul
tcp6 0 0 :::10250 :::* LISTEN 132584/kubelet
tcp6 0 0 :::6443 :::* LISTEN 132941/kube-apiserv
tcp6 0 0 :::10256 :::* LISTEN 133300/kube-proxy
如果我在开发环境 kubernetes 集群(v1.17)上检查相同的内容,我认为没有问题。
kubectl get cs
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
scheduler Healthy ok
etcd-0 Healthy {"health":"true"}
sudo netstat -tlpn |grep 102
tcp 0 0 127.0.0.1:10257 0.0.0.0:* LISTEN 2141/kube-controlle
tcp 0 0 127.0.0.1:10259 0.0.0.0:* LISTEN 2209/kube-scheduler
tcp 0 0 127.0.0.1:10248 0.0.0.0:* LISTEN 1230/kubelet
tcp 0 0 127.0.0.1:10249 0.0.0.0:* LISTEN 2668/kube-proxy
tcp6 0 0 :::10256 :::* LISTEN 2668/kube-proxy
tcp6 0 0 :::10250 :::* LISTEN 1230/kubelet
tcp6 0 0 :::10251 :::* LISTEN 2209/kube-scheduler
tcp6 0 0 :::10252 :::* LISTEN 2141/kube-controlle
在新创建的生产集群上,我部署了 nginx 和另一个应用程序,只是为了测试 kubernetes 组件的行为,没有看到任何错误。 这是版本 v1.18 中的预期行为吗?真的很感激这方面的任何帮助。
注意:内部通信中没有端口被阻塞
【问题讨论】:
-
你使用什么作为客户端来创建 kubernetes 集群?
-
我正在使用 Kubeadm(v1.18.8) 在本地虚拟机上部署集群。
-
可能问题出在 Kubeadm 版本上。尝试使用其他版本或使用不同的客户端,例如 kops,就我而言,kops 对我来说非常完美。
-
如果有变化那么应该在 kubernetes 文档中提到,你正在开发什么版本?
-
就我而言,我使用的是 ubuntu,kops 版本 1.17,kubernetes v1.17.8。
标签: kubernetes kubernetes-pod kubeadm kubernetes-cluster