Kubernetes(简称K8s)是当前云原生时代的容器编排标准,由Google基于其内部Borg系统经验开源,现由云原生计算基金会(CNCF)维护。它提供了一个自动化部署、扩展和管理容器化应用的平台。
一、Kubernetes 本质与价值
1.1 核心定位
- 容器编排系统:自动化管理容器生命周期
- 分布式操作系统:抽象底层基础设施
- 声明式配置引擎:通过YAML/JSON描述应用状态
1.2 核心价值
传统架构痛点 | Kubernetes解决方案 |
---|---|
手动部署效率低 | 自动化调度与部署 |
环境不一致 | 容器化标准环境 |
扩缩容响应慢 | 自动弹性伸缩(HPA/VPA) |
故障恢复依赖人工 | 自愈机制(健康检查+重启) |
资源利用率低 | 智能资源调度 |
二、核心架构设计
控制平面(Control Plane)
组件 | 核心职责 |
---|---|
kube-apiserver | 集群唯一入口,REST API服务 |
etcd | 分布式键值存储,保存集群所有状态数据 |
kube-scheduler | 决策Pod应该运行在哪个节点 |
kube-controller-manager | 运行各种控制器(Node/Deployment等) |
工作节点(Worker Node)
组件 | 核心功能 |
---|---|
kubelet | 节点代理,管理Pod生命周期 |
kube-proxy | 维护网络规则,实现Service网络通信 |
容器运行时 | 实际运行容器的引擎(containerd/CRI-O等) |
三、核心概念深度解析
3.1 Pod:最小部署单元
核心特性:
- 1个或多个共享资源的容器(IPC/Network/UTS namespace)
- 临时性存在(ephemeral)
- 原子调度单位
示例定义:
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx:1.21
ports:
- containerPort: 80
resources:
limits:
memory: "128Mi"
cpu: "500m"
3.2 Deployment:声明式更新
核心能力:
- 维护指定数量的Pod副本(ReplicaSet)
- 滚动更新/回滚
- 版本控制
典型配置:
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-app
spec:
replicas: 3
selector:
matchLabels:
app: web
strategy:
rollingUpdate: