问题
每当我创建集群并部署 Flannel 时,它大概需要 5 分钟左右的时间。当我通过 检查集群信息时kubectl cluster-info
,它会显示正确的信息。过了一会儿,它只是显示
与服务器 <server_ip>:6443 的连接被拒绝 - 您是否指定了正确的主机或端口?
集群信息:
Kubernetes 版本:1.27.2 安装方法:kubeadm init,直接从文档页 主机操作系统:Ubuntu 22.04.2 LTS CNI 和版本:法兰绒 0.22.0 CRI 和版本:containerd 1.6.21
我尝试过的方法
首先,我按照以下说明操作:https://computingforgeeks.com/deploy-kubernetes-cluster-on-ubuntu-with-kubeadm/。我没有禁用交换,步骤 3。我的 containerd 配置中的 CRI 部分如下所示:
[plugins."io.containerd.grpc.v1.cri"]
stream_server_address = "127.0.0.1"
stream_server_port = "0"
systemd_cgroup = true
[plugins."io.containerd.grpc.v1.cri".cni]
bin_dir = "/opt/cni/bin"
conf_dir = "/etc/cni/net.d"
conf_template = ""
ip_pref = ""
max_conf_num = 1
一切准备就绪后,我用 初始化了我的集群sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=<server_ip>
。这没有给出任何错误。
问题
- 这是什么原因造成的?我的网络配置关闭了吗?
- 我遗漏了什么步骤?
- 检查日志,哪个 pod 会导致这种情况?大多数情况下,kube-proxy 会出现错误,但除了
dial tcp <serverip>:6443: connect: connection refused
每个语句的末尾之外看不到任何具体信息。
答案1
此错误 The connection to the server <server_ip>:6443 was refused - did you specify the right host or port,
似乎无法找到端口 6443 上的 API,表明 API 和运行它的 Docker 容器是导致此错误的原因。因此,如果 docker 关闭或任何阻止访问 docker 的东西中断,就会抛出这种错误。
正如本文所解释的文档由希腊日记“管理员”撰写,解释了如何修复错误
1.应在主节点上执行kubectl。
2.当前用户必须具有 Kubernetes 集群配置环境变量(有关如何操作的详细信息,请参阅“准备以普通用户身份使用 Kubernetes”部分),例如:
$ env | grep -i kube KUBECONFIG=/root/.kube/config
3.docker 服务必须正在运行:
$ systemctl status docker
4.kubelet 服务必须正在运行:
$ systemctl status kubelet
5.TCP 端口 6443 应列为监听端口:
# netstat -pnlt | grep 6443 tcp6 0 0 :::6443 :::* LISTEN 4546/kube-apiserve
如果 TCP 端口 6443 不可用,请检查防火墙/iptables 规则是否符合要求:
$ firewall-cmd --list-all
还请检查 kubelet 日志:
# journalctl -xeu kubelet
6.尝试重新启动 Kubernetes 集群,这也会进行一些基本检查
$ kubeadm-setup.sh restart
您也可以参考这个文档由 David O'Dell 撰写,其中包含有关解决 kubectl 连接被拒绝问题的更多信息。
答案2
验证SystemdCgroup
containterd 配置中的设置。
https://kubernetes.io/docs/setup/production-environment/container-runtimes/#containerd-systemd
要将 systemd cgroup 驱动程序
/etc/containerd/config.toml
与 runc 一起使用,请设置[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] ... [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] SystemdCgroup = true