【问题标题】:Kubernetes dashboard: Get https://10.96.0.1:443/version: dial tcp 10.96.0.1:443: i/o timeoutKubernetes 仪表板:获取 https://10.96.0.1:443/version:拨打 tcp 10.96.0.1:443:i/o 超时
【发布时间】:2019-08-21 06:52:37
【问题描述】:

我在 vagrant (1.14.0) 中有一个 Kubernetes 集群并安装了 calico。

我已经安装了 kubernetes 仪表板。当我使用kubectl proxy 访问仪表板时:

Error: 'dial tcp 192.168.1.4:8443: connect: connection refused'
Trying to reach: 'https://192.168.1.4:8443/'

这是我的 pod(仪表板经常重启):

$ kubectl get pods -n kube-system
NAME                                       READY   STATUS    RESTARTS   AGE
calico-etcd-cj928                          1/1     Running   0          11m
calico-node-4fnb6                          1/1     Running   0          18m
calico-node-qjv7t                          1/1     Running   0          20m
calico-policy-controller-b9b6749c6-29c44   1/1     Running   1          11m
coredns-fb8b8dccf-jjbhk                    1/1     Running   0          20m
coredns-fb8b8dccf-jrc2l                    1/1     Running   0          20m
etcd-k8s-master                            1/1     Running   0          19m
kube-apiserver-k8s-master                  1/1     Running   0          19m
kube-controller-manager-k8s-master         1/1     Running   0          19m
kube-proxy-8mrrr                           1/1     Running   0          18m
kube-proxy-cdsr9                           1/1     Running   0          20m
kube-scheduler-k8s-master                  1/1     Running   0          19m
kubernetes-dashboard-5f7b999d65-nnztw      1/1     Running   3          2m11s

dasbhoard pod 的日志:

2019/03/30 14:36:21 Error while initializing connection to Kubernetes apiserver. This most likely means that the cluster is misconfigured (e.g., it has invalid apiserver certificates or service account's configuration) or the --apiserver-host param points to a server that does not exist. Reason: Get https://10.96.0.1:443/version: dial tcp 10.96.0.1:443: i/o timeout
Refer to our FAQ and wiki pages for more information: https://github.com/kubernetes/dashboard/wiki/FAQ

我可以从主节点和节点远程登录到 10.96.0.1:443。

什么配置错误?集群的其余部分似乎工作正常,虽然我在 kubelet 中看到了这个日志:

failed to load Kubelet config file /var/lib/kubelet/config.yaml, error failed to read kubelet config file "/var/lib/kubelet/config.yaml"

kubelet 似乎在 master 上运行良好。 集群是使用以下命令创建的:

kubeadm init --apiserver-advertise-address="192.168.50.10" --apiserver-cert-extra-sans="192.168.50.10" --node-name k8s-master --pod-network-cidr=192.168.0.0/16

【问题讨论】:

    标签: kubernetes kubelet kubernetes-dashboard calico


    【解决方案1】:

    你应该在 /etc/hosts 中定义你的主机名

    #hostname
    YOUR_HOSTNAME
    #nano /etc/hosts
    YOUR_IP HOSTNAME
    

    如果您在 master 中设置了主机名但它不起作用,请尝试

    # systemctl stop kubelet
    # systemctl stop docker
    # iptables --flush
    # iptables -tnat --flush
    # systemctl start kubelet
    # systemctl start docker
    

    您应该在加入工作节点之前安装仪表板

    禁用防火墙

    你可以检查你的空闲内存。

    【讨论】:

    • 添加主机名有效,你能解释为什么我必须这样做吗?
    • 在 kubernetes 中,所有内容都由名称定义,因为当一个 pod 被销毁时,它会获得另一个 IP,因此我们应该定义我们的主机名,并且 cordns 只使用主机名而不是 IP 如果你之前得到你的 cordns 日志,你可以看到一个错误
    • 我仍然遇到这个问题。除了我已经加入了工作节点之外,整个列表都很好。知道如何在连接工作节点的情况下设置仪表板吗?
    【解决方案2】:

    从 kubeadm init 命令中排除 -- node-name 参数

    试试这个命令

    kubeadm init --apiserver-advertise-address=$(hostname -i) --apiserver-cert-extra-sans="192.168.50.10" --pod-network-cidr=192.168.0.0/16
    

    【讨论】:

    • 这没有帮助:/
    【解决方案3】:

    对我来说,问题是我需要创建一个允许 Egress 流量到 kubernetes API 的 NetworkPolicy

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-11
      • 1970-01-01
      • 2021-11-22
      • 2018-09-12
      • 1970-01-01
      • 2021-09-24
      • 1970-01-01
      相关资源
      最近更新 更多