簡體   English   中英

kubernetes中的簇IP有什么用

[英]what is the use of cluster IP in kubernetes

有人可以幫助我了解我在列出服務時看到的集群 IP 的 IP 地址。

  1. 什么是集群 IP(不是服務類型,而是真實 IP)?
  2. 它是如何使用的?
  3. 它從何而來?
  4. 我可以定義集群 IP 的范圍(就像我們為 pod 網絡做的那樣)?

集群 IP 是可以從集群內部訪問您的服務的地址。 除非您執行某種 SSH 隧道,否則您將無法從外部網絡 ping 集群 IP。 這個 IP 是由 k8s 自動分配的,並且可以定義一個范圍(我不確定,我不明白你為什么需要這樣做)。

開始學習新東西的好問題(對我來說也是如此):

默認情況下,您的擔憂與 k8s 集群中的kube-proxy有關,它在iptables mode工作。

Kubernetes 集群中的每個節點都運行一個 kube-proxy。 Kube-proxy 負責為 Services 實現一種虛擬 IP 的形式。

在這種模式下,kube-proxy 監視 Kubernetes 控制平面以添加和刪除 Service 和 Endpoint 對象。 對於每個服務,它安裝 iptables 規則,這些規則捕獲到服務的 clusterIP 和端口的流量,並將該流量重定向到服務的后端集之一。 對於每個 Endpoint object,它會安裝 iptables 規則,其中 select 是一個后端 Pod。

  1. 節點組件 kube-proxy

    • kube-proxy 是在集群中的每個節點上運行的網絡代理,實現了 Kubernetes 服務概念的一部分。
    • kube-proxy 在節點上維護網絡規則。 這些網絡規則允許從集群內部或外部的網絡會話與 Pod 進行網絡通信。
    • kube-proxy 使用操作系統包過濾層(如果有並且可用)。 否則,kube-proxy 會自行轉發流量。

如此所述:

Due to these iptables rules, whenever a packet is destined for a service IP, it's DNATed (DNAT=Destination Network Address Translation), meaning the destination IP is changed from service IP to one of the endpoints pod IP chosen at random by iptables. 這確保負載在后端 pod 之間均勻分布。

當此 DNAT 發生時,此信息將存儲在 conntrack 中 — Linux 連接跟蹤表(存儲 iptables 已完成的 5 元組轉換:協議、srcIP、srcPort、dstIP、dstPort)。 這樣當回復返回時,它可以取消 DNAT,這意味着將源 IP 從 Pod IP 更改為服務 IP。 這樣,客戶端就不會知道數據包流是如何在幕后處理的。

還有不同的模式,你可以在這里找到更多信息

  1. 在集群初始化期間,您可以使用--service-cidr字符串參數Default: "10.96.0.0/12"

    • ClusterIP:分配給服務的 IP 地址

Kubernetes 從集群的可用服務 IP 地址池中為每個新創建的服務(ClusterIP)分配一個穩定、可靠的 IP 地址。 Kubernetes 還通過添加 DNS 條目為 ClusterIP 分配主機名。 ClusterIP 和主機名在集群內是唯一的,並且在服務的整個生命周期內不會改變。 Kubernetes 僅在從集群配置中刪除 Service 時釋放 ClusterIP 和主機名。 您可以使用 ClusterIP 或服務的主機名訪問運行應用程序的健康 Pod。

  • Pod IP:分配給給定 Pod 的 IP 地址。

    Kubernetes 從節點上為 Pod 保留的一系列地址中,將 IP 地址(Pod IP)分配給 Pod 的網絡命名空間中的虛擬網絡接口。 此地址范圍是分配給 Pod 集群的 IP 地址范圍的子集,您可以在創建集群時對其進行配置。

資源:

希望這有幫助

暫無
暫無

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

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