首页  >  文章  >  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