Notes

K8s 端口

December 11, 2021

K8S Ports 区别

service-annotated.png

当 K8S Service 类型为 NodePort 时,有以下几种 Port 设置参数:

  1. nodePort

    K8S 外部可访问的端口(默认范围是 30000-32767)

  2. port

    K8S 内部可访问的端口

  3. targetPort

    K8S 服务监听的端口

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:1.14.2
          ports:
            - containerPort: 80

部署 deployment 后可以通过 pods 的内网 IP 访问 80 端口,但外网无法访问。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  type: NodePort
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 8080
      targetPort: 80
      nodePort: 30036

部署 service 后可以通过 service 的内网 Cluster IP 访问 8080 端口

此时外网也可以访问 nodeIP:nodePort

参考资料

  1. https://matthewpalmer.net/kubernetes-app-developer/articles/service-kubernetes-example-tutorial.html