master节点上的nodeport端口不通(k8s踩坑)

在Kubernetes1.22.17版本中,发现NodePort服务的80端口只在node1和node2上开启,而非Master节点。问题出在kube-proxy运行在iptables模式而非设置的IPVS模式。通过重新设置kube-proxy为IPVS模式,删除并重新创建pod,最终解决了Master节点上NodePort服务不可访问的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

创建了一个nodeport类型的service,端口是80,按道理来说会在每个节点上开启80端口,但是发现master节点上没有开启80端口,node1、node2上均开启了80端口。
在这里插入图片描述
k8s 1.22.17版本中已经无法使用lsof -i:80 或netstat -lntup| grep 80等方式查看service开启的nodeport端口了,但是我们可以使用telnet命令进行测试
在这里插入图片描述

问题排查

排查防火墙selinux,都是关闭状态的。
安装网上说的添加:iptables -P FORWARD ACCEPT,仍是未解决。
查看当初安装集群时配置的开启ipv4转发,也没啥问题:

[root@master glusterfs]# cat /etc/sysctl.d/k8s.conf 
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
net.ipv4.ip_forward=1
vm.swappiness=0
[root@master glusterfs]# 

最后,查看kube-proxy的模式发现是iptables,命名之前已经设置为ipvs了,怎么变成iptables了:

[root@master ~]# curl 127.0.0.1:10249/proxyMode
iptables
[root@master ~]#

查看kube-proxy的pod日志,发现有大量报错:
在这里插入图片描述

最终解决

#重新设置 kube-proxy 为ipvs模式
kubectl  edit cm  kube-proxy -n kube-system
#删除pod,让它重新创建
kubectl  delete  pod  kube-proxy-977sk kube-proxy-t6cbg kube-proxy-v4c8j -n kube-system

#telnet测试
[root@node2 ~]# telnet  192.168.158.128 80		#终于可以正常telnet通master节点上的nodeport端口了
Trying 192.168.158.128...
Connected to 192.168.158.128.
Escape character is '^]'.
Kubernetes (k8s) 中搭建两个 master 节点通常是用于提高系统的高可用性和容错性。Kubernetes 集群通常包含一个主节点 (etcd 和控制平面) 和 worker 节点。以下是搭建两台 master 节点的基本步骤: 1. **安装前准备**: - 确保两台机器都有足够的硬件资源,如 CPU、内存和网络连接。 - 安装 Linux 发行版并更新系统。 2. **配置防火墙**: - 打开必要的端口,如 Kubernetes API(默认是443/TCP)和其他服务端口。 3. **初始化集群**: - 使用 `kubeadm` 工具在每台机器上创建一个新的 cluster: ``` kubeadm init --pod-network-cidr=10.244.0.0/16 ``` 这会生成一个 `config.yaml` 文件,这是后续配置的基础。 4. **设置证书**: - 如果是首次初始化,`kubeadm` 会提示你需要创建 CA 的私钥和证书文件。运行 `kubeadm alpha certs` - 将 CA 的证书复制到两台 master 上。 5. **配置互信**: - 在每台 master 上,用 `kubeadm join` 加入其他 master 的信息,并确保它们信任彼此的 CA。 6. **修改 etcd 负载均衡策略**: - 可能需要更改 `/etc/kubernetes/manifests/etcd.yaml` 或者 `/var/lib/kubelet/config.yaml` 中的 etcd 相关配置,将 etcd 同步和副本数调整为 3(如果只有两台机器,通常不会同步所有数据)。 7. **验证集群状态**: - 在每台 master 上运行 `kubectl get nodes` 来确认节点已经加入集群,并且状态正常。 8. **添加更多的 worker 节点**: - 使用 `kubeadm join` 同样命令加入新的 worker 节点,确保它们连接到正确的 master
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值