D4 kubernetes架构与组件
》 kubernetes架构又管理节点和工作节点,以及一个键值存储系统(etcd)组成
1、管理节点
》 管理节点(master node,简称master)是kubernetes集群的控制中心,负责监控整个集群的状态、资源调度和响应集群事件等。主要组件如下所示
- kube-apiserver:提供kubernetes api服务,负责处理外部和内部组件的请求,并将这些操作存储到etcd中
- etcd:一个分布式键值存储系统,用于存储kubernetes集群数据。etcd是CoreOS开源的,它并不属于kubernetes集群本身,因此etcd可以独立于集群进行部署
- kuber-controller-manager:负责管理控制器的程序。这些控制器包括但不限于以下控制器
-
- Replication Controller(副本控制器):负责确保在集群中运行特定数量的pod副本
- Job Controller(任务控制器):负责监控job对象,并生成相应的pod来执行任务
- Endpoint Controller(断点控制器):负责管理与service相应的Endpoint对象,确保Endpoint关联正确的pod ip地址
这些控制器负责维护集群不同方面,确保整个集群的状态符合预期
- Node Controller(节点控制器):负责监控节点状态,并在节点出现故障时进行响应
- kube-schedule:负责将 Pod 调度到合适的节点上
2、工作节点
》 工作节点 work node,简称node是kubernetes集群的工作节点,它提供运行容器所需的环境和资源。它的主要组件如下所示:
- kubelet:
- node节点管理:worker节点剩余的资源,节点状态是不是健康的
- pod管理:需要调度pod到某一个node节点的时候 ,控制节点调用node节点上的 kubelet来实现pod的创建、更新、删除。
- 容器的健康检查:健康检查的发起者就是kubelet
- 资源监控:知道某一个node或者pod实际资源的利用率,就是kubelet通过metric-server获取的数据。上报到api server
- kube-proxy:负责service网络代理和负载均衡器功能。实现方式有iptables和ipvs两种。新创建service后,通过iptables -L就可以看到新增了哪些规则
- container-runtime(容器运行时):kubelet 监听api server发现有。kubernetes支持多种容器运行时,如docker、containerd、cri-o等,以及其他支持kubernetes CRI(Containers untime Interface,容器运行时接口)的实现
3、kubernetes核心资源
》 kubernetes提供了多种抽象的资源,通过定义这些资源,可以部署和管理应用程序的不同方面,如容器配置、网络代理、存储等。以下是一些常见的资源:
-pod(容器组):pod是kubernetes中最小的可部署单元,它可以包含一个或多个容器,这些容器可以相互共享网络和存储资源
- Deployment(部署):部署和管理应用程序,监控相关pod的状态,以确保其与用户定义的期望状态保持一致
- Service(服务):定义一组pod的访问方式,通过负载均衡将请求妆发到这些pod上
- namespace(命名空间):用于将集群划分为多个独立的工作环境,不通命名空间中的资源相互隔离,从而方便组织和管理资源
》 例如:在kubernetes中,可以更具项目创建相应的命名空间。如project-a、project-b、project-c,在每个命名空间中,创建资源(如deploym、Service等)以部署相应的应用程序
此外还可以更具以下情况创建命名空间 - 如果一个集群由多个团队使用,可以根据团队创建命名空间,如team-a,team-b
- 如果一个集群具有多个环境部署,则可以根据环境创建命名空间,如test、dev、prod