qidao123.com技术社区-IT企服评测·应用市场

标题: K8s进阶之修改Service的NodePort的端口范围 [打印本页]

作者: 吴旭华    时间: 7 天前
标题: K8s进阶之修改Service的NodePort的端口范围
概述

Kubernetes 默认的NodePort端口范围为 30000~32767。
NodePort端口范围为什么是30000~32767呢?

测试,当NodePort不在默认范围之内会怎么样呢?
  1. [root@master01 ~/service]# cat service-nodeport.yaml
  2. apiVersion: v1
  3. kind: Service
  4. metadata:
  5.   namespace: default
  6.   name: tomcat-svc-nodeport
  7. spec:
  8.   type: NodePort
  9.   selector:
  10.     app: tomcat
  11.   ports:
  12.   - name: nodeport-tomcat
  13.     # 访问service的端口
  14.     port: 16789
  15.     # 容器的端口
  16.     targetPort: 8080
  17.     # 定义nodePort的端口为80,默认为30000-32767
  18.     nodePort: 80
  19.     protocol: TCP
  20. # 创建service,这里提示我们端口范围要在30000-32767之间
  21. [root@master01 ~/service]# kubectl apply -f service-nodeport.yaml
  22. The Service "tomcat-svc-nodeport" is invalid: spec.ports[0].nodePort: Invalid value: 80: provided port is not in the valid range. The range of valid ports is 30000-32767
复制代码
修改nodePort的端口范围

Kubernetes 默认的NodePort端口范围为 30000~32767。
该范围由 Kubernetes 的配置参数 --service-node-port-range 控制(通常在 API Server 启动时设置),该配置参数通常在
/etc/kubernetes/manifests/kube-apiserver.yaml文件中添加或修改。
修改kube-apiserver.yaml文件

master节点修改
  1. vim /etc/kubernetes/manifests/kube-apiserver.yaml
  2. ...
  3. spec:
  4.   containers:
  5.   - command:
  6.     - kube-apiserver
  7.     - --service-node-port-range=1-50000  # 进行添加这一行即可
  8.     ...
复制代码

修改完之后保存该文件,保存之后Kubernetes 会自动重启 API Server 使配置见效。
验证配置是否见效

方式一:
  1. [root@master01 ~/service]# ps -ef | grep kube-apiserve
  2. root     1637652 1637630 24 23:16 ?        00:00:06 kube-apiserver --service-node-port-range=1-50000 --advertise-address=10.0.0.30...
复制代码
方式二:
  1. [root@master01 ~/service]# kubectl get pods -n kube-system -l component=kube-apiserver -o jsonpath='{.items[0].spec.containers[0].command}'
  2. ["kube-apiserver","--service-node-port-range=1-50000","--advertise-address=10.0.0.30",...
复制代码
创建service进行测试
  1. [root@master01 ~/service]# cat service-nodeport.yaml
  2. apiVersion: v1
  3. kind: Service
  4. metadata:
  5.   namespace: default
  6.   name: tomcat-svc-nodeport
  7. spec:
  8.   type: NodePort
  9.   selector:
  10.     app: tomcat
  11.   ports:
  12.   - name: nodeport-tomcat
  13.     # 访问service的端口
  14.     port: 16789
  15.     # 容器的端口
  16.     targetPort: 8080
  17.     # 定义nodePort的端口为80,默认为30000-32767
  18.     nodePort: 80
  19.     protocol: TCP
  20. # 对应的80端口
  21. [root@master01 ~/service]# kubectl apply -f service-nodeport.yaml
  22. service/tomcat-svc-nodeport created
  23. [root@master01 ~/service]# kubectl get svc tomcat-svc-nodeport
  24. NAME                  TYPE       CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
  25. tomcat-svc-nodeport   NodePort   10.96.0.191   <none>        16789:80/TCP   9s
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4