K8S中的组件

参考自:

讲明白——K8S各核心架构组件

12.简单懂点k8s组件(API server/Controller/Scheduler/kubelet/kube-proxy)

(第 2 讲)技术大牛讲透 Kubernetes 核心概念与 API 原语(讲师:李响)

k8s 主要组件介绍



Master(也称 控制平面节点)




朝三(node)暮四(master)


### API Server

集群中所有资源的统一访问入口


Scheduler


将新创建的pod调度到合适的节点上

Controller


集群中所有资源对象的自动化控制中心;

Controller Manager有多种?

11种?

  • Replication Controller
  • Node Controller
  • ResourceQuota Controller
  • Namespace Controller
  • Service Controller - Endpoint Controller

etcd


保存集群中的所有资源对象的数据




Node (工作节点)



简单懂点k8s


kubelet


负责pod对应的容器的创建、启停等任务,同时与Master节点密切协作,实现集群管理的基本功能


K8S经验分享 | Kubelet这样讲,你应该能听懂了吧?

今天我们来聊一个Kubernetes集群中核心的组件。这个组件不在master节点,而是在node节点上。对于Kubernetes集群,我相信很多小伙伴并不陌生,也看到过很多类似Kubernetes的架构图。这张图不是我们今天的重点,不过我们的重点大管家是在这张图里面的。

OK,我们来通过一张图来认识一下这位神秘的大管家,它是Kubelet。Kubelet作为Kubernetes的核心组件,它扮演着节点上pod和容器管理的关键角色。它的工作职责涉及到多个方面。这张图就为我们形象地展示了Kubelet,就像古代的宰相般存在。宰相通常是皇帝的最高助手,负责执行皇帝的命令并管理日常的政务。

首先,Kubelet接收来自API server(也就是”皇帝”)的命令,去执行pod的创建、更新、删除以及其他操作。Kubelet作为”宰相”,负责监控节点上pod和容器的状态,确保它们按照预期运行,并处理容器的生命周期。简而言之,就是承上启下。Kubelet向上层的API server报告节点的状态和健康信息,同时也向下层的容器运行时发送指令。通过这个特殊的岗位,Kubelet确保了Kubernetes集群中每个节点上的容器能够高效稳定地运行。

那我们再来看看这个如此繁忙的大管家每天都干了些什么工作:

  1. Kubelet通过API server的watch机制,监听pod的变更事件。当有新的pod被分配到该节点或者pod的状态需要更新的时候,Kubelet就会获取最新的pod规范。

  2. 工作完成后,Kubelet还要定期向API server报告节点和pod的状态,包括运行状态、资源使用情况和健康状况。

  3. Kubelet还需要与其他组件互动。例如,与Controller Manager的交互:Controller Manager通过API获取节点的状态信息,并根据这些信息作出调整决策,或者触发其他的控制逻辑,比如HPA(Horizontal Pod Autoscaler)。

  4. Kubelet还要和Scheduler保持联系。例如,Scheduler通过API server将调度决策告知Kubelet,也就是将某个pod分配到具体的节点。Kubelet接收到调度指令之后,负责在本节点上启动和管理这个pod。

既然贵为”宰相”,这么多事情Kubelet一个人也干不完。怎么办呢?偌大的一个”宰相府”肯定得有很多的二级管家:

  1. Pod Manager:主要管理节点上pod生命周期,包括创建、更新以及删除。

  2. Runtime Manager:主要通过CRI(Container Runtime Interface)与容器运行时(例如containerd或者Docker)进行交互,负责容器的启动、停止以及管理。

  3. Volume Manager:主要解决存储卷的挂载和卸载,确保pod访问持久化存储。

  4. Network Plugin:主要使用CNI(Container Network Interface)插件配置pod的网络,确保网络隔离和通信。

  5. Probe:主要执行健康检查探针,监控pod和容器的健康状态。

在下面,我们看到了CRI这个二级管家。老的Docker管家到了退休的年龄,新的CRI管家containerd继续接手,来执行容器的创建、运行和销毁这样一个动作。最底层的CNI管家与网络插件交互,负责为pod分配IP、配置网络接口,实现网络策略和隔离。

好啦,今天的Kubelet”宰相”故事就结束了。大家有没有get到?在短视频领域,七哥还是小白,期待各位的指正和扶持。感谢大家!

kube-proxy


将对service的访问转发到后端的一组pod上


Container Runtime(有的不认为是组件)


容器运行时是负责运行容器的软件,k8s支持许多容器运行时,最常用的是docker




几个核心概念


Pod



Volume



Deployment



Service


负载均衡(一个pod类似一台机器,service类似一个vip)

Service支持多种方式的组网


Namespaces



推荐安装的扩展插件


  • CoreDNS
  • CNI网络插件(Calico或者flanel等)

Overlay Network 即 覆盖网络,集群中的Pod通过Overlay Network 可以实现寻址和通信,常见的实现覆盖网络的技术有Flannel/VxLan/Calico/Weave-Net等

外网流量通过LB之后,通过kube-proxy到某个Pod中去

杨波-Kubernetes基本概念和应用