Kubernetes Service 端口配置

概述

Kubernetes Service 的 NodePort 类型允许通过节点 IP 和指定端口从集群外部访问服务。默认端口范围是 30000-32767,本文介绍如何修改 NodePort 的监听范围。

修改 NodePort 端口范围

配置方法

编辑 kube-apiserver 配置文件 /etc/kubernetes/manifests/kube-apiserver.yaml,修改 --service-node-port-range 参数:

apiVersion: v1
kind: Pod
metadata:
  name: kube-apiserver
  namespace: kube-system
spec:
  containers:
    - name: kube-apiserver
      image: k8s.gcr.io/kube-apiserver:v1.21.0
      command:
        - kube-apiserver
        - --advertise-address=192.0.2.7
        - --allow-privileged=true
        - --service-node-port-range=30000-32767,59990-59999  # 更新端口范围
        # 添加其他参数
      volumeMounts:
        - mountPath: /etc/kubernetes/pki
          name: k8s-certs
          readOnly: true

端口范围说明

  • 默认范围:30000-32767
  • 可以指定多个范围,用逗号分隔
  • 示例中添加了 59990-59999 作为额外范围

生效方式

注意事项

  • 修改 /etc/kubernetes/manifests/ 下的文件后,kubelet 会自动重启对应的 Pod
  • 建议在维护窗口期间进行此操作
  • 确保新端口范围不与系统其他服务冲突

Service 类型对比

类型说明访问方式
ClusterIP默认类型,仅集群内部访问集群内部 IP
NodePort通过节点端口暴露服务<NodeIP>:<NodePort>
LoadBalancer使用云提供商的负载均衡器外部 IP
ExternalName映射到外部 DNS 名称DNS CNAME

NodePort 示例

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  type: NodePort
  selector:
    app: my-app
  ports:
    - port: 80          # Service 端口
      targetPort: 8080  # Pod 端口
      nodePort: 30080   # 节点端口(可选,不指定则自动分配)

相关链接

返回: Kubernetes