参考自:
12.简单懂点k8s组件(API server/Controller/Scheduler/kubelet/kube-proxy)
(第 2 讲)技术大牛讲透 Kubernetes 核心概念与 API 原语(讲师:李响)
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 (工作节点)
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集群中每个节点上的容器能够高效稳定地运行。
那我们再来看看这个如此繁忙的大管家每天都干了些什么工作:
Kubelet通过API server的watch机制,监听pod的变更事件。当有新的pod被分配到该节点或者pod的状态需要更新的时候,Kubelet就会获取最新的pod规范。
工作完成后,Kubelet还要定期向API server报告节点和pod的状态,包括运行状态、资源使用情况和健康状况。
Kubelet还需要与其他组件互动。例如,与Controller Manager的交互:Controller Manager通过API获取节点的状态信息,并根据这些信息作出调整决策,或者触发其他的控制逻辑,比如HPA(Horizontal Pod Autoscaler)。
Kubelet还要和Scheduler保持联系。例如,Scheduler通过API server将调度决策告知Kubelet,也就是将某个pod分配到具体的节点。Kubelet接收到调度指令之后,负责在本节点上启动和管理这个pod。
既然贵为”宰相”,这么多事情Kubelet一个人也干不完。怎么办呢?偌大的一个”宰相府”肯定得有很多的二级管家:
Pod Manager:主要管理节点上pod生命周期,包括创建、更新以及删除。
Runtime Manager:主要通过CRI(Container Runtime Interface)与容器运行时(例如containerd或者Docker)进行交互,负责容器的启动、停止以及管理。
Volume Manager:主要解决存储卷的挂载和卸载,确保pod访问持久化存储。
Network Plugin:主要使用CNI(Container Network Interface)插件配置pod的网络,确保网络隔离和通信。
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中去
原文链接: https://dashen.tech/2020/03/02/K8S中的组件/
版权声明: 转载请注明出处.