首頁  >  文章  >  web前端  >  CKA 全日課程多容器 Pod Kubernetes - Sidecar 與 Init Container

CKA 全日課程多容器 Pod Kubernetes - Sidecar 與 Init Container

Linda Hamilton
Linda Hamilton原創
2024-10-30 01:17:28536瀏覽

CKA Full Course Day Multi Container Pod Kubernetes - Sidecar vs Init Container

我的一封信

在這個專案中,我想應用 Kubernetes 概念,例如 init 容器和 sidecar 容器,但我不想只是遵循教程。

我的目標是打造一些令人難忘的東西。

經過一番集思廣益,我向您展示Get Me 應用程式


Get Me 應用程式的用途

Get Me 應用程式 旨在動態取得和顯示來自各種 GitHub 儲存庫的內容。該應用程式在 Kubernetes Pod 中運行,包含兩個主要組件:

  1. Nginx 容器:它作為主應用程序,託管動態獲取的內容。它輕量級且高效,非常適合提供靜態網頁。

  2. Sidecar Container:它與主 nginx 容器一起運作。它負責透過從隨機選擇的 GitHub 頁面獲取最新的 HTML,每 5 秒刷新一次內容。這確保了 Nginx 提供的內容始終是最新的。

  3. Init Container:這會在主容器啟動之前初始化環境。它透過解析 Get Me 應用程式服務的 DNS 項目來檢查其可用性。此步驟可確保應用程式在開始運行後準備好與服務互動。在這裡閱讀更多內容(我必須)

然後,nginx 容器提供更新的 HTML 網頁,使其可以透過 NodePort 服務透過瀏覽器存取。


先決條件

在開始之前,請確保您擁有用於建立 Kubernetes 叢集的設定檔。請參閱 Kind 快速入門指南,以了解有關設定 Kind 叢集的詳細說明。

叢集配置(config.yml)

建立一個名為 config.yml 的文件,其中包含以下內容來定義您的 Kind 叢集:

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
name: cka-cluster  
nodes:
- role: control-plane
  extraPortMappings:
  - containerPort: 30001  # Change this to match the NodePort
    hostPort: 30001
    listenAddress: "0.0.0.0" 
    protocol: tcp
- role: worker  
- role: worker 

執行以下命令建立叢集:

kind create cluster --name kind-cka-cluster --config config.yml

使用以下指令將上下文設定為新叢集:

kubectl config use-context kind-kind-cka-cluster

步驟1:建立專案目錄和文件

首先,設定專案的目錄和檔案結構。

mkdir get-me-app
cd get-me-app
nano get-me-app.yml

步驟 2:定義 Kubernetes Pod 規範

在 get-me-app.yml 檔案中,我們將定義一個 Kubernetes pod,其中包含 nginx 容器、用於刷新內容的 sidecar 容器以及用於初始資料獲取的 init 容器。

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
name: cka-cluster  
nodes:
- role: control-plane
  extraPortMappings:
  - containerPort: 30001  # Change this to match the NodePort
    hostPort: 30001
    listenAddress: "0.0.0.0" 
    protocol: tcp
- role: worker  
- role: worker 

此 Pod 規範的每個部分的作用

  1. nginx 容器:這是主容器,在連接埠 80 上提供內容。 volumeMount 使 /usr/share/nginx/html 目錄在 pod 的 workdir 卷中可用。

  2. Sidecar 容器(內容刷新器):此容器執行 while true 循環,每 5 秒下載最新版本的網頁。這可確保 workdir 磁碟區中的內容保持更新。

  3. 初始化容器 (init-myservice):這會透過持續執行 DNS 查找來等待 get-me-app-service 而變得可用。初始化時只運行一次,完成後不會重新啟動。

  4. :workdir 卷(emptyDir 類型)在容器之間共享,允許 init 容器、sidecar 和 nginx 存取和提供相同的內容。


步驟 3:使用 NodePort 進行本機測試(可選)

要使應用程式可透過本機上的瀏覽器存取,請設定 NodePort 服務以公開 pod 的連接埠 80。

在 get-me-app-service.yml 中新增此服務定義:

kind create cluster --name kind-cka-cluster --config config.yml

使用以下指令部署設定:

kubectl config use-context kind-kind-cka-cluster

透過在瀏覽器中造訪 http://localhost:30001 來存取它,您應該造訪 github 頁面。 5 秒後刷新頁面,您應該會看到不同的 github 頁面。


重點

這個專案幫助我了解 init 容器如何初始化共用資源以及 sidecar 容器如何為主應用程式更新這些資源。這是一種嘗試和了解 Kubernetes 中即時資料處理的有趣方式。


以下是您提供的部分的格式化內容:


標籤和提及

  • @piyushsachdeva
  • 第 8 天:影片教學

尾註:請記住,該項目不是影片教學的一部分。我想使用教程中的概念作為一般指導來自己建立一些東西。

以上是CKA 全日課程多容器 Pod Kubernetes - Sidecar 與 Init Container的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn