kubernetes——外界訪問Service三種方式

NodePort

apiVersion: v1
kind: Service
metadata:
  name: my-nginx
  labels:
    run: my-nginx
spec:
  type: NodePort ??
  ports:
  - nodePort: 8080 ??
    targetPort: 80
    protocol: TCP
    name: http
  - nodePort: 443
    protocol: TCP
    name: https
  selector:
    run: my-nginx

原理:在每一臺宿主機上添加一條iptables規(guī)則

-A KUBE-NODEPORTS -p tcp -m comment --comment "default/my-nginx: nodePort" -m tcp --dport 8080 -j KUBE-SVC-67RL4FN6JRUPOJYM

在NodePort模式下,會多一次SNAT轉(zhuǎn)換,給即將離開這臺主機的 IP 包,進行了一次 SNAT 操作,將這個 IP 包的源地址替換成了這臺宿主機上的 CNI 網(wǎng)橋地址,或者宿主機本身的 IP 地址(如果 CNI 網(wǎng)橋不存在的話)。

目的:

           client
             \ ^
              \ \
               v \
   node 1 <--- node 2
    | ^   SNAT
    | |   --->
    v |
 endpoint
 
 如果沒有做 SNAT 操作的話,這時候,被轉(zhuǎn)發(fā)來的 IP 包的源地址就是 client 的 IP 地址。所以此時,Pod 就會直接將回復(fù)發(fā)給client。對于 client 來說,它的請求明明發(fā)給了 node 2,收到的回復(fù)卻來自 node 1,這個 client 很可能會報錯。

LoadBalancer

kind: Service
apiVersion: v1
metadata:
  name: example-service
spec:
  ports:
  - port: 8765
    targetPort: 9376
  selector:
    app: example
  type: LoadBalancer

ExternalName

---
kind: Service
apiVersion: v1
metadata:
  name: example-service
spec:
  ports:
  - port: 8765
    targetPort: 9376
  selector:
    app: example
  type: LoadBalancer

附:iptables 鏈名關(guān)系

  1. KUBE-SERVICES 或者 KUBE-NODEPORTS 規(guī)則對應(yīng)的 Service 的入口鏈,這個規(guī)則應(yīng)該與 VIP 和 Service 端口一一對應(yīng);
  2. KUBE-SEP-(hash) 規(guī)則對應(yīng)的 DNAT 鏈,這些規(guī)則應(yīng)該與 Endpoints 一一對應(yīng);
    3.KUBE-SVC-(hash) 規(guī)則對應(yīng)的負載均衡鏈,這些規(guī)則的數(shù)目應(yīng)該與 Endpoints 數(shù)目一致;
  3. 如果是 NodePort 模式的話,還有 POSTROUTING 處的 SNAT 鏈。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 容器技術(shù)概念入門篇 從進程說開去 容器本身沒有價值,有價值的是“容器編排”。 容器其實是一種沙盒技術(shù)。顧名思義,沙...
    白板時鐘閱讀 2,776評論 0 2
  • 前言 Pod 已經(jīng)成功運行起來了,但是有兩個問題。 一是這些 Pod 無法從集群外部直接訪問到,二是 Pod 出現(xiàn)...
    左程立閱讀 315評論 0 0
  • Service 概念介紹 雖然每個Pod都會被分配一個單獨的IP地址,但這個IP地址會隨著Pod的銷毀而消失。引出...
    jaymz明閱讀 826評論 0 3
  • 漸變的面目拼圖要我怎么拼? 我是疲乏了還是投降了? 不是不允許自己墜落, 我沒有滴水不進的保護膜。 就是害怕變得面...
    悶熱當乘涼閱讀 4,462評論 0 13
  • 夜鶯2517閱讀 128,087評論 1 9

友情鏈接更多精彩內(nèi)容