kubernetes(k8s)组件

kubernetes(k8s)组件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ttKsGY11-1664628066672)(C:\Users\83493\AppData\Roaming\Typora\typora-user-images\1661926496498.png)]

控制节点(master)

控制节点组件会为集群做出全局决策,比如资源的调度。 以及检测和响应集群事件,例如当不满足部署的 replicas 字段时, 要启动新的 pod)。

控制平面组件可以在集群中的任何节点上运行。 然而,为了简单起见,设置脚本通常会在同一个计算机上启动所有控制平面组件, 并且不会在此计算机上运行用户容器。

etcd

etcd 是兼顾一致性与高可用性的键值数据库,可以作为保存 Kubernetes 所有集群数据的后台数据库,协助分布式集群的正常运转。

kube-apiserver

kube-apiserver是Kubernetes 控制节点的组件, 该组件负责公开了 Kubernetes API,负责处理接受请求的工作。 kube-apiserver 设计上考虑了水平扩缩,也就是说,它可通过部署多个实例来进行扩缩。 可以运行 kube-apiserver 的多个实例,并在这些实例之间平衡流量。

kube-schedule

kube-scheduler 是控制节点的组件, 负责监视新创建的、未指定运行节点(node)的 Pods, 并选择节点来让 Pod 在上面运行。调度决策考虑的因素包括单个 Pod 及 Pods 集合的资源需求、软硬件及策略约束、 亲和性及反亲和性规范、数据位置、工作负载间的干扰及最后时限。

kube-controller-manager

kube-controller-manager是控制节点的组件, 负责运行控制器进程。

从逻辑上讲, 每个控制器都是一个单独的进程, 但是为了降低复杂性,它们都被编译到同一个可执行文件,并在同一个进程中运行。

这些控制器包括:

  • 节点控制器(Node Controller):负责在节点出现故障时进行通知和响应
  • 任务控制器(Job Controller):监测代表一次性任务的 Job 对象,然后创建 Pods 来运行这些任务直至完成
  • 端点控制器(Endpoints Controller):填充端点(Endpoints)对象(即加入 Service 与 Pod)
  • 服务帐户和令牌控制器(Service Account & Token Controllers):为新的命名空间创建默认帐户和 API 访问令牌

工作节点(node)

节点组件会在每个节点上运行,负责维护运行的 Pod 并提供 Kubernetes 运行环境。

kubelet

kubelet 会在集群中每个节点(node)上运行。 它保证容器(containers)都运行在 Pod中。

kubelet 接收一组通过各类机制提供给它的 PodSpecs, 确保这些 PodSpecs 中描述的容器处于运行状态且健康。 kubelet 不会管理不是由 Kubernetes 创建的容器。

kube-proxy

kube-proxy是集群中每个节点(node)所上运行的网络代理, 实现 Kubernetes 服务(Service)概念的一部分。

kube-proxy 维护节点上的一些网络规则, 这些网络规则会允许从集群内部或外部的网络会话与 Pod 进行网络通信。

如果操作系统提供了可用的数据包过滤层,则 kube-proxy 会通过它来实现网络规则。 否则,kube-proxy 仅做流量转发。

CRI(容器运行时)

容器运行环境是负责运行容器的软件。

Kubernetes 支持许多容器运行环境,例如 Docker、 containerd、 CRI-O以及 Kubernetes CRI (容器运行环境接口)的其他任何实现。

addons(插件)

插件使用 Kubernetes 资源(DaemonSet、 Deployment等)实现集群功能。 因为这些插件提供集群级别的功能,插件中命名空间域的资源属于 kube-system 命名空间。

DNS

其他插件都并非严格意义上的必需组件,但几乎所有 Kubernetes 集群都应该有集群 DNS, 因为很多示例都需要 DNS 服务。

集群 DNS 是一个 DNS 服务器,和环境中的其他 DNS 服务器一起工作,它为 Kubernetes 服务提供 DNS 记录。

Kubernetes 启动的容器自动将此 DNS 服务器包含在其 DNS 搜索列表中。

dashboard(web界面)

Dashboard是 Kubernetes 集群的通用的、基于 Web 的用户界面。 它使用户可以管理集群中运行的应用程序以及集群本身, 并进行故障排除。

MetricsServer

Metrics-Server是集群核心监控数据的聚合器, 资源使用情况的监控可以通过 Metrics API的形式获取

pod创建流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xXkVqIH5-1664628066673)(C:\Users\83493\AppData\Roaming\Typora\typora-user-images\1661935628460.png)]

用户通过 REST API 创建一个 Pod—>

API Server 将其写入 etcd---->

Scheduluer 检测到未绑定 Node 的 Pod,开始调度并更新 Pod 的 Node 绑定—>

Kubelet 检测到有新的 Pod 调度过来,通过 Container Runtime 运行该 Pod—>

的 Pod,开始调度并更新 Pod 的 Node 绑定—>

Kubelet 检测到有新的 Pod 调度过来,通过 Container Runtime 运行该 Pod—>

Kubelet 通过 Container Runtime 取到 Pod 状态,并更新到 API Server 中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值