简介:K8S里面的port-targetPort -nodePort-containerPort 你知道怎么区分吗?
一、关于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
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: 30080 # NodePort,通过nodeport类型的service暴露给集群外部访问
selector:
app: nginx
----------------------end---------------------
推荐阅读
1、K8s最佳实践Kubernetes-Rancher2.x持续交付与自动化运维
5、第4节 Kubernetes标签Label和标签选择器实战

如果本文对你有帮助的话,欢迎点赞&在看&转发,这对我继续分享&创作优质文章非常重要。感谢🙏🏻




