一、Kubernetes 是什么
K8s(希腊语「舵手」)是可移植、可扩展的开源平台,用于管理容器化工作负载,
核心思想是声明式配置与自动化:你描述「想要什么」,它负责「做到」。
管理规模上限:单节点 ≤ 110 个 Pod,集群 ≤ 5000 节点,Pod 总数 ≤ 15 万。
二、核心组件
控制平面(Master):
kube-apiserver 集群唯一入口,接收并校验所有请求
etcd 分布式键值存储(基于 Raft),保存全部集群状态
kube-controller-manager 运行各类控制器,维持期望副本数
kube-scheduler 决定 Pod 调度到哪个节点
工作节点(Node):
kubelet 节点守护进程,确保容器处于期望状态
kube-proxy 维护 iptables/ipvs 规则,实现 Service 转发
容器运行时(CRI) 实际拉镜像、跑容器(containerd / Docker)
三、Pod 与网络
Pod 是最小调度单位,包含一个 pause 容器 + 若干业务容器,
组内共享 IP、网络、存储卷与生命周期。
Pod 为什么先启动 pause 容器:初始化网络栈、挂载存储卷、回收僵尸进程;
业务容器统一与 pause 共享 Network / PID / IPC 命名空间。
Pod 常见状态:
Running 正常运行
Pending 调度/拉镜像中(资源不足、镜像未就绪)
ContainerCreating 容器创建中
CrashLoopBackOff 反复崩溃重启(应用代码或启动命令有误)
ImagePullBackOff 镜像拉取失败(名字写错、仓库不可达、离线没镜像)
Completed 任务型 Pod 正常结束
Evicted 节点资源不足被驱逐
四、常用工作负载
Deployment 管理无状态应用:滚动更新 + 自动回滚
ReplicaSet 维持指定数量的 Pod 副本(通常由 Deployment 托管)
StatefulSet 有状态应用:稳定网络标识、有序启停、独立存储
DaemonSet 每个节点运行一个:日志采集、监控代理
Job/CronJob 一次性任务 / 定时任务
五、Service 与 Ingress
Service 为 Pod 提供稳定的访问入口:
ClusterIP 集群内部访问(默认)
NodePort 每个节点上开放指定端口
LoadBalancer 云厂商负载均衡
ExternalName 映射到外部域名
Ingress 是七层(HTTP/HTTPS)入口,按域名与路径把流量转发到不同 Service,
通常配合 ingress-nginx 控制器使用。
六、存储与配置
Volume 类型:emptyDir(临时)、hostPath(宿主机目录)、configMap/secret、
PVC(持久卷声明,需配合 StorageClass 动态供给)。
ConfigMap 存非敏感配置,Secret 存密码/证书(base64 编码,注意其并非加密)。
资源限制:每个容器可声明 requests(调度依据)与 limits(硬上限),
CPU 单位 500m = 半个核,内存单位 Mi / Gi。
七、排障三板斧
第 1 步:kubectl get pods -o wide # 看状态与所在节点
第 2 步:kubectl describe pod 名称 # 重点看 Events 事件
第 3 步:kubectl logs pod名称 [-c 容器] # 看应用日志
进容器排查:kubectl exec -it pod名称 -- bash
常用:kubectl get all、kubectl get svc、kubectl top pod、kubectl apply -f、kubectl delete -f。
评论
0 条