簡體   English   中英

kubernetes 服務是如何工作的?

[英]how kubernetes service works?

在 Kubernetes 的所有概念中,我發現服務工作機制是最難理解的

這是我現在的想象:

  • 每個節點中的 kube-proxy 偵聽主 API 控制器中的任何新服務/端點
  • 如果有任何新的服務/端點,它會向該節點的 iptables 添加規則
  • 對於 NodePort 服務,外部客戶端必須通過節點的 ip 和 NodePort 之一訪問新服務。 節點將請求轉發到新的服務IP

這是正確的嗎? 還有一些我還不清楚的地方:

  • 服務是否位於節點內? 如果是這樣,我們可以通過 ssh 進入節點並檢查服務是如何工作的嗎?
  • 服務 IP 是虛擬 IP 並且只能在節點內訪問嗎?

我看到的大部分在線繪制服務的圖表都是跨越所有節點的,這更讓人難以想象

每個節點中的 kube-proxy 偵聽主 API 控制器中的任何新服務/端點

Kubernetes 使用 etcd 在所有節點(包括 pod、服務、部署等)之間共享當前的集群配置信息。

如果有任何新的服務/端點,它會向該節點的 iptables 添加規則

kubernetes 內部有一個所謂的端點控制器,負責修改虛擬集群網絡的 DNS 配置,使服務端點通過 DNS(和環境變量)可用。

對於 NodePort 服務,外部客戶端必須通過節點的 ip 和 NodePort 之一訪問新服務。 節點將請求轉發到新的服務IP

根據服務類型采取附加操作,例如通過自動創建的用於類型 nodePort 的 clusterIP 服務在節點上提供端口。 或者使用雲提供商等創建外部負載均衡器。

服務是否位於節點內? 如果是這樣,我們可以通過 ssh 進入節點並檢查服務是如何工作的嗎?

正如所解釋的,服務體現在集群配置、端點控制器以及其他東西中,如 clusterIP 服務、負載均衡器等。我認為不需要通過 ssh 進入節點來檢查服務。 通常與集群 api 交互應該足以調查/更新服務配置。

服務 IP 是虛擬 IP 並且只能在節點內訪問嗎?

服務 IP,如 POD IP,是虛擬的,可從集群網絡內訪問。 etcd 中有一個全局分配映射,它維護允許分配唯一的新列表的完整列表。 有關網絡模型的更多信息,請閱讀此博客

有關更多詳細信息,請參閱kubernetes 組件服務的文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM