TrumanWong

Kubernetes架构

TrumanWong
9/9/2022

1. Master节点

MasterKubernetes Cluster的大脑,运行着的Daemon服务包括kube-apiserverkube-schedulerkube-controller-manageretcdPod网络(如flannel等)。

1.1 API Server(kube-apiserver)

API Server提供HTTP/HTTPS RESTful API,即Kubernetes APIAPI ServerKubernetes Cluster的前端接口,各种客户端工具(CLIUI)及Kubernetes其它组件可以通过它管理Cluster的各种资源。

1.2 Scheduler(kube-scheduler)

Scheduler负责决定将Pod放在哪个Node上运行。Scheduler在调度时会充分考虑Cluster的拓扑结构,当前各个节点的负载,以及应用对高可用、性能、数据亲和性的需求。

1.3 Controlelr Manager(kube-controller-manager)

Controller Manager负责管理Cluster各种资源,保证资源处于预期的状态。Controller Manager由多种Controller组成,包括replication controllerendpoint controllernamespace controllerserviceaccounts controller等。

不同的controller管理不同的资源。例如,replication controller管理DeploymentSatefulSetDaemonSet的生命周期,namespace controller管理Namespace资源。

1.4 etcd

etcd负责保存Kubernetes Cluster的配置信息和各种资源的状态信息。当数据发生变化时,etcd会快速地通知Kubernetes相关组件。

1.5 Pod网络

Pod要能够相互通信,Kubernetes Cluster必须部署Pod网络,flannel是其中一个可选方案。

2. Node节点

NodePod运行的地方,Kubernetes支持Dockerrkt等容器RuntimeNode上运行的Kubernetes组件有kubeletekube-proxyPod网络(如flannel)。

2.1 kubelete

kubeleteNodeagent,当Scheduler确定在某个Node上运行Pod后,会将Pod的具体配置信息(imagevolume等)发送给该节点的kubeletekubelete根据这些信息创建和运行容器,并向Master报告运行状态。

2.2 kube-proxy

service在逻辑上代表了后端的多个Pod,外界通过service访问Pod。每个Node都会运行kube-proxy服务,它负责将访问serviceTCP/UDP数据流转发到后端的容器。如果有多个副本,kube-proxy会实现负载均衡。

2.3 Pod网络

Pod要能够相互通信,Kubernetes Cluster必须部署Pod网络,flannel是其中一个可选方案。