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,就是握住了进入大厂、升职加薪的钥匙。

相关推荐
恋红尘1 小时前
K8S 高级调度-叩丁狼
adb·容器·kubernetes
恋红尘2 小时前
K8S 控制器-资源调度-叩丁狼
linux·docker·kubernetes
Stewie1213813 小时前
Docker 面试题
运维·docker·容器
vpk11214 小时前
Docker Compose 安装 Redis
redis·docker·容器
没有bug.的程序员15 小时前
Serverless 弹性扩容引发的全线熔断:Spring Boot 启动耗时从 1s 压缩至 0.3s 的物理级绞杀
java·spring boot·kubernetes·serverless·扩容·线上
last demo16 小时前
Docker-compose和图形界面管理
docker·容器·eureka
好像不对劲17 小时前
【docker】win10 wsl docker不能挂GPU
运维·docker·容器·wsl
Bonnie37318 小时前
云边端一体化解析-什么是云边端,为何能成为AI基础设施核心
人工智能·程序人生·云原生·个人开发
江畔何人初18 小时前
Docker、containerd、CRI、shim 之间的关系
运维·docker·云原生·容器·kubernetes