发布时间:2023-11-07 17:00
今天继续给大家介绍Linux运维相关知识,本文主要内容是Kubernetes集群组件。
Kubernetes由多个组件构成,这些组件分别运行于不同的节点上,并发挥不同的作用。Kubernetes集群组件示意图如下:
Kubernetes的Master结点主要包括以下组件:
API Server是整个Kubernetes集群的网关,负责输出RESTful风格的命令,以及接收、校验并响应所有的REST请求,结果状态被永久存储在ETCD中。
ETCD可以以键值对的方式持久化存储Kubernetes集群中的状态信息,可以用于服务发现、共享配置以及一致性保障,并且还提供了监听机制,用于监听和推送变更。Kubernetes集群中,当ETCD的键值对发生变化时会通知到API Server,并且由监听机制向管理人员输出。这样,基于监听机制,Kubernetes集群中的各个组件实现了高效协同。
值得一提的是,ETCD是由CoreOS基于Raft协议开发的,是独立的服务组件,并不隶属于Kubernetes集群自身。
Controller Manager即集群控制器,可以完成大多数集群级别的功能。Controller Manager进程被集成在kube-controller-manager守护进程中,主要是完成以下两个功能:
1、生命周期功能
包括Namespace创建和声明周期、Event垃圾回收、Pod终止相关的垃圾回收、级联垃圾回收以及Node垃圾回收等。
2、API业务逻辑
例如由ReplicaSet执行的Pod扩展等。
Scheduler,即调度器,负责工作与Kubernetes集群的底层,会根据Kubernetes集群中各个节点的状态以及对容器的资源需求进行调度决策。Kubernetes也支持用户自定义调度器。
Kubernetes的Node结点主要包括以下组件:
Kubelet是运行与Kubernetes集群中Node结点上的守护进程,该进程会从API Server接收关于Pod资源对象的配置信息并执行Master结点的指令。此外,它也会在API Server上注册当前工作结点,通过Advisor监控容器和节点的资源占用情况,并定期向Master结点汇报结点资源使用情况。
Kube-proxy工作在Node结点上,负责为Service对象生成iptables或者是ipvs规则,从而捕获访问该Service的数据流量,并将这些流量转发给后端的Pod对象。
位于Node结点上,用于运行容器。
除了上述组件外,Kubernetes还具有以下核心附件,用于使得Kubernetes集群更加完整。
KubeDNS是Kubernetes集群中负责提供DNS服务的Pod,它可以给Kubernetes集群中的其他Pod提供DNS服务以解析主机名。但是从Kubernetes1.1版本之后,KubeDNS组件被CoreDNS项目所代替。
Kubernetes集群中用于管理的Web页面。
Heapster是容器和节点的性能监控与分析系统。它负责收集、解析多种指标数据,例如资源利用率、生命周期事件等。但是在新版本的Kubernetes中,Heapster会由Prometheus结合其他组件所替代。
Ingress是在应用层上实现HTTP或者是HTTPs负载均衡机制的附件,但是Ingress资源自身不能向Service一样,进行数据流量的转发,其自身仅仅是一系列规则。这些规则需要通过Ingress控制器发挥作用。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200