k8s简介
~
核心理念
Kubernetes 是一个开源的容器编排系统,用于自动化容器化应用程序的部署、扩展和管理。你可以把它想象成一个管理容器的“大脑”或“操作系统”。
它解决了什么问题?
在容器技术(如 Docker)普及后,大家发现:
- 管理大量容器困难: 手动部署、连接、监控成百上千个容器效率低下,容易出错。
- 高可用性和扩展性需求: 应用需要能处理故障和流量波动。
- 资源优化: 需要有效利用服务器资源。
- 网络和服务发现复杂: 容器间如何互相通信是个挑战。
- 配置和版本管理: 部署和更新应用程序及其配置需要标准化流程。
Kubernetes 就是为了自动化解决这些问题而生的。
关键特性与能力
- 服务发现与负载均衡: 自动为容器分配网络地址,并将流量分配到健康的容器实例上。
- 存储编排: 可以自动挂载用户选择的存储系统(如本地存储、公有云存储、网络存储系统)。
- 自动部署和回滚: 可以定义应用的期望状态(使用声明式配置),K8s 会自动将系统调整到这个状态。如果部署出现问题,可以轻松回滚到之前的版本。
- 自动伸缩: 根据 CPU 使用率或其他自定义指标,自动增加或减少运行的容器数量。
- 自我修复: 能自动重启失败的容器、替换节点(服务器)、杀死不响应用户健康检查的容器。
- 密钥与配置管理: 安全地存储和管理敏感信息(如密码、OAuth token、SSH 密钥)以及应用的配置信息,无需将它们硬编码进容器镜像。
- 批处理执行: 除了管理长期运行的服务(Deployment),也支持一次性任务和定时任务(Job, CronJob)。
核心架构概念
Kubernetes 遵循客户端-服务器架构:
- 控制平面 (Control Plane / Master Node): 集群的“大脑”。
kube-apiserver
: 集群的前端接口,所有交互入口。etcd
: 高度可靠的一致性键值数据库,存储集群的所有状态数据。kube-scheduler
: 负责决定新创建的容器放到哪个节点上运行。kube-controller-manager
: 运行各种控制器(如节点控制器、副本控制器),确保集群实际状态符合用户声明的期望状态。cloud-controller-manager
: (可选) 与云服务商(如 AWS, Azure, GCP)的特定集成。
- 节点 (Nodes / Worker Nodes): 实际运行容器的机器。
kubelet
: 节点上的代理,负责与管理平面通信,确保节点上容器的正常运行。kube-proxy
: 实现 Kubernetes 网络服务,处理节点上的网络规则和流量转发。- 容器运行时: 负责运行容器的软件,如 Docker, containerd, CRI-O。
Kubernetes 对象
Kubernetes 通过操作 API 对象
来管理集群。这些对象描述了集群的期望状态:
- Pod: Kubernetes 管理的最小可部署单元。通常包含一个或多个紧密协作的容器(共享网络和存储)。是 Kubernetes 调度和执行的基本单位。
- Deployment: 管理 Pod 副本集的主要对象。声明了 Pod 的期望状态,并处理滚动更新、回滚和扩缩容。
- Service: 为一组功能相同的 Pod 提供稳定的网络端点(IP地址/DNS名称)和负载均衡。定义了应用的访问方式。
- ConfigMap / Secret: 分别用于存储非敏感和敏感的配置信息,并注入到 Pod 中使用。
- Volume: 为 Pod 中的容器提供持久化的或临时的存储。
- Namespace: 提供逻辑上的集群资源隔离(虚拟集群),常用于区分环境(dev/test/prod)或团队。
主要优势
- 提高效率: 自动化运维任务,让开发者专注于核心业务逻辑。
- 提升弹性和高可用: 自动故障恢复和无缝滚动更新确保服务连续性。
- 资源利用率高: 通过细粒度的容器调度优化服务器资源使用。
- 可移植性: 应用部署不再锁定特定基础设施。可在本地数据中心、公有云、混合云甚至边缘计算环境中运行,使用相同的 API 和工具管理(“写一次,随处运行”的运维层实现)。
- 标准化部署模型: 提供一致的、声明式的部署和管理体验。
- 支持微服务架构: 天然适合管理由多个松散耦合的微服务组成的复杂应用。
- 庞大且活跃的生态系统: 丰富的工具和扩展可选。
总结
Kubernetes 已经成为容器编排领域的 事实标准。它通过强大的自动化能力,解决了大规模容器化应用的管理难题,使得应用的部署、伸缩、管理和运维变得更加高效、可靠和标准化。无论是初创公司还是大型企业,在构建云原生应用时,Kubernetes 都是一个不可或缺的核心基础设施组件。
简单来说:Kubernetes 帮助你轻松管理和运行成百上千个容器化应用,保证它们健康、可扩展,并帮你省时省力省钱。