k8s学习笔记(一)-集群架构组件

118 阅读2分钟

学习文章:juejin.cn/post/729232…

image.png

一.master node组件(主控节点)

  • apiserver:集群同一入口,负责接受整个集群的所有内部请求.这里的请求并不是外界访问我们部署的应用的请求,以restful方式,交给etcd存储
  • scheduler:节点调度,负责将新创建的pod调度到合适的node上,它会考虑多种因素,以确保最后部署的Node是最佳选择

Node资源可用性,当前Node的资源情况,剩下多少CPUMemoryGPU资源等等

PodNode都可以设置亲和性和反亲和性规则,通过pod或者NodeAffinity字段实现,以便实现在调度的时候实现来偏好或者规避Nodepod

结点和容忍性,可以给结点设置污点Taints,表明它们不希望接受特定类型的pod,同时也可以设置容忍Tolerations规则,以接受具有特定污点的pod,它们分别通过Node.Spec.taintsPod.spec.tolerations字段来声明

其他因素:比如,节点的负载均衡,kube-scheduler会尽量保证各个节点的负载均衡,以确保不会过度分配负载到某些节点。以及数据的本地性,如果多个节点上有具有所需数据的podkube-scheduler会优先选择哪些本地数据更好的结点,以减少网络传输的需求等策略。

  • controller-manager:处理集群中常规后台任务,一个资源对应一个控制器
  • etcd:是一个分布式的Key-Value系统,它并不直接参与编排,而是负责维护集群的配置信息和状态,包括配置、各种对象的状态、服务定义等等

二.worker node(工作节点)

  • kubelet:的作用主要有两个,即确保容器在节点上正确运行和与Master节点进行通信
  • kube-proxy: 是集群每个Node上运行的网络代理,以确保Pod之间的通信,以及Pod和集群外部的通信是正常的,以及根据不同的负载均衡策略将请求分发给对应的后端Pod
  • container-Runtime:组件使得K8S拥有容器运行的环境和条件,从而能够有效运行容器。它负责管理K8S环境中容器的执行和生命周期。