Kubernetes 集群中NodePort默认范围是 30000-32767,网络上对修改方法的说明很多,但最近的实际操作中,有一个隐藏的问题,让我花了一天时间。
在Master节点上的文件 /etc/kubernetes/manifests/kube-apiserver.yaml
,修改此文件,向其中添--service-node-port-range=1-65535
#作为一个常年操作在线系统的的人,一定会先备份配置文件,没有异议吧?
cp kube-apiserver.yaml kube-apiserver.yaml.bak
vi kube-apiserver.yaml
.....
Host Port: <none>
Command:
kube-apiserver
- --service-cluster-ip-range=10.96.0.0/12
# 插入
- --service-node-port-range=1-65535
......
之后,大部分文档告诉你需要
# 获得 apiserver 的 pod 名字
export apiserver_pods=$(kubectl get pods --selector=component=kube-apiserver -n kube-system --output=jsonpath={.items..metadata.name})
# 删除 apiserver 的 pod
kubectl delete pod $apiserver_pods -n kube-system
又或者说还要重启服务
systemctl daemon-reload
systemctl restart kubelet
甚至还有如果你有多master节点,需要每个master节点操作一次的说法,但实际情况是,不需要每台master重复操作(k8s会自己同步),你既不需要重启master节点,也不需要删除pod的方式重启kube-apiserver
你真正需要的只是修改kube-apiserver.yaml,修改完成后你会发现无论你删除pod重启还是重启服务,新配置都不生效,其实问题就出在备份文件,移走kube-apiserver.yaml.bak
再查看
kubectl describe pod $apiserver_pods -n kube-system
你会发现端口范围已经修改生效!