我们设置了一个包含 3 个主节点和 3 个工作节点的 kubernetes 集群。然后我们安装了 kubernetes-dashboard,但由于无法连接到 kubernetes(api-server),因此失败。它正在寻找 localhost:8080,但无法访问。在 busybox 中执行 env 时,我收到:
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_PORT=tcp://10.2.0.1:443
KUBERNETES_PORT_443_TCP=tcp://10.2.0.1:443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_ADDR=10.2.0.1
KUBERNETES_SERVICE_HOST=10.2.0.1
KUBERNETES_SERVICE_PORT=443
因此,我希望 kubernetes 可以在 10.2.0.1:443 上使用,但它没有回答。(连接被拒绝)
绑定地址为 0.0.0.0(由 SSL 身份验证保护),不安全绑定地址未设置(这意味着它绑定到 127.0.0.1)。在文档中,我可以看到不安全的端口(8080)暴露给集群网络。但我看不到它。如果我执行 kubectl get services,我会看到:
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.2.0.1 <none> 443/TCP 1d
我是否需要采取更多措施来在那里公开 8080 和/或使 kubernetes 在这些端口上可用?
答案1
当 Kubernetes 客户端未配置 apiserver 的特定位置时,默认行为是连接到localhost:8080
。通常,仪表板使用通过服务帐户添加到 pod 的“集群内凭据”连接到 apiserver。
答案2
这是使用 root 权限时的典型行为库布克和 /等/kubernetes/admin.conf不在/root/.kube/config(您需要重命名它)。
建议的方法是创建一个非 root 用户 ex(kubeadmin)并放置/etc/kubernetes/admin.conf在/home/of/kubeadmin/.kube/config
[root@k8s-1 ~]# kubectl get nodes
The connection to the server localhost:8080 was refused - did you specify the right host or port?
[root@k8s-1 ~]# mkdir /root/.kube
[root@k8s-1 ~]# cp /etc/kubernetes/admin.conf /root/.kube/config
[root@k8s-1 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-node1 Ready master 90d v1.12.3
k8s-node2 Ready <none> 90d v1.12.3
k8s-node3 Ready <none> 90d v1.12.3
k8s-node4 Ready <none> 6d1h v1.12.3