kubernetes v1.18.8安装问题

问题描述

我在生产环境中使用Kuberadm部署了Kubernetes集群v1.18.8,集群设置为3个Master和3个Worker节点,外部Kube-api负载均衡器,etcd驻留在Master节点中,在安装和所有Pod期间都没有发现任何问题在kube系统中正在运行。但是,当我在以下命令下运行时遇到错误时,我会收到错误

  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版中的预期行为吗?真的很感谢您提供任何帮助。

注意:内部通讯中没有端口被阻塞

解决方法

命令Kubectl get componentstatus在较新版本(1.19)中已弃用,并且已经存在许多问题。

这里要注意的重点是Kubernetes已禁用了不安全的服务 这些组件适用于较旧的版本(v1.18之前的版本)。因此,我看不到kube-controller和kube-scheduler在1051和1052端口上列出。要恢复此功能,您可以从清单文件中删除--port = 0(不建议这样做,因为这会将其度量标准暴露给整个互联网),您可以在其中查看:

/etc/kubernetes/manifests/

我从清单文件中注释掉--port = 0字段只是为了检查这一点,kubectl get componentstatus命令起作用。