整体架构

控制

kubeapiserver

Kubernetes API 服务器验证配置 API 对象数据, 这些对象包括 podsservicesreplicationcontrollers 等。 API 服务器为 REST 操作提供服务,并为集群共享状态提供前端, 所有其他组件通过前端进行交互

访问控制

通知

kube-scheduler

Kubernetes 调度器是一个控制面进程负责将 Pods 指派到节点上。 调度基于约束和可用资源调度列中每个 Pod 确定其可合法放置节点。 调度器之后对所有合法的节点进行排序,将 Pod 绑定一个合适的节点。 在同一个集群可以使用多个不同的调度器;kube-scheduler 是其参考实现

概述

默认调度策略

  1. 过滤所有节点,找出分配给pod的可用节点列表
  2. 对所有可用节点按照优先级排序找出最优节点。如果多个节点都有最高的优先级分数,那么则循环分配,确保平均分配给pod
  1. 节点是否能满足pod对硬件资源请求
  2. 节点是否耗尽资源
  3. pod是否要求被调度到指定节点
  4. 节点是否有和pod规格定义里的节点选择器一致的标签
  5. 如果pod要求绑定指定主机端口,那么这个节点上的这个端口是否已经被占用
  6. 如果pod要求有特定类型的卷,该节点是否能为此pod加载此卷,或者说该节点上是否已经有pod在使用该卷了
  7. pod是否能容忍节点的污点
  8. pod是否定义了节点、pod的亲和性以及反亲和性规则?如果是,那么调度节点给该pod是否会违反规则

kube-controllermanager

Kubernetes 控制器管理器是一个守护进程内嵌随 Kubernetes 一起发布核心控制回路。 在机器人自动化应用中,控制回路是一个永不休止的循环用于调节系统状态。 在 Kubernetes 中,每个控制器是一个控制回路,通过 API 服务器监视集群的共享状态, 并尝试进行更改以将当前状态转为期望状态。 目前,Kubernetes 自带的控制器例子包括副本控制器、节点控制器、命名空间控制器和服务账号控制器等。

etcd

架构

在这里插入图片描述

Raft协议

日志复制

数据面

kubelet

kube-proxy

Kubernetes 网络代理在每个节点上运行。网络代理反映了每个节点上 Kubernetes API 中定义的服务,并且可以执行简单的 TCP、UDP 和 SCTP 流转发,或者在一组后端进行 循环 TCP、UDP 和 SCTP 转发当前可通过 Docker-links-compatible 环境变量找到服务集群 IP 和端口, 这些环境变量指定了服务代理打开端口。 有一个可选的插件,可以为这些集群 IP 提供集群 DNS。 用户必须使用 apiserver API 创建服务才能配置代理

原文地址:https://blog.csdn.net/roadtohacker/article/details/134329381

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_34084.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注