iT邦幫忙

2024 iThome 鐵人賽

DAY 19
0
Kubernetes

Kubernetes 中關於網路的二三事系列 第 19

Day 19 Kubernetes 對外通訊:NodePort、LoadBalancer 和 Ingress

  • 分享至 

  • xImage
  •  

今天我們要來聊聊 Kubernetes 中的對外通訊,如果我們的服務只能在 Kubernetes 集群內部訪問,那豈不是太遜了嗎?所以今天我們就來看看如何讓外部世界也能享受到我們的服務。

在 Kubernetes 中,主要有三種方式可以實現對外通訊:

  1. NodePort
  2. LoadBalancer
  3. Ingress

讓我們一個一個來看看這些方法,就像品嚐不同口味的冰淇淋一樣,每種都有它的特色!

NodePort

NodePort 就像是在你家門口開了一個小窗口。當你設置 NodePort 時,Kubernetes 會在每個節點上開放一個特定的端口,通過這個端口,外部就可以訪問到你的服務了。

舉個例子,假設你的服務是一個披薩店:

  • 你的服務在集群內部使用8080端口(這就是你的廚房)
  • Kubernetes 在每個節點上開放了30080端口(這就是你的外賣窗口)
  • 現在,無論誰來到任何一個節點,只要敲門說"我要30080號披薩",就能吃到你的美味披薩了!

但是要注意,NodePort 的端口範圍限制在30000-32767之間。所以如果你想用80端口來賣披薩,可能就要另尋他法了。

LoadBalancer

LoadBalancer 就像是給你的服務請了一個專業的接線生。當你使用 LoadBalancer 時,Kubernetes 會請求底層的雲平台(如 AWS、GCP 等)創建一個負載均衡器,這個負載均衡器會將流量分配到你的各個節點上。

還是用披薩店來舉例:

  • 你現在開了一個連鎖披薩店
  • LoadBalancer 就像是你的客服中心
  • 客人打電話來訂餐,客服中心會根據各分店的忙碌程度,將訂單分配到不同的分店

聽起來很棒對吧?但是要注意,每個 LoadBalancer 通常都會收取一定的費用,所以如果你為每個服務都創建一個 LoadBalancer,可能會讓你的錢包變空。

Ingress

Ingress 就像是一個智慧門衛。它站在你的集群前面,根據不同的 URL 路徑將請求轉發到不同的服務。

想像一下:

  • 你現在不只賣披薩,還有漢堡、沙拉等
  • Ingress 就是你店門口的服務生
  • 客人說"我要披薩",服務生就帶他去披薩區
  • 客人說"我要漢堡",服務生就帶他去漢堡區

Ingress 的好處是,你只需要暴露一個入口點,就可以根據不同的路徑將流量導向不同的服務。這樣既節省了資源,又提高了靈活性。

選擇哪種方式要根據你的具體需求來決定:

  • 如果你只是想快速測試,NodePort 可能就夠用了
  • 如果你需要高可用和自動擴展,LoadBalancer 是個不錯的選擇
  • 如果你有多個服務需要暴露,而且想要更靈活的路由控制,那麼 Ingress 可能是最佳選擇

今天先到這,明天繼續探索 Kubernetes 的其他有趣話題。各位,明天見!


上一篇
Day 18 Kubernetes DNS:為服務發現而生
下一篇
Day 20 淺談Service Type:ExternalName
系列文
Kubernetes 中關於網路的二三事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言