K8s详解

在云原生、微服务、DevOps 大行其道的今天,Kubernetes(简称 K8s) 已经成为后端、运维、架构师必须掌握的核心技能。不管是面试还是实际工作,不懂 K8s 都很难跟上现代技术节奏。

这篇文章我用通俗易懂、面试可直接背诵、工作能直接用的方式,把 K8s 讲透。读完这一篇,你就拥有了一套完整的 K8s 知识体系。


一、K8s 到底是什么?为什么要学?

1.1 名字由来

Kubernetes 来自希腊语,意思是舵手、领航员 。因为 K 和 s 之间有 8 个字母,所以简称为 K8s

1.2 它解决了什么问题?

在没有 K8s 之前:

  • 我们用 Docker 把应用打包成容器,解决了 "环境不一致" 的问题
  • 但容器一多(成百上千),就会出现一堆麻烦:
    • 容器挂了不会自动重启
    • 扩缩容要手动改脚本
    • Pod IP 会变,服务没法稳定访问
    • 跨机器部署、更新、回滚非常痛苦

K8s 就是容器集群的 "操作系统"。你只需要告诉 K8s:

  • 我要 3 个副本
  • 占用 2C4G 资源
  • 对外暴露 80 端口

剩下的调度、自愈、负载均衡、更新、回滚,全部由 K8s 自动完成。

一句话总结:Docker 让应用能跑,K8s 让应用在大规模集群里跑得稳、跑得爽。


二、K8s 核心架构:Master + Worker

K8s 采用经典的 主从架构

  • Master(控制平面):大脑,负责决策、调度、管理
  • Worker(工作节点):苦力,真正运行容器、提供资源

2.1 Master 组件(控制平面)

  1. kube-apiserver
    • 集群唯一入口
    • 所有组件都通过它通信
    • 负责认证、鉴权、REST 接口
  2. etcd
    • 分布式高可用键值存储
    • 保存集群所有状态和配置(唯一数据源)
  3. kube-scheduler
    • 调度器
    • 决定把 Pod 放到哪个节点运行
  4. kube-controller-manager
    • 控制器管理器
    • 循环检查:期望状态 vs 实际状态
    • 不一致就自动修复

2.2 Worker 组件(工作节点)

  1. kubelet
    • 节点代理
    • 跟 Master 通信,管理本机 Pod 生命周期
  2. kube-proxy
    • 网络代理
    • 维护 Service 规则,实现负载均衡
  3. 容器运行时
    • 真正运行容器:Docker、containerd 等
  4. CNI 网络插件
    • 如 Calico、Flannel
    • 让跨节点 Pod 可以互相通信

三、K8s 最核心资源对象(面试必背)

K8s 一切皆资源,所有操作都通过 YAML 声明。下面是最常用、必须掌握的对象。

3.1 Pod:最小调度单元

  • K8s 不直接管理容器 ,最小单位是 Pod
  • 一个 Pod 里可以有多个容器,共享网络和存储
  • 特点:短命、IP 不固定、不能直接对外提供服务

健康检查

  • livenessProbe:存活检查,挂了就重启
  • readinessProbe:就绪检查,没准备好就不转发流量

3.2 Deployment:无状态应用部署(用得最多)

用来管理无状态服务,实现:

  • 多副本运行
  • 滚动更新(不停机发布)
  • 一键回滚
  • 手动 / 自动扩缩容

适用:Nginx、Spring Boot、前端项目、微服务等。

3.3 StatefulSet:有状态应用

与 Deployment 区别:

  • 稳定的网络标识(固定 Pod 名)
  • 稳定的存储
  • 有序启动、删除、更新

适用:MySQL、Redis、Kafka、ZooKeeper 等。

3.4 DaemonSet:每个节点跑一个

保证集群每台机器都运行一个 Pod

适用:日志采集、监控代理、网络插件。

3.5 Service:稳定的服务入口

Pod IP 会变,Service 提供固定 IP + 固定域名,并自动负载均衡。

四种类型:

  1. ClusterIP:内部访问(默认)
  2. NodePort:节点端口,外部可访问(测试用)
  3. LoadBalancer:云厂商负载均衡(生产)
  4. ExternalName:映射外部服务

3.6 Ingress:7 层网关

Service 是 4 层(TCP/UDP),Ingress 是 7 层(HTTP/HTTPS):

  • 域名路由
  • 路径路由
  • HTTPS 证书
  • 虚拟主机

需要 Ingress Controller(如 Nginx Ingress)支持。

3.7 ConfigMap / Secret

  • ConfigMap:普通配置文件、环境变量
  • Secret:密码、密钥、Token 等敏感信息

3.8 PV / PVC:持久化存储

  • PV:集群级别的存储空间
  • PVC:Pod 申请使用的存储声明K8s 自动绑定,解耦应用与底层存储。

3.9 HPA:自动扩缩容

根据 CPU、内存、QPS 等指标,自动增减 Pod 数量

3.10 Namespace:资源隔离

逻辑分区,比如:dev、test、prod,实现多租户隔离。


四、K8s 核心工作原理:声明式 API

K8s 最牛的设计就是 声明式 API

  1. 你写 YAML,描述期望状态(我要 3 个 Pod)
  2. kubectl apply 提交给 apiserver
  3. 存入 etcd
  4. 控制器无限循环:
    • 对比 期望状态 vs 实际状态
    • 不一致就自动调谐

你只需要定义目标 ,不用关心怎么做。这就是 K8s 强大的根本原因。


五、K8s 核心特性(面试高频)

  1. 自愈:Pod 挂了自动重启,节点挂了自动迁移
  2. 水平扩缩容:一键扩容、自动扩容
  3. 滚动更新 & 回滚:不停机发布,出问题一键回去
  4. 服务发现与负载均衡:Service 固定访问入口
  5. 配置与代码分离:ConfigMap / Secret
  6. 存储编排:自动挂载各种存储
  7. 批量 / 定时任务:Job / CronJob

六、最常用 kubectl 命令(直接收藏)

复制代码
# 查看节点
kubectl get nodes

# 查看命名空间
kubectl get ns

# 查看 Pod/Deployment
kubectl get pods
kubectl get deploy

# 查看详情
kubectl describe pod <pod名>

# 查看日志
kubectl logs <pod名> -f

# 进入容器
kubectl exec -it <pod名> -- bash

# 应用/删除 YAML
kubectl apply -f xxx.yaml
kubectl delete -f xxx.yaml

# 扩缩容
kubectl scale deploy/xxx --replicas=5

# 查看更新历史 & 回滚
kubectl rollout history deploy/xxx
kubectl rollout undo deploy/xxx

七、K8s 应用场景

  • 微服务架构统一管理
  • 云原生应用全生命周期管理
  • CI/CD 流水线自动化部署
  • 大数据、AI 分布式任务调度
  • 混合云、多云、跨云部署
  • 边缘计算(K3s)

八、K8s 生态(云原生全景图)

  • 网络:Calico、Flannel、Cilium
  • 服务网格:Istio
  • 监控:Prometheus + Grafana
  • 日志:ELK、Loki
  • 存储:Ceph、MinIO
  • GitOps:Argo CD、Flux CD

九、总结(可直接当面试结尾)

Kubernetes 是云原生时代的操作系统 ,以声明式 API 为核心,通过 Master-Worker 架构实现容器的自动化部署、调度、自愈、扩缩容、滚动更新、负载均衡

它彻底解决了大规模容器集群的管理难题,是现代微服务、DevOps、云平台的基石。

对于后端开发、运维、测试来说:不懂 K8s,未来三年一定会被淘汰; 学好 K8s,就是握住了进入大厂、升职加薪的钥匙。

相关推荐
架构师老Y5 小时前
008、容器化部署:Docker与Python应用打包
python·容器·架构
handsomestWei8 小时前
Docker引擎API接入配置
运维·http·docker·容器·api
键盘鼓手苏苏11 小时前
Kubernetes与GitOps高级实践
云原生·kubernetes·k8
不是书本的小明11 小时前
K8S应用优化方向
网络·容器·kubernetes
andeyeluguo13 小时前
docker总结
运维·docker·容器
SuAluvfy13 小时前
从 0 到 1:在 Windows + Docker 环境下搭建 NextChat 并接入多模型 API(踩坑实录)
docker·容器
九英里路13 小时前
cpp容器——string模拟实现
java·前端·数据结构·c++·算法·容器·字符串
Aray123414 小时前
论Serverless架构模式及其应用实践
云原生·架构·serverless
AI攻城狮14 小时前
OpenClaw 本地内存检索与 node-llama-cpp 的依赖关系深度解析
人工智能·云原生·aigc
尘世壹俗人14 小时前
知识点8---虚拟化编排工具Kubernetes
容器·kubernetes