我正在阅读有关使用 kubeadm 设置 Kubernetes 集群的文档。我在三台虚拟机上运行 Ubuntu Server 20.04,但目前只使用其中一台,然后再对另外两台虚拟机进行配置。我已经准备好了 Containerd 并禁用了交换,但在启用所需端口方面遇到了困难。我首先使用 OpenSSH 应用程序配置文件将 ufw 配置为仅允许来自端口 22 的传入流量。阅读完启用所需端口后,我运行了命令:
sudo ufw allow 6443
,
sudo ufw allow 6443/tcp
,以及
sudo ufw allow 6443/udp
。
当我尝试使用 telnet 连接时,失败:
telnet 127.0.0.1 6443
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
...当使用私有 IP 时,其他计算机通过以下方式连接到它:
telnet 192.168.50.55 6443
Trying 192.168.50.55...
telnet: Unable to connect to remote host: Connection refused
如果我告诉 telnet 使用端口 22,它就可以正常工作:
telnet 127.0.0.1 22
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.3
^]
telnet> close
Connection closed.
我的防火墙配置是否有问题?还是别的事?
那是因为6443上没有进程监听。你可以使用
ss -nltp | grep 6443
来验证它
6443 将由“kube-apiserver”监听,该服务器是在使用
kubeadm init --apiserver-advertise-address=192.168.50.55 --pod-network-cidr=<pod cidr>
初始化集群后创建的
由于您尚未初始化集群,kube-apiserver 将不会运行,因此出现错误“连接被拒绝”。
如果您想验证防火墙/ufw 设置是否正确完成,以便接受端口 6443 上的流量(无需安装 kubernetes 集群),那么您可以尝试以下操作:
1. Install nmap " sudo apt-get install nmap "
2. listen to port 6443 "nc -l 6443"
3. open a another terminal/window and connect to 6443 port "nc -zv 192.168.50.55 6443" . It should say connected.
连接被拒绝通常意味着请求已到达服务器,但指定端口上没有运行任何服务。您确定 api 服务器已在您的节点上启动吗?
I did not do anything with kubeadm, I have only installed containerd so far.
在运行 kubeadm 设置 k8s 后执行 6443 测试。如果您现在这样做,您将不会得到任何回复。