Kubernetes核心组件

Kubernetes核心组件

一个Kubernetes集群由控制节点Master服务节点Node以及存储节点etcd组成。


1. Master节点

Master节点主要负责响应client的Restful API请求,整个集群状态的管理,以及读写etcd。Master节点主要运行以下进程:kube-apiserver,kube-scheduler和kube-controller-manager。


1.1 kube-apiserver

  1. kube-apiserver向client提供集群管理的 REST API 接口。
  2. 提供其他模块之间的数据交互和通信的枢纽(其他模块通过 API Server 查询或修改数据,只有 API Server 才直接操作 etcd)。

1.2 kube-scheduler

kube-scheduler 负责分配调度 Pod 到集群内的节点上。它监听 kube-apiserver,查询还未分配 Node 的 Pod,然后根据调度策略为这些 Pod 分配节点(更新 Pod 的 NodeName 字段)


1.3 kube-controller-manager

kube-controller-manager 由一系列的控制器组成,包括Replication Controller,Job Controller,Deployment Controller,Daemon Controller等等。

kube-controller-manager 是 Kubernetes 的大脑,它通过 apiserver 监控整个集群的状态,并确保集群处于预期的工作状态。


2. Node节点

在Kubernetes集群的服务节点上,主要运行以下进程:Doker,kubelet和kube-proxy。


2.1 kubelet

每个节点上都运行一个 kubelet 服务进程,默认监听 10250 端口,接收并执行 master 发来的指令,管理 Pod 及 Pod 中的容器。每个 kubelet 进程会在 API Server 上注册节点自身信息,定期向 master 节点汇报节点的资源使用情况,并通过 cAdvisor 监控节点和容器的资源。


2.2 kube-proxy

每台机器上都运行一个 kube-proxy 服务,主要用于service的服务发现和负载均衡。它监听 API server 中 service 和 endpoint 的变化情况,并通过 iptables 等来为服务配置负载均衡(仅支持 TCP 和 UDP)。

kube-proxy 可以直接运行在物理机上,也可以以 static pod 或者 daemonset 的方式运行。


3. etcd

Etcd 是 CoreOS 基于 Raft 开发的分布式 key-value 存储,可用于服务发现、共享配置以及一致性保障(如数据库选主、分布式锁等)。

etcd在Kubernetes集群中主要用于存储元数据,包括Node/pod/service/deployment等元数据信息都存储在etcd中。


参考文章

posted @ 2020-07-15 10:29  cjw1219  阅读(252)  评论(0编辑  收藏  举报