k8s知识点
# 1、Kubernetes是什么?
Kubernetes 就是容器化应用的操作系统,是容器编排平台,用于自动部署、扩展和管理容器化应用程序。
类比传统操作系统:
传统 OS:管理 CPU、内存、硬盘、网络 → 运行进程
Kubernetes:管理服务器、存储、网络、容器 → 运行容器
主要功能包括:
- 容器编排:自动部署、扩展和管理容器
- 服务发现和负载均衡:通过 DNS 或 IP 地址自动发现容器,并在容器之间分配流量
- 存储编排:自动挂载存储系统
- 自动扩展:根据资源使用情况自动调整容器数量
- 自我修复:自动重启失败的容器,替换和重新调度节点上的容器
- 配置管理:集中管理配置信息,无需重建镜像
# 2、Kubernetes和Docker有什么区别?
简单一句话:Docker 造容器,K8s 管容器。
| 维度 | Docker | Kubernetes |
|---|---|---|
| 定位 | 容器运行时 | 容器编排平台 |
| 职责 | 打包、运行单个容器 | 管理成百上千个容器的部署、扩缩、自愈 |
| 类比 | 集装箱(单个) | 港口吊机+调度系统 |
| 范围 | 单机 | 集群(多台机器) |
# 部署相关
| 功能 | Docker | Kubernetes |
|---|---|---|
| 跨机器部署 | ❌ 需要手动 SSH 到每台机器 | ✅ 自动调度到合适节点 |
| 批量部署 | ❌ 需要写脚本循环执行 | ✅ 声明 replicas,一键部署 |
| 服务发现 | ❌ 需要手动配置或额外组件 | ✅ 内置 DNS,自动分配服务名 |
| 负载均衡 | ❌ 需要额外配置 Nginx/HAProxy | ✅ 内置 Service 自动负载均衡 |
# 运维相关
| 功能 | Docker | Kubernetes |
|---|---|---|
| 故障自愈 | ❌ 容器挂了需要人工重启 | ✅ 自动重启故障容器,自动迁移 |
| 自动扩缩容 | ❌ 流量来了需要手动扩容 | ✅ 基于 CPU/内存自动增减副本 |
| 滚动更新 | ❌ 需要自己写脚本实现 | ✅ 原生支持,零停机更新 |
| 一键回滚 | ❌ 需要手动停止、启动旧版本 | ✅ kubectl rollout undo 一键回滚 |
| 健康检查 | ❌ 需要自己实现探针 | ✅ 内置 liveness/readiness 探针 |
# 资源管理
| 功能 | Docker | Kubernetes |
|---|---|---|
| 资源限制 | ✅ --memory --cpus 可限制单容器 | ✅ 更精细的 request/limit 机制 |
| 多租户隔离 | ❌ 只有基础命名空间隔离 | ✅ Namespace + RBAC + 网络策略 |
| 资源利用率 | ⚠️ 单机静态分配 | ✅ 集群级动态调度,利用率更高 |
# 3、Kubernetes 的核心组件有哪些?
| 层级 | 组件 | 一句话职责 |
|---|---|---|
| Master | API Server | 所有操作的入口,认证授权 |
| etcd | 存储集群全部配置和状态 | |
| Scheduler | 决定新 Pod 放在哪个 Node | |
| Cloud Controller | 对接云厂商(LB/存储) | |
| Worker | kubelet | 节点管家,管理 Pod 生命周期 |
| kube-proxy | 网络代理,负载均衡 | |
| 容器运行时 | 实际拉镜像、启停容器 | |
| Addons | CoreDNS | 服务发现,域名解析 |
| Ingress | 七层路由,域名转发 | |
| Dashboard | Web UI 管理界面 | |
| Metrics Server | 采集 CPU/内存指标 |
# 4、什么是pod?有什么特点
Pod 是 Kubernetes 中一组紧密协作的容器的集合,它们是调度的最小单位,共享网络、存储和生命周期。
一个pod可以包含多个容器,共享网络、存储、命名空间,同生共死(唇寒齿亡)
| 特点 | 说明 | 为什么重要 |
|---|---|---|
| 最小调度单元 | 不能单独调度容器 | 统一管理,简化调度逻辑 |
| 共享网络 | 共享 IP 和 localhost | 高效进程间通信 |
| 共享存储 | 多个容器共用 Volume | 数据交换、日志收集 |
| 共享命名空间 | 可选 PID、IPC、UTS | 紧密协作的进程 |
| 同生共死 | 生命周期一致 | 简化运维,统一管理 |
| 原子调度 | 要么全在一个节点,要么都不在 | 保证协作容器不分离 |
# 5、什么是 Namespace?它的作用是什么?
Namespace 是 Kubernetes 中的"虚拟集群",用于将同一个物理集群划分为多个逻辑隔离的空间。
| 场景 | 没有 Namespace | 有 Namespace |
|---|---|---|
| 同名资源 | ❌ 冲突,不能共存 | ✅ 不同 Namespace 可共存 |
| 环境区分 | 需要手动加前缀(如 dev-app、prod-app) | 天然隔离 |
| 资源管理 | 混在一起,混乱 | 按团队/环境清晰划分 |
默认的 4 个 Namespace:
| Namespace | 作用 | 能不能删 |
|---|---|---|
| default | 用户创建的默认位置 | ❌ 不建议 |
| kube-system | Kubernetes 系统组件运行的地方 | ❌ 绝对不能删 |
| kube-public | 集群公共信息,所有用户可读 | ❌ 不建议 |
| kube-node-lease | 节点心跳信息,用于判断节点健康 | ❌ 不建议 |
Namespace 的限制(不能做什么):
| 不能隔离 | 说明 |
|---|---|
| 网络 | 不同 namespace 的 Pod 可以互相访问(除非配置网络策略) |
| 存储 | PV 是集群级别,可以被不同 namespace 的 PVC 使用 |
| 节点 | Node 是集群级别,不能被 namespace 独占 |
| ClusterRole | 集群级别的权限,不受 namespace 限制 |
如果要使用 Kubernetes 原生的 Namespace 进行网络隔离,普遍的做法是: 结合 CNI 网络插件,利用 NetworkPolicy(网络策略),如 Calico、Cilium、Weave 插件 来实现

# 6、什么是 Deployment?和 ReplicaSet有什么联系?
Deployment 管理 Pod 的数量和版本,确保"应该运行几个 Pod 就运行几个"
Deployment = 公司的人力资源部(管多少人、谁在岗)
Deployment功能
| 功能 | 说明 |
|---|---|
| 副本管理 | 声明 replicas: 3,K8s 会始终保持 3 个 Pod 在运行 |
| 滚动更新 | 从 v1 升级到 v2 时,一个接一个地替换,服务不中断 |
| 回滚 | 升级出问题,一键回到上一个版本 |
| 自愈 | Pod 挂了,自动创建新的 |
| 暂停/恢复 | 更新过程中可以暂停,观察没问题再继续 |
ReplicaSet 是确保指定数量的 Pod 副本始终运行的控制器。你可以把它理解为**"Pod 数量的守护者"。它只保证 Pod 的数量正确**。(没有那些回滚、自愈功能,所以Deployment 功能更强大)
Deployment 管版本和更新,ReplicaSet 管数量和存活,Pod 管运行和应用。
(Deployment 是经理,ReplicaSet 是组长,Pod 是员工。)
Deployment 是 ReplicaSet 的上级,我们只用 Deployment,让它去管理 ReplicaSet。
# 7、什么是 Service?
Service 给 Pod 一个固定的访问入口,不管 Pod 怎么变,IP 怎么换,入口不变
Service = 公司的前台总机(不管员工坐哪个工位,打电话找总机就能找到)
Service 的 4 种类型:
| 类型 | 说明 | 访问范围 | 使用场景 |
|---|---|---|---|
| ClusterIP | 默认类型,只有集群内部可访问 | 集群内部 | 服务之间的内部调用 |
| NodePort | 在每个节点上开放一个端口 | 集群外部(通过 :) | 开发测试、简单对外暴露 |
| LoadBalancer | 向云提供商申请负载均衡器 | 公网/外网 | 生产环境对外暴露服务 |
| ExternalName | 映射到外部域名 | 集群内部 | 调用外部服务 |
# 8、什么是 Ingress?它的作用是什么?
Ingress 是 Kubernetes 中用于管理外部访问的资源对象,通常用于 HTTP/HTTPS 流量。
作用:
- 解决 Service 无法直接对外暴露的问题
- 基于域名、路径的路由
- 可以配置 TLS 终止 (在 Ingress 层解密 HTTPS,用 HTTP 转发给 Pod,不用操心证书和解密)
- 负载均衡

常见的 Ingress Controller
| Controller | 特点 |
|---|---|
| Nginx Ingress | 最常用,性能好,功能丰富 |
| Traefik | 云原生,支持自动服务发现 |
| HAProxy Ingress | 性能极高,稳定性好 |