创建 Kubernetes 集群架构

KubernetesKubernetesBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

Kubernetes 是一个容器编排平台,能够自动化容器化应用的部署、扩展和管理。本挑战将探讨 Kubernetes 的架构,包括构成 Kubernetes 集群的组件及其相互之间的交互。

这是一个挑战(Challenge),与实验(Lab)不同,你需要独立完成挑战任务,而不是按照实验的步骤学习。挑战通常有一点难度。如果你觉得困难,可以与 Labby 讨论或查看解决方案。根据历史数据,这是一个 初级 级别的挑战,通过率为 91%。获得了学习者 100% 的好评率。

Kubernetes 控制平面组件

Kubernetes 控制平面负责管理集群的整体状态以及应用的部署和扩展。控制平面组件包括:

  • kube-apiserver:Kubernetes 控制平面的前端,处理所有对集群的管理请求。
  • etcd:一个分布式键值存储,用于存储 Kubernetes 集群的配置数据。
  • kube-scheduler:负责将 Pod 调度到集群中的节点上运行。
  • kube-controller-manager:运行控制器,管理各种 Kubernetes 对象的状态。

任务

你的任务是检索并显示控制平面组件的状态,包括 kube-apiserver、etcd、kube-scheduler 和 kube-controller-manager。

要求

  • 使用 kubectl 命令检索控制平面组件的状态。
  • /home/labex/project 目录下执行命令。
  • 输出应显示每个控制平面组件的状态。

示例

以下是检索控制平面组件状态时的预期输出示例:

NAME                 STATUS    MESSAGE                         ERROR
controller-manager   Healthy   ok
etcd-0               Healthy   {"health":"true","reason":""}
scheduler            Healthy   ok
✨ 查看解决方案并练习

Kubernetes 节点组件

Kubernetes 节点组件负责运行容器并为应用提供运行时环境。节点组件包括:

  • kubelet:Kubernetes 节点代理,负责管理节点的状态并运行容器。
  • kube-proxy:Kubernetes 网络代理,负责将流量路由到适当的容器。

任务

显示 Kubernetes 集群中运行的节点信息,包括节点名称、状态和其他相关详细信息。

要求

  • 使用 kubectl 命令列出 Kubernetes 集群中的节点。
  • /home/labex/project 目录下执行命令。
  • 输出应显示集群中每个节点的详细信息。

示例

以下是显示节点时的预期输出示例:

NAME       STATUS   ROLES           AGE     VERSION
minikube   Ready    control-plane   2m52s   v1.26.1
✨ 查看解决方案并练习

Kubernetes Pod 组件

Kubernetes Pod 是 Kubernetes 中最小的可部署单元,代表集群中运行的单个进程实例。每个 Pod 由一个或多个容器组成,这些容器共享相同的网络命名空间和存储卷。

任务

  1. 创建一个名为 simple-pod.yaml 的文件,其中包含一个 Nginx 容器的 Pod 配置。
  2. 使用适当的 kubectl 命令部署该 Pod。
  3. 显示 Kubernetes 集群中运行的 Pod 信息。

要求

  • /home/labex/project 目录下创建一个名为 simple-pod.yaml 的文件,其中包含一个使用 Nginx 镜像的 Pod 配置,Pod 名称为 simple-pod
  • 使用 kubectl 命令从 YAML 文件创建 Pod。
  • 使用另一个 kubectl 命令列出 Kubernetes 集群中运行的 Pod。

示例

以下是显示 Pod 时的预期输出示例:

pod/simple-pod created
NAME         READY   STATUS    RESTARTS   AGE
simple-pod   1/1     Running   0          29s
✨ 查看解决方案并练习

Kubernetes Service 组件

Kubernetes Service 是一种抽象,定义了一组逻辑 Pod 及其访问策略。Service 组件包括:

  • Service IP:分配给 Service 的虚拟 IP 地址。
  • Service Port:分配给 Service 的端口号。
  • Endpoint:指向 Service 背后 Pod 的 IP 地址和端口号列表。

任务

  1. 创建一个名为 nginx-service.yaml 的文件,其中包含 Nginx Pod 的 Service 配置。
  2. 使用适当的 kubectl 命令部署该 Service。
  3. 显示 Kubernetes 集群中运行的 Service 信息。

要求

  • /home/labex/project 目录下创建一个名为 nginx-service.yaml 的文件,其中包含一个名为 nginx-service 的 Service 配置,该 Service 暴露端口 80。
  • 使用 kubectl 命令从 YAML 文件创建 Service。
  • 使用另一个 kubectl 命令列出 Kubernetes 集群中运行的 Service。

示例

以下是显示 Service 时的预期输出示例:

NAME            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
kubernetes      ClusterIP   10.96.0.1      <none>        443/TCP   5m42s
nginx-service   ClusterIP   10.96.184.71   <none>        80/TCP    4s
✨ 查看解决方案并练习

总结

在本挑战中,我们探索了 Kubernetes 的架构,包括控制平面、节点、Pod 和 Service 组件。我们学习了如何检查各组件的状态、创建一个简单的 Pod 和 Service,并将 Pod 暴露给外部应用。理解构成 Kubernetes 集群的组件及其交互,为部署和管理容器化应用奠定了坚实的基础。