Kubernetes专题-03、K8S资源类型
Kuberntes集群组件
图片摘录处 Kubernetes 集群的组件。
控制平面组件
- kube-apiserver
用于API服务管理检测集群资源和响应处理集群故障。 - etcd
用于存储Kubernetes集群数据的数据库。 - kube-scheduler
用于调度节点资源Pods,同时调度算法结合因素包括单个 Pod 及 Pods 集合的资源需求、软硬件及策略约束、 亲和性及反亲和性规范、数据位置、工作负载间的干扰及最后时限。 - kube-controller-manager
用于运行控制器进程,为降低复杂性,编译同一个可执行文件,在同一个进程中运行。
节点控制器(Node Controller):负责在节点出现故障时进行通知和响应
任务控制器(Job Controller):监测代表一次性任务的 Job 对象,然后创建 Pods 来运行这些任务直至完成
端点分片控制器(EndpointSlice controller):填充端点分片(EndpointSlice)对象(以提供 Service 和 Pod 之间的链接)。
服务账号控制器(ServiceAccount controller):为新的命名空间创建默认的服务账号(ServiceAccount)。 - cloud-controller-manager
cloud-controller-manager 仅运行特定于云平台的控制器。
节点控制器(Node Controller):用于在节点终止响应后检查云提供商以确定节点是否已被删除
路由控制器(Route Controller):用于在底层云基础架构中设置路由
服务控制器(Service Controller):用于创建、更新和删除云提供商负载均衡器
节点组件
- kubelet
在工作节点上运行,保证容器运行在pod上。 - kube-proxy
在工作节点上的网络代理,维护网络规则,仅做流量转发。 - Container runtime
Kubernetes 支持许多容器运行环境,例如 containerd、 CRI-O 以及 Kubernetes CRI (容器运行环境接口) 的其他任何实现。
补充:containerd-shim docker-shim
containerd实现了CRI标准(Container Runtime Interface容器运行接口)
Containerd的Github源码
containerd 是一个行业标准的容器运行时,强调简单性、健壮性和可移植性。
它可作为 Linux 和 Windows 的守护进程使用,可以管理其主机系统的完整容器生命周期:镜像传输和存储、容器执行和监督、低级存储和网络附件等。
contianerd官网
CRI(Container Runtime Interface):容器运行时接口,提供计算资源
CNI(Container Network Interface):容器网络接口,提供网络资源
CSI(Container Storage Interface):容器存储接口,提供存储资源
Containerd 的整体架构
Containerd 用作 Kubernetes 的 runtime
最终,在k8s v1.22版本以上
设置kubelet的cgroup驱动为systemd,因为cri-o默认驱动是systemd,必须保持一致。旧版本kubelet默认驱动是cgroupfs,1.22以上才是默认systemd。
containerd的crictl常用命令:
crictl images
crictl ps
crictl pods
Containerd参考资料1
Containerd参考资料2
扩展组件
- DNS
为 Kubernetes 服务提供 DNS 记录。 - Web UI (Dashboard)
为Kubernetes的资源提供可视化配置操作。 - Container Resource Monitoring
容器资源监控,基于时间序列的指标并分析展示。 - Cluster-level Logging
日志采集存储,提供日志搜索和分析。