一、关于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