k8s中常用的资源和控制器
一、Kubernetes资源类型及作用
Kubernetes资源类型可分为六大类,涵盖应用部署、网络管理、配置存储等场景:
1. 工作负载型资源
Pod:最小的部署单元,封装一个或多个容器,共享网络和存储命名空间。适用于无状态应用的临时实例
Deployment:管理无状态应用的副本集(ReplicaSet),支持滚动更新、回滚和扩缩容,确保Pod的稳定运行

StatefulSet:专用于有状态应用(如数据库),提供稳定的Pod标识、顺序启动和持久化存储(通过PVC绑定PV)

DaemonSet:确保每个节点运行一个Pod副本,常用于系统级守护进程(如日志收集、监控)
Job:执行一次性任务(如批处理),任务完成后Pod自动终止。
CronJob:基于时间调度的周期性任务(如备份),类似Linux的cron
2. 网络与负载均衡资源
Service:为Pod提供稳定的IP和DNS名称,实现负载均衡和内部服务发现
Ingress:管理外部HTTP/HTTPS流量,通过规则将请求路由到不同的Service(需配合Ingress Controller)
3. 配置型资源
ConfigMap:存储非敏感配置数据(如环境变量、配置文件),与Pod解耦,支持动态更新。
Secret:存储敏感信息(如密码、密钥),数据以Base64编码加密,通过卷或环境变量注入Pod
4. 存储型资源
PersistentVolume (PV) :集群级别的存储资源(如NFS、云存储),独立于Pod生命周期
PersistentVolumeClaim (PVC) :用户对存储资源的申请,绑定PV后为Pod提供持久化存储
5. 集群管理资源
Namespace:逻辑隔离集群资源,支持多租户环境,避免命名冲突。
Node:表示集群中的工作节点,用于资源监控和调度。
Role/ClusterRole:定义命名空间或集群范围的权限集合(如API访问控制)。
RoleBinding/ClusterRoleBinding:将Role或ClusterRole绑定到用户或服务账户,实现权限分配。
6. 元数据与扩展资源
Volume:为Pod提供临时或持久化存储,支持多种存储后端(如Ceph、GlusterFS)。
Horizontal Pod Autoscaler (HPA) :根据CPU或自定义指标自动扩缩Pod副本数(非严格资源,但常用于动态调整)。
二、Kubernetes控制器类型及作用
控制器是确保集群状态符合预期的核心组件,通过持续监控和调整资源实现自动化管理:
1. 副本管理类控制器
ReplicaSet:维护指定数量的Pod副本,通过标签选择器管理Pod集合(Deployment的底层实现)。
Deployment Controller:管理ReplicaSet的生命周期,支持声明式更新和无缝回滚,适用于无状态应用。
StatefulSet Controller:确保有状态Pod的唯一性、顺序启动及持久化存储绑定(如MySQL集群)
2. 节点级控制器
DaemonSet Controller:确保每个节点运行指定Pod,适用于守护进程(如Fluentd日志收集)。
3. 任务调度类控制器
Job Controller:管理一次性任务,确保任务成功完成后释放资源。
CronJob Controller:定时触发Job执行周期性任务(如每日数据清理)。
4. 网络与扩展控制器
Service Controller:维护Service与Endpoint的映射关系,动态更新Pod的访问入口。
Ingress Controller:实现Ingress规则的实际流量路由(需第三方实现,如Nginx Ingress)。
5. 集群管理类控制器
Node Controller:监控节点状态,处理节点故障或资源不足事件。
ResourceQuota Controller:限制命名空间内的资源使用量(如CPU、内存)。
Endpoint Controller:维护Service与Pod的关联关系,动态生成Endpoint列表。
三、核心资源与控制器对照表


浙公网安备 33010602011771号