Kubernetes学习指北

一、 大纲

1. 了解基础概念

概念说明
Pod最小的调度单位,一个 Pod 可以包含一个或多个容器
NodeKubernetes 集群的工作节点
Deployment管理 Pod 的副本和升级策略
Service用于 Pod 间通信和对外暴露
ConfigMap / Secret配置和敏感信息管理
Volume数据卷,用于持久化数据
Namespace命名空间,多租户环境的逻辑隔离
Ingress对外 HTTP/HTTPS 流量管理
kube-apiserver、kube-scheduler、kube-controller-managerMaster 组件,负责调度、管理集群

2. 核心组件及职责 (必须的核心组件)

  1. kube-apiserver (API 服务器)
    • 作用:
      • 集群的 大脑入口
      • 负责 接收请求(kubectl、Dashboard、其他服务),然后转给 etcd 或控制器
      • 所有组件(scheduler、controller、kubelet)都通过它通信。
    • 像是办事大厅,所有人(开发、运维、调度器)都必须来这里递交申请。
  2. kube-scheduler (调度器) * 作用:
    • 负责 给 Pod 找宿主机。
    • 根据 资源情况(CPU、内存)、约束(亲和性、污点)、策略 来决定 Pod 放在哪个 Node 上。 * 像是一个 派单员,根据司机(Node)的空闲情况,把订单(Pod)分配给合适的人。
  3. kube-controller-manager (控制器管理器) * 作用:
    • 内部包含很多 控制器(controller),比如:
      • Deployment Controller:保证副本数量正确
      • Node Controller:监控节点状态。
      • Endpoint Controller:维护 Service → Pod 的映射。
    • 核心任务是:对比实际状态和期望状态,不断修正。 * 像是一个 巡检员,不停检查「理想状态」和「现实情况」是不是一致,如果发现差错,就赶紧修正。
  4. kubelet (节点代理)
    • 作用:
      • 跑在每个 Node 上的 代理。
      • 负责和 kube-apiserver 交互,接收“要运行哪些 Pod”。
      • 调用底层 容器运行时(containerd、CRI-O、Docker) 来真正启动容器。
      • 还会 汇报 Pod 和 Node 的运行状态。 * 像是 工地上的施工队长,接到上级(apiserver)的命令,就去调度工人(containerd)建房子(Pod)。
  5. etcd
    • 作用:
      • 分布式键值存储,保存集群的所有状态(Pod、Service、配置等)
  * 像是 工地上的施工队长,接到上级(apiserver)的命令,就去调度工人(containerd)建房子(Pod)
  1. 容器运行时(Container Runtime,如 containerd、CRI-O、DockerShim)
    • 作用:
      • kubelet 本身不会直接运行容器,它要依赖运行时。
      • 真正负责创建和运行容器的底层引擎。
    • 常见的有
      • containerd(最主流,K8s 默认推荐)
      • CRI-O(轻量化,专门为 K8s 服务)
      • Docker(以前常用,但现在 K8s 不直接依赖它了,而是通过 containerd) * 比喻:工人,真正搬砖盖房子(运行容器)。

3. 网络插件(通常必须)

  • Flannel / Calico / Cilium / Weave 等
  • 作用:
    • Kubernetes 默认不带跨节点网络,需要 CNI 插件:
    • 提供 Pod 跨节点通信的网络能力。
    • 在多节点集群中 必须(单节点集群不一定需要)

4. 常用工具

  1. kubectl
    • 集群客户端工具,用于执行命令、部署应用。
    • 从严格意义上来说 不是集群必须,但管理集群时必不可少。
  2. kubeadm
    • 安装和初始化 Kubernetes 的工具。
    • kubeadm init 的时候会用静态 Pod 的方式自动在 control-plane 节点上拉取(apiserver、scheduler、controller-manager、etcd)这些镜像并启动
    • 不是必须,也可以手动部署 K8s(kubeadm 只是简化安装)。

5. 环境搭建

  1. 方案 A:单机多节点学习(推荐)Kubernetes学习指北之单节点集群
  2. 方案 B:一键单机集群(开发学习) Kubernetes学习指北之单节点集群

6. 学习操作命令

  1. 安装 kubectl
  2. 常用命令:
    kubectl get nodes          # 查看节点
    kubectl get pods           # 查看 Pod
    kubectl get svc            # 查看服务
    kubectl describe pod POD   # 查看 Pod 详情
    kubectl logs POD           # 查看容器日志
    kubectl apply -f file.yaml # 创建资源
    kubectl delete -f file.yaml # 删除资源
    

7. 部署简单应用

8. 进阶

  • ConfigMap / Secret / Volume:学习如何管理配置和数据

  • Deployment / StatefulSet / DaemonSet:理解无状态和有状态应用部署

  • Ingress / NetworkPolicy:掌握流量和安全策略

  • Helm:学习用 Helm 管理复杂应用(如 MySQL、Redis、Consul、Kong)

9. 学习资源

  • 官方文档:https://kubernetes.io/zh/docs/