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整体功能
本文来自博客园,作者:厚礼蝎,转载请注明原文链接:https://www.cnblogs.com/guangdelw/p/17143546.html