1. 程式人生 > >k8s 中 port nodePort targetPort概念的區分

k8s 中 port nodePort targetPort概念的區分

不廢話,直接開始比較

1:三個型別埠所應用位置的不同

port是service的的埠
targetport是pod也就是容器的埠
nodeport是容器所在宿主機的埠(實質上也是通過service暴露給了宿主機,而port卻沒有)

2:在作用上

port
的主要作用是叢集內其他pod訪問本pod的時候,需要的一個port,如nginx的pod訪問mysql的pod,那麼mysql的pod的service可以如下定義,由此可以這樣理解,port是service的port,nginx訪問service的33306

 apiVersion: v1
 kind: Service
 metadata:
  name: mysql-service
 spec:
  ports:
  - port: 33306
    targetPort: 3306
  selector:
   name: mysql-pod

targetport
同樣的,看上面的targetport,targetport說過是pod暴露出來的port埠,當nginx的一個請求到達service的33306埠時,service就會將此請求根據selector中的name,將請求轉發到mysql-pod這個pod的3306埠上


nodeport
nodeport就很好理解了,它是叢集外的客戶訪問,叢集內的服務時,所訪問的port,比如客戶訪問下面的叢集中的nginx,就是這樣的方式,ip:30001

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 

3:總結一下

nodeport是叢集外流量訪問叢集內服務的埠型別,比如客戶訪問nginx,apache,port是叢集內的pod互相通訊用的埠型別,比如nginx訪問mysql,而mysql是不需要讓客戶訪問到的,最後targetport,顧名思義,目標埠,也就是最終埠,也就是pod的埠。