我在两台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
2条答案
按热度按时间pw136qt21#
如果您收到超时错误,很有可能是您的防火墙阻止了流量。我建议检查您的云提供商防火墙(例如AWS安全组),看看端口是否可以访问。
如果没有这个选项,我建议您在master中执行以下命令:
检查kube-apiserver是在
127.0.0.1:6443
还是0.0.0.0:6443
监听,如果是前者,则检查kube-apiserver systemd服务是否更改了API监听地址。tzdcorbm2#
由于你在一个私有网络集群中,我建议你检查防火墙和授权的主网络1。你可以测试连接性,也可以确保节点有端口打开(
sudo ufw allow 6443
打开Ubuntu操作系统防火墙中的端口)。也可以使用
kubectl config view
来获取客户端-服务器状态的信息,可以使用kubectl config use-context XXX
3更新k8s上下文。相关4.