电子说
本文将介绍Kubernetes 的重要特性,这将有助于您更深入地了解 Kubernetes 的功能概念。
这是 Kubernetes 最显着的特性之一,Kubernetes 根据所需资源和其他限制条件智能地定位容器,而不会影响可用性。
Kubernetes 提供资源管理,它可以自动指定 Pod 中的每个容器如何消耗 CPU 和 RAM 等资源。
服务发现和负载均衡在 Kubernetes 中作为服务提供,服务以一致的方式跨集群将 Pod 连接到网络。确定如何连接到服务的过程称为服务发现。
容器的集合是 POD,具有相同功能集的 POD 被组合成一个集合,称为服务。
每个 POD 将被分配一个 IP 地址和单个 DNS 名称用于服务(POD 集),借助这种架构,Kubernetes 将对 POD 之间的网络和通信进行明确定义的控制,并且可以实现负载平衡。
在组成单个服务的实例集合前放置负载均衡器(反向代理,如 Nginx 或 HAProxy)是解决服务发现问题的常用技术。
负载平衡器的地址(DNS 名称,或者通常情况下是 IP)是一个相当可靠的数据,它可以在开发或配置阶段提供给客户端,并且可以在单个客户端的生命周期中保持不变。
之后,从客户端的角度来看,联系多实例服务与访问单个网络端点没有什么不同,换句话说,服务发现完全发生在服务器端。
用户可以使用 Kubernetes 挂载他们想要的任何存储系统,包括本地存储、公共云提供商等。仍然必须提供底层存储系统。
对于用户和管理人员,Kubernetes 提供了一个 API,它将存储交付方式与存储使用方式的细节隔离开来。
关于将持久性存储与 Kubernetes 集成,有几个术语需要理解。,它们如下:
Kubernetes 的自我修复能力是其最吸引人的功能之一,如果容器化应用程序或应用程序组件出现故障,Kubernetes 将自动重新加载它。
Kubernetes 的编排功能可以根据设置监控和替换不健康的容器,Pods 是封装单个或多个容器的最小单元,也可以由 Kubernetes 修复。
在自愈过程中,复制控制器通过执行以下任务来确保应用程序的容错或可用性。
尽管开发人员希望更新应用程序的代码,但企业的目标是使应用程序的停机时间为零。应用程序的更新称为rollout,这是在 Kubernetes 中使用滚动升级完成的。
通过使用新的 Pod 实例逐步升级,滚动更新允许在零停机时间的情况下更新部署,新的 Pod 将被安排在有可用资源的节点上。
当 Deployment 不稳定时,例如当它循环崩溃时,您可能需要回滚 Deployment。默认情况下,系统会保存所有 Deployment 的 rollout 历史,以便您可以随时回滚。
在上图中,POD V1 被保留在历史记录中,以便您在发现 POD V2 的部署有任何问题时可以回滚。
Secret是一小段机密数据,例如密码、令牌或密钥。或者,此类信息可能包含在 Pod 规范或容器映像中。
如果您使用 Secret,则不必在应用程序代码中包含机密数据,在处理Secret时,有两个层面需要考虑。
必须首先创建Secret,然后才能将其引入到 Pod 中,与其将机密数据放在容器图片或 Pod 定义中,不如将其保密更安全、更具适应性。
ConfigMap 是一个键值对存储,它是一个用于存储非机密数据的 API 对象,Pod 可以将 ConfigMap 用作环境变量、命令行参数或卷配置文件。
它允许您将特定于环境的配置与容器映像分离,从而允许您简单地移植应用程序。
ConfigMaps 的配置分为两个阶段,第一步是制作 ConfigMap,然后将它们注入到 pod 中。
当对工作负载的需求增加或减少时,Kubernetes 可以自动增加或减少为该作业提供服务的 pod 副本的数量。
Horizontal Pod Autoscaler 在 Kubernetes 中实现为控制器和 API 资源。控制器的行为由资源决定。
控制器定期调整复制控制器或部署中的副本数量,以将观察到的指标(如平均 CPU 利用率、平均内存利用率或任何其他自定义统计数据)与用户的目标相匹配。
在本文中,我们已经对 Kubernetes 的关键特性进行了概念性的理解。
全部0条评论
快来发表一下你的评论吧 !