k8s架构
- 工作流程



控制平面组件
1、kube-apiserver
- api服务器为k8s集群资源唯一操作入口,并提供认证,授权,访问控制,api注册,发现机制
2、etcd
-
高可用性的键值数据库,key-value的键值对形式
-
保存k8s所有集群的疏忽的后台数据库(例如 Pod 的数量、状态、命名空间等)
-
只和apiserver交互
3、kube-scheduler
-
负责监控新创建,未指定运行node的pods,决策出一个让pod运行的节点
-
例如,如果应用程序需要 1GB 内存和 2 个 CPU 内核,那么该应用程序的 pod 将被安排在至少具有这些资源的节点上。每次需要调度 pod 时,调度程序都会运行。调度程序必须知道可用的总资源以及分配给每个节点上现有工作负载的资源
4、kube-controller-manager
-
k8s在后台运行许多不同的控制器进程,当服务配置发生更改时(例如,替换运行 pod 的镜像,或更改配置 yaml 文件中的参数),控制器会发现更改并开始朝着新的期望状态工作。
-
控制器包括:
-
节点控制器(Node Controller): 负责在节点出现故障时进行通知和响应
-
任务控制器(Job controller): 监测代表一次性任务的 Job 对象,然后创建 Pods 来运行这些任务直至完成
-
端点控制器(Endpoints Controller): 填充端点(Endpoints)对象(即加入 Service 与 Pod)
-
服务帐户和令牌控制器(Service Account & Token Controllers): 为新的命名空间创建默认帐户和 API 访问令牌
-
node组件
- 节点组件在每个节点上运行,维护运行的pod并提供kubernetes运行环境
1、kubelet
-
在集群中的每个node上运行的代理,保证了容器都运行在pod中,kubelet 定期接收新的或修改过的 pod 规范 PodSpecs(主要通过 kube-apiserver)并确保 pod 及容器健康并以所需状态运行。该组件还向 kube-apiserver 报告运行它的主机的健康状况。
-
kubelet 不会管理不是由 Kubernetes 创建的容器
2、kube-proxy
-
kube-proxy 是集群中每个节点上运行的网络代理, 实现 Kubernetes 服务(Service) 概念的一部分。用于处理单个主机子网划分并向外部世界公开服务。它跨集群中的各种隔离网络将请求转发到正确的 pod/容器。
-
kube-proxy 维护节点上的网络规则。这些网络规则允许从集群内部或外部的网络会话与 Pod 进行网络通信。
3、容器运行时
-
容器运行时负责创建容器运行环境
-
Kubernetes 支持多个容器运行时: Docker(即将被废弃)、containerd、CRI-O以及任何实现 Kubernetes CRI (容器运行环境接口)的runtime。

浙公网安备 33010602011771号