0%

k8s学习笔记

资料

基本概念

minikube

  • 一种本地部署k8s集群的方案, 底层使用docker/qemu/VirtualBox等驱动
  • 使用docker时, 使用了Docker in Docker 的方案, 在docker内部再拉起一个dockerd

k8s概念

  • kubectl: 一个工具, 把各种命令转换为http 请求, 转发给kube-apiserver, 并将结果反向转换
  • 控制平面(Control plane) : k8s集群的管理和调度
  • 节点(Node): 具体运行某个进程的机器/虚拟机, 部署了k8s控制需要的进程
  • Pod: k8s调度的最小单位, 由一个或者多个容器构成, 单个pod在单个node上运行, 可以通过localhost互相访问
  • ReplicaSet: 确保指定数量的 Pod 副本(Replicas)始终在集群中运行, 挂掉的自动拉起, 多出的自动删除, 一般由Deployment管理
  • Deployment: 提供声明式的 Pod 部署管理,支持滚动更新、版本回滚、暂停/恢复更新等高级功能, Deployment 是比 ReplicaSet 更高层的抽象,封装了 ReplicaSet 的创建和更新逻辑
    • Deployment 通过创建和管理多个 ReplicaSet 来实现版本控制。每次更新会生成一个新 ReplicaSet,旧 ReplicaSet 默认保留以供回滚
  • Service: 为 pod 提供一个稳定的 Endpoint, Service 位于 pod 的前面,负责接收请求并将它们传递给它后面的所有pod

k8s控制平面(Control plane components )

  • k8s集群的管理和调度

kube-apiserver

  • 控制面的管理入口, 接受http请求

etcd

  • k8s自身的数据存储

kube-scheduler

  • k8s的决策调度核心, 负责决策哪些pod要到那些node上运行等逻辑

kube-controller-manager

  • 负责运行控制器进程, 各种控制器都在这里, 常见的有:
    • Node Controller : 负责监控node截图, 故障时通知
    • ReplicaSet Coltroller: 负责确保 Deployment 或 ReplicaSet 指定的 Pod 副本数始终符合预期,自动创建或删除 Pod
    • Deployment Coltroller: 管理 Deployment 的生命周期(如滚动更新、回滚),通过控制 ReplicaSet 实现应用的无缝升级
    • Service Account Controller: 为每个命名空间创建默认服务账户,并确保其 Token 和配置存在。
    • Endpoint Controller: 维护 Service 与 Pod 的关联关系,动态更新 Endpoints 对象以反映当前匹配的 Pod IP 和端口。
    • Job/CronJob: 执行一次性任务(Job)或定时任务(CronJob),确保任务按预期完成或周期性运
    • PersistentVolume Controller: 绑定 PersistentVolume(PV)与 PersistentVolumeClaim(PVC),处理存储卷的生命周期(如创建/删除云存储)
    • DaemonSet Controller: 确保每个符合条件的节点运行一个指定的 Pod(如日志收集组件)。
    • StatefulSet Controller: 管理有状态应用的部署,保障 Pod 的唯一性、有序性和稳定的网络标识及存储

cloud-controller-manager

  • 云平台定制的一些控制器

节点和节点组件(Node components)

  • node 是具体负责运行进程的某个机器/虚拟机

kubelet

  • 接收一组通过各类机制提供给它的 PodSpec,确保这些 PodSpec 中描述的容器处于运行状态且健康

kube-proxy

  • 集群中每个节点(node)上所运行的网络代理, 实现service网络通信

Container runtime

  • 容器运行时, 符合CRI的容器实现