service型別及功能簡介+pod型別

小雨淅淅o0發表於2024-04-23

功能定義及簡介:

定義:K8s 中的Service是一種抽象,用於定義一組Pod的邏輯集合,併為它們提供統一的網路入口。Service充當了Pod的負載平衡器和服務發現器,為應用程式提供了穩定的網路地址,使得應用程式可以訪問與之關聯的Pod而無需瞭解其具體的IP地址或埠。

功能:Service 是 Kubernetes 中一種非常重要的資源,它提供了一種抽象和統一的方式來公開應用程式,並實現負載均衡和服務發現,從而簡化了微服務架構中的網路管理和通訊。 Service的四種型別

1.cluster ip(預設,叢集內部訪問,提供pod的vip地址),透過叢集的內部 IP 公開 Service,選擇該值時 Service 只能夠在叢集內部訪問。
2.nodeport,透過每個節點上的 IP 和靜態埠(NodePort)公開 Service。 為了讓 Service 可透過節點埠訪問,Kubernetes 會為 Service 配置叢集 IP 地址, 相當於你請求了 type: ClusterIP 的服務。
3.Loadlbalance:公有云ecs負載均衡器,會在每個ecs上啟動一個nodeport,然後loadbalacne會自動新增nodeip:nodeport,用於將外部流量均衡地分發到叢集中的後端 Pod。LoadBalancer 在雲提供商(如AWS、阿里雲,騰訊雲等)上建立一個負載均衡器,並將該負載均衡器配置為將流量路由到 Kubernetes 叢集中的 Service。這使得應用程式可以透過公共 IP 地址或 DNS 名稱訪問 Kubernetes 叢集中的服務
4.ExternalName:將服務對映到 externalName 欄位的內容(例如,對映到主機名 api.foo.bar.example)。 該對映將叢集的 DNS 伺服器配置為返回具有該外部主機名值的 CNAME 記錄。代理外部域名就是用的這個型別。

無頭service: 無頭service是K8S中一種特殊型別的服務,與普通的服務型別(如ClusterIP、NodePort、LoadBalancer)不同,它並不分配 ClusterIP,也不會代理流量到任何後端 Pod。相反,它的主要目的是為了服務發現,透過 DNS 記錄提供了服務的所有 Pod 的 IP 地址列表。這樣,應用程式可以直接透過 Pod 的 IP 地址來訪問服務,而不需要經過 Kubernetes 的服務代理。 由於無頭服務提供了每個 Pod 的直接 IP 地址,因此它通常用於執行有狀態應用程式,如資料庫、快取。 查詢 DNS 記錄: 使用 Pod 內建的 DNS 解析功能,可以透過無頭服務的 DNS 名稱來獲取所有後端 Pod 的 IP 地址列表。例如,透過查詢 my-headless-service.namespace.svc.cluster.local 可以獲取到所有與 my-headless-service 服務關聯的 Pod 的 IP 地址列表。

靜態 Pod 是 Kubernetes 中的一種特殊型別的 Pod。與通常由控制器動態建立和管理的 Pod 不同,靜態 Pod 是直接在某個節點上手動建立的。

靜態 Pod 的配置檔案通常儲存在節點上的特定目錄中(例如 /etc/kubernetes/manifests)。當 Kubernetes 的 kubelet 啟動時,它會掃描該目錄,並直接使用這些配置檔案建立對應的 Pod。

靜態 Pod 與其他型別的 Pod 有以下一些區別:

靜態 Pod 只能在特定的節點上執行,而不能被排程到叢集中的其他節點。
靜態 Pod 不受控制器的管理,也不會受到自動伸縮、滾動升級等功能的影響。
靜態 Pod 的生命週期與 kubelet 程序的生命週期相繫結,如果 kubelet 停止或重啟,那麼靜態 Pod 也會停止或重啟。
靜態 Pod 在某些情況下非常有用,例如用於在節點啟動時執行一些系統級別的服務或輔助容器。然而,在大規模叢集中部署靜態 Pod 時需要小心,因為手動管理和維護可能會變得複雜和困難

相關文章