无法从任何其他主机连接到Kubernetes API

bksxznpy  于 2023-01-25  发布在  Kubernetes
关注(0)|答案(2)|浏览(92)

我在两台Ubuntu 16.04.2 LTS机器上安装了Kubernetes集群(1个主节点+1个节点)。
从主机,我可以轻松访问API,例如使用curl -v -k https://<IP>:6443/api
从任何其他主机我只是得到一个超时错误。扫描端口,端口6443看起来关闭。
问题是,我需要使用Kubernetes集成来配置GitLab CI。

  • API URL:https://<IP>:6443/api
  • 我从Kubernetes那里得到的令牌
  • 我从Kubernetes那里拿到的证书

当我尝试配置集群以上传容器时,我得到了以下信息:

$ kubectl config set-cluster my-cluster --server="$KUBE_URL" --certificate-authority="$KUBE_CA_PEM_FILE"
Cluster "my-cluster" set.
$ kubectl config set-credentials admin --token="$KUBE_TOKEN"
User "admin" set.
$ kubectl config set-context default-context --cluster=my-cluster --user=admin
Context "default-context" set.
$ kubectl config use-context default-context
Switched to context "default-context".
$ kubectl get cs
Unable to connect to the server: dial tcp <IP>:6443: i/o timeout

我做错了什么?提示:我是Kubernetes的新手,但我仍然想连接一个私有的GitLab,一个私有的Docker注册表和一个私有的Kubernetes集群。

补充资料

我可以通过kubeadm join --token TOKEN <IP>:6443 --discovery-token-ca-cert-hash HASH将一个节点连接到这个主节点,没有任何问题。
netstat -nplt给出:

tcp        0      0 127.0.0.1:10248         0.0.0.0:*               LISTEN      1242/kubelet
tcp        0      0 127.0.0.1:10249         0.0.0.0:*               LISTEN      2225/kube-proxy
tcp        0      0 127.0.0.1:10251         0.0.0.0:*               LISTEN      1978/kube-scheduler
tcp        0      0 127.0.0.1:2379          0.0.0.0:*               LISTEN      1887/etcd
tcp        0      0 127.0.0.1:10252         0.0.0.0:*               LISTEN      1926/kube-controlle
tcp        0      0 127.0.0.1:2380          0.0.0.0:*               LISTEN      1887/etcd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1289/sshd
tcp6       0      0 :::10250                :::*                    LISTEN      1242/kubelet
tcp6       0      0 :::6443                 :::*                    LISTEN      1904/kube-apiserver
tcp6       0      0 :::10255                :::*                    LISTEN      1242/kubelet
tcp6       0      0 :::10256                :::*                    LISTEN      2225/kube-proxy
tcp6       0      0 :::22                   :::*                    LISTEN      1289/sshd
pw136qt2

pw136qt21#

如果您收到超时错误,很有可能是您的防火墙阻止了流量。我建议检查您的云提供商防火墙(例如AWS安全组),看看端口是否可以访问。
如果没有这个选项,我建议您在master中执行以下命令:

sudo netstat -nplt

检查kube-apiserver是在127.0.0.1:6443还是0.0.0.0:6443监听,如果是前者,则检查kube-apiserver systemd服务是否更改了API监听地址。

tzdcorbm

tzdcorbm2#

由于你在一个私有网络集群中,我建议你检查防火墙和授权的主网络1。你可以测试连接性,也可以确保节点有端口打开(sudo ufw allow 6443打开Ubuntu操作系统防火墙中的端口)。
也可以使用kubectl config view来获取客户端-服务器状态的信息,可以使用kubectl config use-context XXX3更新k8s上下文。
相关4.

相关问题