k8s集群如何动态修改NodePort 的端口范围
在一个已经部署好的 Kubernetes 集群中,动态修改 NodePort
的端口范围需要修改 Kubernetes API Server 的启动参数,并重新启动 API Server。具体步骤如下:
1. 修改 Kubernetes API Server 配置
对于基于 kubeadm 部署的集群,API Server 的配置文件通常位于 /etc/kubernetes/manifests/kube-apiserver.yaml
中。这是一个静态 Pod 配置文件。
- 使用
kubectl
或 SSH 连接到控制节点。 - 打开
/etc/kubernetes/manifests/kube-apiserver.yaml
文件。sudo vi /etc/kubernetes/manifests/kube-apiserver.yaml
- 找到
command
或args
部分,添加或修改--service-node-port-range
参数。例如,要将范围修改为 1-65535,可以添加以下内容:
- --service-node-port-range=1-65535 |
例如:
containers: |
2. 保存并退出编辑
保存文件并退出编辑器。
3. Kubernetes API Server 自动重启
由于 /etc/kubernetes/manifests/kube-apiserver.yaml
是一个静态 Pod 配置文件,修改后 Kubernetes 会自动检测到变更,并重新启动 API Server。你可以通过运行以下命令来验证 API Server 是否成功重启:
kubectl get pods -n kube-system | grep kube-apiserver |
4. 验证更改
一旦 API Server 重新启动,你可以通过以下方式验证更改是否生效:
- 创建一个
NodePort
类型的 Service,并检查其分配的端口号是否在新的范围内。 - 使用以下命令检查
NodePort
范围:
kubectl get configmap -n kube-system kubeadm-config -o yaml | grep service-node-port-range |
如果你使用其他工具(如 kops
、rke
等)部署了 Kubernetes,则需要按照相应工具的方式修改 API Server 的配置。
注意: 动态修改 NodePort
范围会影响集群的服务暴露策略。建议在进行修改前确认所有相关服务的影响,并在生产环境中进行充分测试。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 叶落花开的博客!
评论