【问题标题】:kubernetes v1.18.8 installation issue [closed]kubernetes v1.18.8 安装问题[关闭]
【发布时间】: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


【解决方案1】:

命令Kubectl get componentstatus在较新的版本(1.19)中已被贬值,它已经有很多问题了。

这里要注意的要点是 Kubernetes 禁用了不安全的服务 这些组件适用于旧版本(至少从 v1.18 开始)。因此,我看不到 kube-controller 和 kube-scheduler 在 1051 和 1052 端口上列出。要恢复此功能,您可以从他们的清单文件中删除 --port=0(不推荐,因为这会将他们的指标暴露给整个互联网),您可以在里面看到:

/etc/kubernetes/manifests/

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

【讨论】:

    猜你喜欢
    • 2019-03-19
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    相关资源
    最近更新 更多