跳转至

k8s 简介

  • 开源容器化编排引擎,专用于管理容器化应用和服务集群。

核心组件介绍

控制平面组件

kube-apiserver:

官方解释:

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

个人理解:

  • k8s的访问入口,如果想操作容器,必须要通过api-server才可以。k8s集群所有的node都要与api-server进行通信,所以node的数量越多给api-server的压力就会越大。所以一般k8s-master都是集群来高可用的,通常来说都是三个节点。

kube-scheduler:

官方解释:

  • 是负责资源调度的进程,监视新创建且没有分配到Node的Pod,为Pod 选择一个Node;
  • 调度决策考虑的因素包括单个 Pod 及 Pods 集合的资源需求、软硬件及策略约束、 亲和性及反亲和性规范、数据位置、工作负载间的干扰及最后时限.

个人理解:

  • 管理员发送创建一个容器的指令到api-server,api-server收到这个指令就存储在etcd中,kube-scheduler会监听api-server看看有没有pod的操作事件,如果没有下次接着查询,如果有的话,kube-scheduler会通过api-server拿到etcd这个事件。然后kube-scheduler会根据node的资源利用率来进行调度。调度之后kube-scheduler会把结果返回给api-server,api-server再把结果写到etcd。

kube-controller-manager:

官方解释:

  • 运行管理控制器,是集群中处理常规任务的后台进程,是Kubernetes 里所有资源对象的自动化控制中心。逻辑上,每个控制器是一个单独的进程,但为了降低复杂性,它们都被编译成单个二进制文件,并在单个进程中运行。这些控制器主要包括。

  • 节点控制器(Node Controller):负责在Node节点出现故障时及时发现和响应;

  • 复制控制器(Replication Controller):负责维护正确数量的Pod;
  • 端点控制器(Endpoints Controller):填充端点对象(即连接Services和Pods);
  • 服务帐户和令牌控制器(Service Account & Token Controllers):为新的命名空间创建默认帐户和API访问令牌。

个人理解:

etcd:

官方解释:

  • 是Kubernetes 提供的默认存储,所有集群数据都保存在Etcd中,使用时建议为Etcd 数据提供备份计划;

个人理解:

  • 一堆控制器(副本控制器,节点控制器,命令空间控制器,服务器账号控制器等),控制器做为集群内部管理控制中心,负责集群内的node、pod、服务端点、命名空间、服务器账号,资源定额的管理,当某个node意外宕机,Controller-manager会自动发现并执行自动恢复流程。确保集群中pod的副本始终保持预期工作的状态。

Node 组件

kubelet:

官方解释:

  • 负责Pod对应容器的创建、起停等任务,同时与Master 节点密切协作,实现集群管理的基本功能。

个人理解:

  • kubelet是维护node上pod的状态,如果pod挂了,他会将事件发送给api-server,api-server将事件写入etcd,kube-scheduler或者Controller-manager会拿到api-server上的事件,对pod进行重建等操作。

kube-proxy:

官方解释:

  • 官网解释:集群中每个节点上运行的网络代理, 实现 Kubernetes 服务(Service) 概念的一部分

个人理解:

  • 个人理解:维护当前主机的网络规则

其他组件

helm install mysql presslabs/mysql-operator \ -f 1-config.yaml \ -n infra

helm install mysql-operator bitpoke/mysql-operator \
-f 1-config.yaml \
-n infra
回到页面顶部