k8s主要组成图
2024-10-17 15:48:33 1 举报
Kubernetes(k8s)是一个开源的容器编排系统,它主要由几个核心组件构成。首先,控制平面(Control Plane)负责管理和控制整个集群,包括kube-apiserver(负责集群的API接口),etcd(分布式键值存储系统,用于保存集群的状态信息),kube-scheduler(负责调度Pod到合适的节点上运行)和kube-controller-manager(负责监控和调整集群的状态)。其次,节点(Node)是实际运行工作负载的地方,每个节点上都有一个kubelet(负责管理该节点上的容器)和一个kube-proxy(负责将服务暴露给外部网络)。最后,k8s还支持各种附加组件,如Ingress Controller(负责处理外部流量),Storage Provisioner(负责提供存储卷)等,以实现更丰富的功能。
作者其他创作
大纲/内容
Storage Class
为集群外部的 HTTP 和 HTTPS 流量提供路由规则,将流量导向 Service。
Endpoints
例如kubernetes.io/aws-ebs、kubernetes.io/nfs
Worker
Kubectl
EmptyDir
Dynamic PV
Provisioner存储提供商
Ingress
Service
用于存储非敏感配置信息,如配置文件、环境变量等。可以通过挂载卷或环境变量的方式注入到 Pod 中。
Container Runtime CRI
Kubelet
kubectl 是官方的CLI命令行工具,用于与 apiserver 进行通信,将用户在命令行输入的命令,组织并转化为 apiserver 能识别的信息,进而实现管理 k8s 各种资源的一种有效途径。
Static PV
网络命名空间 (Network Namespace)
配置与存储
负责将 Pod 调度到合适的节点上。根据资源使用情况和调度策略决定 Pod 的最佳位置。
②
Pod
VolumeBindingMode绑定模式
共享存储卷 (Volumes)
Controller
Scheduler
有状态服务
分发请求到Pod
PVC 的全称是 Persistent Volume Claim,是持久化存储的请求。是对PV资源对象的请求和绑定,也是Pod能挂载使用的一种存储卷类型
hostPath卷将 node 节点的文件系统中的文件或目录挂载到集群中。hostPath可以实现持久存储,但是在node节点故障时,也会导致数据的丢失。
容器 (Containers)
Config Map
提供了一个稳定的 IP 地址和 DNS 名称来访问一组 Pod,无论这些 Pod 是如何动态变化的。Service 会自动分发流量到后端的各个 Pod,实现负载均衡
Node Controller:负责节点状态的监控和管理。Replication Controller:确保指定数量的 Pod 副本在运行。Endpoint Controller:维护服务与 Pod 之间的映射关系。Service Account & Token Controllers:管理服务账户和 API 访问令牌。
包含控制平面组件,负责管理和协调集群。
管理数量
NFS是Network File System的缩写,即网络文件系统。Kubernetes中通过简单地配置就可以挂载NFS到Pod中,而NFS中的数据是可以永久保存的,同时NFS支持同时写操作。
kubelet
Ingress Controller
①
PV
kube-proxy
负责维护网络规则,确保服务的访问和通信服务发现、负载均衡、网络规则维护、流量转发三种模式:userspace模式:实现简单,但性能较低,适用于早期的测试和开发环境iptables模式:性能较好,适用于大多数生产环境,但在处理大量规则时可能复杂。ipvs模式:支持更多的负载均衡算法和规则,适用于高性能和大规模集群
reclaimPolicy回收策略
应用的部署和管理
用于存储敏感信息,如密码、密钥、证书等。也可以通过挂载卷或环境变量的方式注入到 Pod 中。
Master
ReplicaSet
负责确保每个节点上所有容器的正常运行和管理,与集群中的其他组件(如 API Server、Scheduler、Controller Manager)紧密协作,维护整个 Kubernetes 集群的稳定性和可靠性。
提供集群的 RESTful API 接口,处理所有的 API 请求。认证和授权请求,并更新集群状态。
反向代理负载均衡器
运行应用程序的 Pod,由 Kubelet 和 Kube-proxy 管理。
七层负载
作用:维持 Pod 副本数量,确保高可用性和容错。特点:使用标签选择器匹配 Pod,确保 Pod 的数量符合期望。
管理外部用户访问 Kubernetes 集群中服务的 API 对象。Ingress 控制器可以将外部 HTTP/S 请求路由到 Service。
StatefulSet
Secret
emptyDir可以提供不同容器间的文件共享,但不能存储;hostPath可以为不同容器提供文件的共享并可以存储,但受制于节点限制,不能跨节点共享;这时需要网络存储 (NAS),即既可以方便存储容器又可以从任何集群节点访问
配置
Etcd
通过标签选择器找到匹配的 Pod,并创建相应的 Endpoints 对象。动态检测pod,将Pod的访问地址维护到Endpoint中
ClusterIP(集群内访问)NodePort(集群外端口访问)LoadBalancer(负载均衡)ExternalName(指定外部访问域名)
NFS
定义了一组 Pod 的访问接口,并提供稳定的 IP 和 DNS 名称。它主要包含元数据、规范和状态。
存储
Api Server
PVC
进程空间 (Process Namespace)
接收来自 Controller 的配置。将请求路由到指定的 Service。处理 SSL 终结、负载均衡、健康检查等功能。
无状态服务
稳定的网络标识为每个 Pod 赋予稳定的 DNS 名称。有序部署和更新按序号依次创建、更新和删除 Pod,确保应用的状态和数据一致性。持久存储每个 Pod 可以有自己的 PersistentVolume,确保数据不会因为 Pod 重启而丢失。
解析Ingress规则配置反向代理/负载均衡器( Nginx、Traefik)管理和处理流量,确保根据 Ingress 规则进行路由。
动态创建PV
HostPath
定义了外部请求如何路由到内部服务。包含规则、主机名、路径、TLS 证书配置等。
作用:管理 Pod 的增删改,确保应用在集群中的运行状态符合期望。特点:支持回滚、滚动更新、扩缩容等功能,简化应用的管理和部署。
Deployment
四层负载
PV 全称叫做 Persistent Volume,持久化存储卷。K8S在指定存储设备空间中逻辑划分创建的可持久化的存储资源对象。
存储了与 Service 相关的一组 Pod 的 IP 和端口信息。它由 Kubernetes 自动管理,确保 Service 能正确路由到实际运行的 Pod。
分布式键值存储,用于保存集群的所有数据。作为集群的数据库,确保数据的一致性和持久性。
Pod 是 Kubernetes 中最小的可部署计算单元,包含一个或多个容器,并共享存储、网络和配置。
③
0 条评论
下一页