# K8s 服務對外的四種方式
# 前言
剛開始學習 K8s 的時候,你通常會開始寫第一個 Pod 的 YAML 檔案,然而 Pod 裡面的 Service 即便描述了 Port Number 外界還是無法存取 Pod 內的 Service,通常在學習初期會使用 port-forward 的指令來暫時性的將服務對外,那在其他環境中不會用 port-forward,那我們來看看還有哪些方式可以將服務對外出去!
# HostNetwork
與 Docker Network 的 Host mode 相同,直接掛載機器上的網路與 Port
1 | apiVersion: v1 |
Get Pod 會看到部屬機器網路的 Pod 端口
當部屬主機 IP 變更 Pod 也需要重啟
# NodePort
指定 Port 對外但是 IP 是根據節點所定
等同使用 Cluster IP,不管 Service 是在哪一個 Node 啟動都不會受到影響,基本上 K8s 都是使用 Cluster IP 進行存取,若想要對外需要額外設定 NodePort
1 | kind: Service |
# LoadBalancer
僅能設定在 Service
1 | kind: Service |
Service 部屬完成就可以透過 對外 IP + port 進行訪問
# Ingress
Ingress 是由 K8s 所管理的負載平衡器,當重啟會自動套用新的網路設定
1 | apiVersion: extensions/v1beta1 |
# 參考資料
- kubernetes 的暴露 pod 对外访问的方式