什么是 Kubernetes 集群?

发布日期 2020年3月18日
多台打开的笔记本电脑在橙色背景上对角排列的图案,具有重复的间距和阴影
By Sai Vennam

Kubernetes 集群定义

Kubernetes 集群是一组计算节点(可为虚拟机或物理机),用于运行由 Kubernetes 容器编排平台管理的容器化应用。

云计算为企业带来了诸多优势,包括灵活性、敏捷性、可移植性与成本可控性。但与此同时,云计算环境的管理以及云上应用的交付工作也随之变得更为复杂。Kubernetes 作为一款容器编排平台,能够助力企业化解这些复杂难题。

集群是 Kubernetes 实现功能的架构基础。我们可以将集群视作基础组件,借助这些组件能够实现云应用的快速、可控交付。一个 Kubernetes 集群是一组互联的机器,它们协同工作,构成一个统一的整体。集群由工作节点组成,工作节点作为计算主机,可用于部署、运行和管理容器化应用。工作节点由控制节点进行管理,控制节点会根据可用资源容量以及用户自定义配置,决定容器在哪些工作节点上部署,从而完成容器的调度工作。

脚本会定义容器配置以及运行应用所需的资源,例如持久化存储、服务等。在 Kubernetes 中,Pod 是集群里最小的可部署单元,它会将必须作为一个整体进行管理的多个容器组合在一起。Kubernetes 会创建 Pod 来承载应用实例。一个 Pod 可包含一个或多个应用容器,且这些容器会共享存储、网络信息等资源。

向 Kubernetes 编排演变

容器的出现简化了云计算容器会将代码及其所有依赖项打包在一起,确保软件栈无论在何种环境下都能稳定运行。尽管容器实现了应用的独立打包,但同时也带来了管理层面的复杂性。当时的核心挑战,是找到一种能让这些高效、轻量的软件包协同工作的方法。而容器编排技术,正是为简化混合云环境管理而出现的下一代技术演进方向。

如需深入了解容器化技术,可观看视频《容器化技术详解》

若想获取容器编排的更多背景知识,敬请查看视频《容器编排技术详解》。(ibm.com 外部链接)

Kubernetes 提供了一套开源平台,用于管理容器化工作负载与微服务(ibm.com 外部链接)。借助该平台,开发人员能够通过为容器化应用制定全域统一的标准与规范,消除不同云服务商之间的技术差异。这一平台以容器为核心,可对存储、网络及计算资源进行编排,从而为用户的业务负载提供支撑。

借助 Kubernetes,用户可以专注于开发云应用所需实现的功能,无需再为构建特定平台的适配能力投入精力。而这一能力的实现,正是依托于底层的 Kubernetes 架构

如需深入了解 Kubernetes 的容器编排功能,可查阅文章《Kubernetes 与 Docker 对比:不是非此即彼》

 

Kubernetes 集群架构

Kubernetes 集群是 Kubernetes 的构建组件,也是该平台的架构根基。这种构建式架构设计具备模块化特性,能够为平台赋予高可用性、可扩展性与便捷部署能力。

如今的工作负载对应用与基础设施两层均提出了高可用性要求。Kubernetes 通过在应用和底层基础设施之间构建一层抽象层,实现了工作负载在可用资源上的高效分发。该平台借助持续的节点与容器健康检查机制,防范应用故障的发生。一旦某个容器出现宕机,自愈与副本复制功能会自动对故障进行修复。内置的负载均衡器可将业务负载分配至空闲资源,从而减轻流量激增、高峰或服务中断带来的影响。

这种高效的资源利用模式同样适用于弹性伸缩场景。新增或移除服务器的操作被大幅简化,可实现无缝的水平扩展。自动化伸缩功能会根据预设指标,动态增加运行中的容器数量。副本控制机制则会进行反向调节:当运行的 Pod 数量过多时终止多余实例,数量不足时则启动新的 Pod 补充。

如需深入探究 Kubernetes 的架构原理,可观看以下视频《Kubernetes 技术详解》。

观看视频

速度对开发人员至关重要。Kubernetes 的设计旨在适应软件的快速构建、测试和发布。新版本或更新版本可通过自动化发布流程完成全量推送。该功能同样适用于金丝雀发布场景,支持新版本与旧版本并行部署运行,在全面投产前验证新版本的可靠性。

通过 Prometheus 进行 Kubernetes 集群监控

随着容器化应用的颗粒度愈发精细、独立性不断增强,监控工作也随之成为一大难题。这一挑战同样延伸至 Kubernetes 集群监控领域。传统监控的核心指标,仅能判断程序、服务或工具处于运行(正常)或宕机(异常)状态。但对于微服务架构而言,这种“非黑即白”的监控方式过于粗糙,毕竟单个功能微服务的宕机,未必会对业务造成实际影响。因此,现代化监控工具必须具备更精细化的状态判别能力,并能与各类异构平台及动态变化的应用实现更深度的集成。

Prometheus 是一款开源的日志、监控及告警工具,专为多云环境的可移植性与动态变化特性设计,能够突破传统监控工具的局限性。它可从 Kubernetes 集群、工作节点及部署任务中采集多维度的丰富指标数据。Prometheus 采用键值对格式,与 Kubernetes 的元数据组织方式高度适配。同时,该工具支持定期拉取数据并自动发现监控目标,非常适用于应对生命周期短暂的临时工作负载。

IBM DevOps

什么是 DevOps?

Andrea Crawford 阐述了什么是开发运维、开发运维的价值,以及开发运维实践和工具如何帮助您完成从应用程序构思到生产的整个软件交付管道。本课程由 IBM 资深思想领袖主导,旨在帮助企业领导者获得所需的知识,以优先考虑能够推动增长的 AI 投资。

作者

Sai Vennam

Technical Offering Manager

相关解决方案
IBM Instana Observability

利用 AI 和自动化的强大功能,主动解决整个应用程序堆栈中的问题。

深入了解 IBM Instana Observability
DevOps 解决方案

使用开发运维软件和工具,在多种设备和环境中构建、部署和管理云原生应用程序。

探索 DevOps 解决方案
云咨询服务

通过我们的云咨询服务持续实现应用现代化,加速业务敏捷性与增长——支持任意平台部署。

深入了解我们的云咨询服务
采取后续步骤

从 IBM Instana® 的主动问题检测到跨堆栈实时洞察,让云原生应用程序保持高可靠运行。

  1. 了解 IBM Instana
  2. 探索 DevOps 解决方案