Kubernetes 概念
Kubernetes(简称 K8s)是一个用于自动化部署、扩缩容和运维容器化应用的平台。
它通过声明式 API 把“应用应该处于什么状态”交给系统持续收敛,减少人工运维成本。
1. Kubernetes 是什么
- 核心思想:声明式配置 + 控制器循环(Control Loop)。
- 典型收益:
- 统一应用部署方式(YAML/API)。
- 支持滚动发布、自动恢复、弹性伸缩。
- 将应用运行时与底层机器解耦。
2. 核心架构
控制平面(Control Plane)
kube-apiserver:集群统一入口,所有操作都经由 API Server。etcd:保存集群状态的键值存储。kube-scheduler:为新 Pod 选择合适节点。kube-controller-manager:运行 Deployment/Node/Job 等控制器,持续对齐“期望状态”。
工作节点(Worker Node)
kubelet:负责节点上 Pod 的生命周期管理。container runtime(如containerd):实际运行容器。kube-proxy:实现 Service 转发与负载均衡规则。
3. 对象模型(常用资源)
Pod:最小调度单元,通常包含一个或多个紧耦合容器。Deployment:无状态应用管理,支持滚动更新与回滚。StatefulSet:有状态应用管理,强调稳定网络标识与持久存储。DaemonSet:在每个(或指定)节点上运行一个 Pod 副本。Job/CronJob:一次性任务与定时任务。Service:稳定访问入口,解耦 Pod IP 变化。Ingress:七层流量入口(域名/路径路由)。ConfigMap/Secret:配置与敏感信息管理。
4. 网络与服务发现
- 每个 Pod 都有独立 IP(由 CNI 负责实现)。
Service提供稳定虚拟 IP 和服务发现能力。- CoreDNS 提供集群内 DNS 解析(例如
svc.namespace.svc.cluster.local)。 - 常见 Service 类型:
ClusterIP:集群内部访问。NodePort:通过节点端口对外暴露。LoadBalancer:依赖云厂商负载均衡。
5. 调度与资源管理
requests/limits:定义容器资源请求与上限。- QoS 类别:
Guaranteed/Burstable/BestEffort。 taints/tolerations:控制“哪些 Pod 能调度到哪些节点”。nodeSelector/affinity:按标签和亲和性做调度约束。- 自动伸缩:
HPA(按指标扩缩容副本数)。
6. 应用生命周期
- 健康检查:
livenessProbe:判断是否需要重启容器。readinessProbe:决定是否接收流量。startupProbe:给慢启动应用预热时间。
- 发布策略:
RollingUpdate(默认滚动发布)。Recreate(先删后建)。
- 观测入口:
kubectl get/describe看资源状态与事件。kubectl logs看容器日志。kubectl top看资源使用(需 metrics-server)。
7. 学习路径建议
- 先掌握对象模型:
Pod、Deployment、Service。 - 再理解 Pod 生命周期与资源治理:探针、重启策略、requests/limits、优雅终止。
- 学习工作负载控制器:ReplicaSet/Deployment、StatefulSet/DaemonSet、Job/CronJob。
- 最后进入集群搭建与运维:kubeadm 安装、升级、备份与排障。