Kubernetes创建一个Pod的主要流程

  1. 客户端提交Pod的配置信息(可以是yaml文件定义的信息)到kube-apiserver。
  2. Apiserver收到指令后,通知给controller-manager创建一个资源对象。
  3. Controller-manager通过api-server将pod的配置信息存储到ETCD数据中心中。
  4. Kube-scheduler检测到pod信息会开始调度预选,会先过滤掉不符合Pod资源配置要求的节点,然后开始调度调优,主要是挑选出更适合运行pod的节点,然后将pod的资源配置单发送到node节点上的kubelet组件上。
  5. Kubelet根据scheduler发来的资源配置单运行pod,运行成功后,将pod的运行信息返回给scheduler,scheduler将返回的pod运行状况的信息存储到etcd数据中心。

Kubernetes Pod的常见调度方式

  1. Deployment或RC:该调度策略主要功能就是自动部署一个容器应用的多份副本,以及持续监控副本的数量,在集群内始终维持用户指定的副本数量。
  2. NodeSelector:定向调度,当需要手动指定将Pod调度到特定Node上,可以通过Node的标签(Label)和Pod的nodeSelector属性相匹配。
  3. NodeAffinity亲和性调度:亲和性调度机制极大的扩展了Pod的调度能力,目前有两种节点亲和力表达:
  4. requiredDuringSchedulingIgnoredDuringExecution:硬规则,必须满足指定的规则,调度器才可以调度Pod至Node上(类似nodeSelector,语法不同)。
  5. preferredDuringSchedulingIgnoredDuringExecution:软规则,优先调度至满足的Node的节点,但不强求,多个优先级规则还可以设置权重值。
  6. Taints和Tolerations(污点和容忍):
  7. Taint:使Node拒绝特定Pod运行;
  8. Toleration:为Pod的属性,表示Pod能容忍(运行)标注了Taint的Node。
作者:于浩  创建时间:2024-04-14 19:58
最后编辑:于浩  更新时间:2024-05-20 16:57