k8s运行架构

k8s的集群由master和node组成,节点上运行着若干k8s服务。

1、k8s中master的组成

master节点之上运行着的后台服务有:

  • kube-apiserver
  • kube-scheduler
  • kube-controller-manager
  • Etcd
  • pod网络( flannel )

1)API Server(kube-apiserver)

API Server是k8s的前端接口,各种客户端工具以及k8s其他组件可以通过它管理集群的各种资源。

2)Scheduler(kube-scheduler)

scheduer负责决定将pod放在哪个node上运行。

另外scheduler在调度时会充分考虑集群的架构,当前各个节点的负载,以及应用对高可用、性能、数据亲和性的需求。

3)Controller Manager(kube-controller-manager)

负责维护集群的状态。比如故障检测、自动扩展、滚动更新等。

Controller Manager 由多种 controller 组成,包括 replication controller、endpoints controller、namespace controller、serviceaccounts controller 等。

不同的 controller 管理不同的资源。例如 replication controller 管理 Deployment、StatefulSet、DaemonSet 的生命周期,namespace controller 管理 Namespace 资源。

4)etcd

负责保存k8s集群的配置信息和各种资源的状态信息,K8S中所有的服务节点的信息数据、配置数据都是存储在ETCD中,当数据发生变化时,etcd会快速的通知k8s相关组件。

5)pod网络( flannel )

pod要能够相互通信,k8s集群必须掌握pod网络, flannel是其中一个可选的方案。

2、k8s中node的组成

node节点之上运行着的后台服务有:

  • Kubelet
  • kube-proxy
  • pod网络( flannel )

1)kubelet

是node的agent,当scheduler去确定在某个node上运行pod后,会将pod的具体配置信息发送给该节点的kubelet,kubelet会根据这些信息创建和运行容器,并向master报告运行状态。

2)kube-proxy

service 在逻辑上代表了后端的多个 Pod,外界通过 service 访问 Pod。

service 接收到的请求是如何转发到 Pod 的呢?这就是 kube-proxy 要完成的工作。

proxy是配合service实现从pod到service,以及从外部的node port 到 service的访问。

每个 Node 都会运行 kube-proxy 服务,它负责将访问 service 的 TCP/UPD 数据流转发到后端的容器。如果有多个副本,kube-proxy 会实现负载均衡。

3)pod网络

pod能能够互相通信,k8s集群必须部署pod网络,flannel是其中一个可以选择的方案

3、k8s整体功能

posted @ 2023-02-22 10:42  厚礼蝎  阅读(34)  评论(0编辑  收藏  举报