这是延续 Kubernetes介绍 指导。 在本文中,我们将了解 Kubernetes 的重要特性,这将帮助您更深入地理解 Kubernetes 的功能概念。
1.自动装箱
这是 Kubernetes 最显着的特性之一。 Kubernetes 根据所需资源和其他限制条件智能地定位容器,而不会影响可用性。
Kubernetes 提供资源管理,它可以自动指定 pod 中的每个容器如何消耗 CPU 和 RAM 等资源。
2.服务发现和负载均衡
服务发现和负载均衡在 Kubernetes 中作为服务提供。 服务以一致的方式跨集群将 Pod 连接到网络。 确定如何连接到服务的过程称为服务发现。
容器的集合是 POD。 具有相同功能集的 POD 被组合成一个集合,称为服务。
每个 POD 都将被分配一个 IP 地址和服务的单个 DNS 名称(一组 POD)。 使用这种架构,Kubernetes 将对 POD 之间的网络和通信进行良好定义的控制,并且可以进行负载平衡。
在组成单个服务的一组实例之前放置负载均衡器(反向代理,例如 Nginx 或 HAProxy)是解决服务发现问题的常用技术。
负载均衡器的地址(DNS 名称,或者不太常见的 IP)是相当可靠的数据。 它可以在开发或配置阶段提供给客户端,并且可以在单个客户端的生命周期中保持不变。
之后,从客户端的角度来看,联系多实例服务与访问单个网络端点没有什么不同。 换句话说,服务发现完全发生在服务器端。
3. 存储编排
用户可以使用 Kubernetes 挂载他们想要的任何存储系统,包括本地存储、公共云提供商等。 仍然必须提供底层存储系统。
对于用户和管理人员,Kubernetes 提供了一个 API,它将存储交付方式与使用方式的细节隔离开来。
关于将持久性存储与 Kubernetes 集成,需要了解一些术语。 它们如下:
- 容器存储接口 (CSI) :这是一个标准,允许所有容器编排器与存储系统连接,例如 翁达 以一致的方式。 存储供应商应在 CSI 发布之前将其集成层直接写入 Kubernetes 源代码。 结果,升级既困难又耗时,因为任何缺陷都可能导致 Kubernetes 崩溃。
- 存储类 :管理员可以使用 Kubernetes 存储类预先定义 Kubernetes 用户将能够提供和附加到其应用程序的存储类型。
- 持久卷 (PV) :持久卷是已作为卷添加到集群中的虚拟存储实例。 PV 可以引用物理存储硬件或软件定义的存储,例如 Ondat。
- 持久卷声明 (PVC) :这是对提供某种类型和配置的存储的请求。
4.自我修复
Kubernetes 的自我修复能力是其最吸引人的特性之一。 如果容器化应用程序或应用程序组件出现故障,Kubernetes 将自动重新加载它。
Kubernetes 的编排功能可以根据需要监控和替换不健康的容器,具体取决于设置。 Pod 是封装单个或多个容器的最小单元,也可以由 Kubernetes 固定。
在自我修复过程中,复制控制器通过执行以下任务来确保应用程序的容错性或可用性。
- 如果容器发生故障,Kubernetes 会重新启动容器。
- 如果任何节点出现故障,Kubernetes 会重新调度其他节点上的容器。
- 如果容器没有响应客户端/用户,Kubernetes 会杀死容器。

5. 自动推出和回滚
5.1。 推出
企业的目标是使应用程序的停机时间为零,尽管开发人员希望更新应用程序的代码。 应用程序的更新被称为 推出. 这是在 Kubernetes 中使用滚动升级完成的。
通过使用新的 Pod 实例增量升级,滚动更新允许在零停机时间的情况下更新部署。 新的 Pod 将安排在有可用资源的节点上。

- 客户端使用新版本的 POD 进行更新,例如 V2。
- 在副本集中,只允许使用相同版本的 POD。 因此,Kubernetes 将创建副本集 2,其中将添加新版本 POD V2,并确保健康检查。 一旦 POD V2 运行良好,它将替换其中一个 POD V1。
- 它将遵循相同的原则,并将所有 POD V1 替换为 POD V2。
5.2. 回滚
当部署不稳定时,例如当它崩溃循环时,您可能需要回退部署。 默认情况下,系统会保存所有 Deployment 的推出历史记录,以便您随时回滚。
在上图中,POD V1 保存在历史记录中,以便在发现 POD V2 部署有任何问题时可以回滚。
6. 秘密和配置地图
6.1。 秘密
机密是一小段机密数据,例如密码、令牌或密钥。 或者,此类信息可能包含在 Pod 规范或容器映像中。
如果您使用 Secret,则不必在应用程序代码中包含机密数据。 在处理秘密时,有 两层 考虑。
必须先创建 secret,然后将其引入 pod。 与其将机密数据放在容器图片或 Pod 定义中,不如将其保密更安全、更具适应性。
6.2. 配置映射
ConfigMap 是键值对存储,是存储非机密数据的 API 对象。 Pod 可以将 ConfigMaps 用作环境变量、命令行参数或卷配置文件。
它允许您将特定于环境的配置与容器映像分离,从而使您可以简单地移植应用程序。
ConfigMaps 配置分为两个阶段。 第一步是制作 ConfigMap,然后将它们注入 pod。

7.水平缩放
当对工作负载的需求增加或减少时,Kubernetes 可以自动增加或减少为该作业提供服务的 Pod 副本的数量。
Horizontal Pod Autoscaler 在 Kubernetes 中实现为控制器和 API 资源。 控制器的行为由资源决定。
控制器会定期调整复制控制器或部署中的副本数量,以匹配观察到的指标,如平均 CPU 利用率、平均内存利用率或任何其他自定义统计数据与用户的目标。

8. 结论
在本文中,我们对 Kubernetes 的关键特性进行了概念性理解。 我们将在下一篇文章中深入探讨 Kubernetes 的其他核心概念,如 ETCD、Kube Controller Manager、Kube Scheduler 等。
阅读下一篇:
- 如何在 CentOS Linux 中使用 Minikube 安装 Kubernetes
- 在 RHEL、CentOS、AlmaLinux、Rocky Linux 中使用 Kubeadm 安装 Kubernetes 集群
- 如何在 Linux 中创建和管理 Kubernetes Pod
资源: