K8S_三種Port區別總結
阿新 • • 發佈:2022-03-26
nodePort:
外部流量訪問K8S叢集中Service入口的一種方式
比如外部使用者要訪問k8s叢集中的一個Web應用,那麼我們可以配置對應service的type=NodePort,nodePort=30001。其他使用者就可以通過瀏覽器http://node:30001訪問到該web服務。
port:
K8S叢集內部服務之間訪問service的入口。即clusterIP:port是service暴露在clusterIP上的埠
targetPort:
容器的埠(最終的流量埠)。targetPort是“pod”上的埠,從port和nodePort上來的流量,經過kube-proxy流入到後端pod的targetPort上,最後進入容器。
例子:
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort // 有配置NodePort,外部流量可訪問k8s中的服務
ports:
- port: 30080 // 服務訪問埠
targetPort: 80 // 容器埠
nodePort: 30001 // NodePort
selector:
name: nginx-pod
總結:
總的來說,port和nodePort都是service的埠,前者暴露給k8s叢集內部服務訪問,後者暴露給k8s叢集外部流量訪問。從上兩個埠過來的資料都需要經過反向代理kube-proxy,流入後端pod的targetPort上,最後到達pod內的容器。