Kubernetes Service:Overview

更新於 2023/04/24閱讀時間約 6 分鐘

什麼是Kubernetes Service?

先來個官網的解說
A Kubernetes Service is an abstraction which defines a logical set of Pods and a policy by which to access them.
白話文就是,訪問Pod用的一個Component。XD
Kubernetes Service是個抽象概念,通過Service,當我們的Pod創建好後,定義訪問它們的策略,該如何去訪問一群相同邏輯的Pod,給Pod提供一組穩定的IP或是Port。
因此也可以把Service當作是一種掛在一群運行相同應用程式前面的LoadBalancer,詳見下圖。

為什麼需要Kubernetes Service?

因為在Kubernetes集群中,Pod的IP地址是不穩定的,可能因為重新調度或重啟Container而改變了IP。為了使其他應用程式能夠穩定地訪問Pod,需要使用Kubernetes Service。

Kubernetes Service是如何工作的?

當Pod啟動時,它們會自動註冊到Kubernetes集群中的一個服務發現機制中,例如Kubernetes DNS或etcd。Service會監聽這個服務發現機制,並根據Label Selector選擇要提供服務的Pod。
當其他應用程式需要訪問Pod時,它們可以通過Service的IP和Port進行訪問,Service會將請求根據Label Selector轉發到選定的Pod。由於Service的IP和端口是穩定的,即使Pod的IP地址發生變化,其他應用程式依然可以一直使用相同的IP和Port訪問該Pod。

Kubernetes Service的類型有哪些?

Kubernetes Service有以下四種類型:
  • ClusterIP: 在Kubernetes集群內部使用,通常用於應用程式的內部通訊。
  • NodePort: 將Pod暴露到Kubernetes集群的外部,並使用Node的IP和一個Static Port進行訪問。
  • LoadBalancer: LoadBalancer是ClusterIP和NodePort的一種擴展。在公有雲上使用,使用雲供應商提供的LoadBalancer將流量轉發到Service中的Pod。
  • ExternalName: 允許服務將外部DNS名稱映射到Kubernetes集群內部的svc名稱上。這樣可以在不修改應用程式代碼的情況下實現外部服務的訪問。

Kubernetes Service有哪些功能?

Kubernetes Service具有以下功能:
  • 透明地將請求轉發到Pod中,無需修改應用程式代碼。
  • 提供負載均衡,分散流量到多個Pod中。
  • 支持多種協議,例如TCP、UDP和HTTP。
  • 可以設置Session Affinity,將請求路由到相同的Pod。
  • 可以進行Port轉發,將請求轉發到Pod中的不同Port。
  • 支持跨命名空間訪問。

如何創建和管理Kubernetes Service:

  • 要創建 Kubernetes Service,可以使用以下兩種方式:
  1. 宣告式(Declarative)
kind: Service  
apiVersion: v1
metadata:
name: my-service
spec:
# type 一共有四種(ClusterIP, NodePort, LoadBalancer, ExternalName),預設是 ClusterIP
type: ClusterIP
# 選擇帶有 "app=MyApp" 的 pod
selector:
app: MyApp
# Service 實際對外服務的設定
ports:
# 使用的協定與port,預設為TCP
- protocol: TCP
port: 80
# Pod對外開放的port,如無設定,預設與spec.ports.port相同
targetPort: 9376
透過以上的定義,網路的流向會呈現下方的樣子:
Request <---> Service(tcp:80) <---> Endpoint(tcp:9376) <---> Pod
Service 會將符合 Label Selector 設定的 Pod 建立 Endpoint resource object 做搭配。
2. 命令式(Imperative)
kubectl create service nodeport <myservicename>
  • 管理svc,可用以下方式:
  1. Svc查詢:
  • kubectl get svc
  • kubectl describe svc
  • kubectl get svc -o wide 顯示Label Selector選定的Label。
2. Svc的更新:kubectl edit svc
3. Svc的刪除:kubectl delete svc

Reference

為什麼會看到廣告
avatar-img
17會員
83內容數
golang
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Alan的開發者天地 的其他內容
Kubernetes是現代應用程序開發和部署的重要技術,而Pod是Kubernetes中最小的部署單位。Pod是一個或多個container的集合,它們共享一個網路命名空間和一個網路接口。Pod不僅提供了一個簡單而強大的container環境,還可以用於實現多種container編排方案,例如負載平
Intro👨‍💻 在gcp環境下使用ansible playbook 建立k8s cluster,目前base image為centos 7,安裝方式類似elk stack,一樣先等master安裝完後產生token,接著安裝slave。 使用的CRI為containerd,CNI為calico
標題:15 Best Practices when working with Docker 連結:15 Best Practices when working with Docker | by Ali Zeynalli | Dec, 2022 | Medium 本篇文章作者根據經驗以及自身研究整理出
紀錄有哪些方式可以ssh到gce機器 放key到中繼資料 Compute Enging -> 中繼資料 -> 安全殼層金鑰 2. 使用TCP Tunneling 3. 使用gcloud ssh 可編寫tunnel的script 使用 IAP 进行 TCP 转发 | Identity-Aware Pr
最近在研究terraform與ansible的整合,不過還在摸索中,機器的版控對於維運來講相對重要,這時候有terraform的出現,在建立機器後會隨之產生機器的狀態檔,而ansible則是在建立好機器後幫助我完成我所需的機器相關設定 這是一款terraform結合ansible的小玩具,在gcp環
安裝與設定所需依賴 安裝依賴套件 2. 啟動 SSH 服務 3. 防火牆開啟網頁要用的PORT網頁 4. 安裝 SMTP Server (Postfix),發送通知email用 添加gitlab repo以及安裝package Add Gitlab package 可自行選擇要安裝CE版還是EE版,
Kubernetes是現代應用程序開發和部署的重要技術,而Pod是Kubernetes中最小的部署單位。Pod是一個或多個container的集合,它們共享一個網路命名空間和一個網路接口。Pod不僅提供了一個簡單而強大的container環境,還可以用於實現多種container編排方案,例如負載平
Intro👨‍💻 在gcp環境下使用ansible playbook 建立k8s cluster,目前base image為centos 7,安裝方式類似elk stack,一樣先等master安裝完後產生token,接著安裝slave。 使用的CRI為containerd,CNI為calico
標題:15 Best Practices when working with Docker 連結:15 Best Practices when working with Docker | by Ali Zeynalli | Dec, 2022 | Medium 本篇文章作者根據經驗以及自身研究整理出
紀錄有哪些方式可以ssh到gce機器 放key到中繼資料 Compute Enging -> 中繼資料 -> 安全殼層金鑰 2. 使用TCP Tunneling 3. 使用gcloud ssh 可編寫tunnel的script 使用 IAP 进行 TCP 转发 | Identity-Aware Pr
最近在研究terraform與ansible的整合,不過還在摸索中,機器的版控對於維運來講相對重要,這時候有terraform的出現,在建立機器後會隨之產生機器的狀態檔,而ansible則是在建立好機器後幫助我完成我所需的機器相關設定 這是一款terraform結合ansible的小玩具,在gcp環
安裝與設定所需依賴 安裝依賴套件 2. 啟動 SSH 服務 3. 防火牆開啟網頁要用的PORT網頁 4. 安裝 SMTP Server (Postfix),發送通知email用 添加gitlab repo以及安裝package Add Gitlab package 可自行選擇要安裝CE版還是EE版,
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
安裝環境需求 64位元Linux,核心版本為3.1以上,且能滿足Ducker安裝環境。 機器之間要能夠互通。 外部存取權限。 硬體資源:兩核心CPU、8G記憶體、硬碟30GB以上。 安裝Kubeadm與Ducker Kubeadm是Kubernetes的一鍵部署工具。 增加Kube
Thumbnail
在實際生產中,容器化技術開始走向「容器編排技術」,如:Kubernetes。因為Docker無法獨立支撐大規模容器化部署。 Kubernetes起源於Borg系統,所以在大規模的叢集管理,優於其他容器編排技術。它提供拉取映像檔、拉取執行容器、路由閘道、水平擴充、監控和備份等,除外還可以自動化處理容
Thumbnail
本文記錄如何在Kubernetes環境下,部署Standalone架構的MySQL Database,並透過phpmyadmin進行管理。這篇文章將分成MySQL部署在K8S內的優勢、部署MySQL DB standalone、部署PhpMyAdmin (PMA)、結論四個部分進行說明與實作的流程。
Thumbnail
本篇說明如何利用Kubernetes特色,將PostgreSQL DB以HA的架構來提供服務,並說明相關的實作流程與說明。
Thumbnail
本文將演示在安裝完 Kubernetes Cluster 後的基本元件安裝,包括 Calico/Calicoctl、Metric Server 和 Dashboard UI 的安裝方法以及相關問題與解決方式。
Thumbnail
Kubernetes是什麼? 1. Kubernetes是Google嚴格保密十幾年的秘密武器——Borg的一個開放原始碼版本。 2. Kubernetes是一個開放的開發平台。 3. Kubernetes是一個完備的分散式系統支撐平台。
Thumbnail
使用Azure Backup Service將資料備份到雲端Microsoft Azure平臺,本文摘要說明 Azure 備份架構、元件。
Thumbnail
本文介紹了使用Azure Site Recovery service - Classic 在本地 VMware 和 Azure 之間部署災難恢復複製(disaster recovery replication )、故障轉移(failover)和恢復(recovery)時使用的架構和流程。
Autoscaling 的目的是當有大量請求時,系統可以自動的增加運算資源,處理當下的大量請求;也可以根據當下資源使用率低時,自動降低運算資源,達到省錢的目的。
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
安裝環境需求 64位元Linux,核心版本為3.1以上,且能滿足Ducker安裝環境。 機器之間要能夠互通。 外部存取權限。 硬體資源:兩核心CPU、8G記憶體、硬碟30GB以上。 安裝Kubeadm與Ducker Kubeadm是Kubernetes的一鍵部署工具。 增加Kube
Thumbnail
在實際生產中,容器化技術開始走向「容器編排技術」,如:Kubernetes。因為Docker無法獨立支撐大規模容器化部署。 Kubernetes起源於Borg系統,所以在大規模的叢集管理,優於其他容器編排技術。它提供拉取映像檔、拉取執行容器、路由閘道、水平擴充、監控和備份等,除外還可以自動化處理容
Thumbnail
本文記錄如何在Kubernetes環境下,部署Standalone架構的MySQL Database,並透過phpmyadmin進行管理。這篇文章將分成MySQL部署在K8S內的優勢、部署MySQL DB standalone、部署PhpMyAdmin (PMA)、結論四個部分進行說明與實作的流程。
Thumbnail
本篇說明如何利用Kubernetes特色,將PostgreSQL DB以HA的架構來提供服務,並說明相關的實作流程與說明。
Thumbnail
本文將演示在安裝完 Kubernetes Cluster 後的基本元件安裝,包括 Calico/Calicoctl、Metric Server 和 Dashboard UI 的安裝方法以及相關問題與解決方式。
Thumbnail
Kubernetes是什麼? 1. Kubernetes是Google嚴格保密十幾年的秘密武器——Borg的一個開放原始碼版本。 2. Kubernetes是一個開放的開發平台。 3. Kubernetes是一個完備的分散式系統支撐平台。
Thumbnail
使用Azure Backup Service將資料備份到雲端Microsoft Azure平臺,本文摘要說明 Azure 備份架構、元件。
Thumbnail
本文介紹了使用Azure Site Recovery service - Classic 在本地 VMware 和 Azure 之間部署災難恢復複製(disaster recovery replication )、故障轉移(failover)和恢復(recovery)時使用的架構和流程。
Autoscaling 的目的是當有大量請求時,系統可以自動的增加運算資源,處理當下的大量請求;也可以根據當下資源使用率低時,自動降低運算資源,達到省錢的目的。