在這個專案中,我想應用 Kubernetes 概念,例如 init 容器和 sidecar 容器,但我不想只是遵循教程。
我的目標是打造一些令人難忘的東西。
經過一番集思廣益,我向您展示Get Me 應用程式!
Get Me 應用程式 旨在動態取得和顯示來自各種 GitHub 儲存庫的內容。該應用程式在 Kubernetes Pod 中運行,包含兩個主要組件:
Nginx 容器:它作為主應用程序,託管動態獲取的內容。它輕量級且高效,非常適合提供靜態網頁。
Sidecar Container:它與主 nginx 容器一起運作。它負責透過從隨機選擇的 GitHub 頁面獲取最新的 HTML,每 5 秒刷新一次內容。這確保了 Nginx 提供的內容始終是最新的。
Init Container:這會在主容器啟動之前初始化環境。它透過解析 Get Me 應用程式服務的 DNS 項目來檢查其可用性。此步驟可確保應用程式在開始運行後準備好與服務互動。在這裡閱讀更多內容(我必須)
然後,nginx 容器提供更新的 HTML 網頁,使其可以透過 NodePort 服務透過瀏覽器存取。
在開始之前,請確保您擁有用於建立 Kubernetes 叢集的設定檔。請參閱 Kind 快速入門指南,以了解有關設定 Kind 叢集的詳細說明。
建立一個名為 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
首先,設定專案的目錄和檔案結構。
mkdir get-me-app cd get-me-app nano get-me-app.yml
在 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
nginx 容器:這是主容器,在連接埠 80 上提供內容。 volumeMount 使 /usr/share/nginx/html 目錄在 pod 的 workdir 卷中可用。
Sidecar 容器(內容刷新器):此容器執行 while true 循環,每 5 秒下載最新版本的網頁。這可確保 workdir 磁碟區中的內容保持更新。
初始化容器 (init-myservice):這會透過持續執行 DNS 查找來等待 get-me-app-service 而變得可用。初始化時只運行一次,完成後不會重新啟動。
卷:workdir 卷(emptyDir 類型)在容器之間共享,允許 init 容器、sidecar 和 nginx 存取和提供相同的內容。
要使應用程式可透過本機上的瀏覽器存取,請設定 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 中即時資料處理的有趣方式。
以下是您提供的部分的格式化內容:
尾註:請記住,該項目不是影片教學的一部分。我想使用教程中的概念作為一般指導來自己建立一些東西。
以上是CKA 全日課程多容器 Pod Kubernetes - Sidecar 與 Init Container的詳細內容。更多資訊請關注PHP中文網其他相關文章!