K8S里面的多种port端口你知道怎么区分

一、关于K8S中端口的概念区分

1、 Port:

是service端口,即k8s中服务之间的访问端口 ,clusterIP:port 是提供给集群内部客户访问service的入口

2、NodePort:

容器所在node节点的端口,通过nodeport类型的service暴露给集群节点,外部可以访问的端口

3、TargetPort

是pod的端口 ,从port和nodePort来的流量经过kube-proxy流入到后端pod的targetPort上,最后进入容器。

4、ContainerPort

是pod内部容器的端口,targetPort映射到containerPort。

二、总结:

4种端口作用不一样,port和nodePort都是service的端口。

port暴露给集群内客户访问服务,nodePort暴露给集群外客户访问服务。

这两个端口到来的数据都需要经过反向代理kube-proxy流入后端pod的targetPod,从而到达pod中的容器。

三、配置port

[root@master ~]# more nginx -s ervice .yaml

apiVersion: v1

kind: Pod

metadata:

name: nginx

namespace: dev

labels:

app: nginx

spec:

containers:

  • name: nginx

image: nginx:1.20.0

imagePullPolicy: IfNotPresent

ports:

  • containerPort: 80 # 容器端口

---

apiVersion: apps/v1

kind: Service

metadata:

name: nginx

spec:

type: NodePort # 有配置 NodePort ,外部可访问 k8s 中的服务 ,

ports:

  • name: nginx

port: 80 # 服务 service 的访问端口

protocol: TCP

targetPort: 80 # pod 端口 , 映射到容器端口

nodePort: 300 80 # NodePort ,通过 nodeport 类型的 service 暴露给集群外部访问

selector:

app: nginx


请使用浏览器的分享功能分享到微信等