本文将介绍Kubernetes 的重要特性,这将有助于您更深入地了解 Kubernetes 的功能概念。
-
- 自动装箱
-
- 服务发现和负载均衡
-
- 存储编排
-
- 自愈
-
- 自动推出和回滚
- 5.1. 推出
- 5.2. 回滚
-
- Secret和配置映射
- 6.1. Secret
- 6.2. 配置映射
-
- 水平缩放
-
- 结论
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):它是一个标准,允许所有容器编排器以一致的方式连接存储系统,例如Ondat。存储供应商应该在 CSI 发布之前将他们的集成层直接写入 Kubernetes 源代码。因此,升级既困难又耗时,因为任何缺陷都可能导致 Kubernetes 崩溃。
- 存储类:管理员可以预先定义 Kubernetes 用户能够使用 Kubernetes 存储类提供和附加到他们的应用程序的存储类型。
- 持久卷 (PV):持久卷是已作为卷添加到集群中的虚拟存储实例。PV可以引用物理存储硬件或软件定义的存储,例如Ondat。
- 持久卷声明 (PVC):这是对要供应的某种类型和配置的存储的请求。
4. 自愈
Kubernetes 的自我修复能力是其最吸引人的功能之一,如果容器化应用程序或应用程序组件出现故障,Kubernetes 将自动重新加载它。
Kubernetes 的编排功能可以根据设置监控和替换不健康的容器,Pods 是封装单个或多个容器的最小单元,也可以由 Kubernetes 修复。
在自愈过程中,复制控制器通过执行以下任务来确保应用程序的容错或可用性。
- 如果容器出现故障,Kubernetes 会重新启动容器。
- 如果任何节点出现故障,Kubernetes 会重新安排其他节点上的容器。
- 如果容器没有响应客户端/用户,Kubernetes 会终止容器。
5. 自动推出和回滚
5.1. 推出
尽管开发人员希望更新应用程序的代码,但企业的目标是使应用程序的停机时间为零。应用程序的更新称为rollout,这是在 Kubernetes 中使用滚动升级完成的。
通过使用新的 Pod 实例逐步升级,滚动更新允许在零停机时间的情况下更新部署,新的 Pod 将被安排在有可用资源的节点上。
- 客户端使用新版本的 POD 进行更新,例如 V2。
- 在一个副本集中,只允许使用相同版本的 POD,因此,Kubernetes 将创建副本集 2,其中将添加新版本的 POD V2,并确保健康检查,一旦 POD V2 运行良好,它将取代其中一个 POD V1。
- 它将遵循相同的规则并将所有 POD V1 替换为 POD V2。
5.2. 回滚
当 Deployment 不稳定时,例如当它循环崩溃时,您可能需要回滚 Deployment。默认情况下,系统会保存所有 Deployment 的 rollout 历史,以便您可以随时回滚。
在上图中,POD V1 被保留在历史记录中,以便您在发现 POD V2 的部署有任何问题时可以回滚。
6. Secret和配置映射
6.1. Secret
Secret是一小段机密数据,例如密码、令牌或密钥。或者,此类信息可能包含在 Pod 规范或容器映像中。
如果您使用 Secret,则不必在应用程序代码中包含机密数据,在处理Secret时,有两个层面需要考虑。
必须首先创建Secret,然后才能将其引入到 Pod 中,与其将机密数据放在容器图片或 Pod 定义中,不如将其保密更安全、更具适应性。
6.2. 配置映射
ConfigMap 是一个键值对存储,它是一个用于存储非机密数据的 API 对象,Pod 可以将 ConfigMap 用作环境变量、命令行参数或卷配置文件。
它允许您将特定于环境的配置与容器映像分离,从而允许您简单地移植应用程序。
ConfigMaps 的配置分为两个阶段,第一步是制作 ConfigMap,然后将它们注入到 pod 中。
7. 水平缩放
当对工作负载的需求增加或减少时,Kubernetes 可以自动增加或减少为该作业提供服务的 pod 副本的数量。
Horizontal Pod Autoscaler 在 Kubernetes 中实现为控制器和 API 资源。控制器的行为由资源决定。
控制器定期调整复制控制器或部署中的副本数量,以将观察到的指标(如平均 CPU 利用率、平均内存利用率或任何其他自定义统计数据)与用户的目标相匹配。
8. 结论
在本文中,我们已经对 Kubernetes 的关键特性进行了概念性的理解。
-
cpu
+关注
关注
68文章
10794浏览量
210666 -
Linux
+关注
关注
87文章
11191浏览量
208628 -
kubernetes
+关注
关注
0文章
223浏览量
8681
发布评论请先 登录
相关推荐
评论