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常见问题 - K8S 常见问题
- Kubernetes组件详解和高可用配置 - 组件详解
返回: Kubernetes