云计算-K8s 核心组件之CronJob、RBAC、HPA ,LimitRange、DaemonSet、nodeSelector如何作战?

目录

1.CronJob管理

2.RBAC管理

3.HPA管理

4.健康检查

5.LimitRange管理

6.DaemonSet管理

7.nodeSelector管理


简介

1. CronJob(定时任务控制器)
按固定时间间隔(类似 Linux cron)自动触发一次性任务(Job)。适用于周期性操作如日志备份、数据同步或定时清理。
2. RBAC(基于角色的访问控制)
实现细粒度的权限管理,限制用户/服务账户对资源的读写范围。遵循最小权限原则,确保集群安全性。
3.HPA(Horizontal Pod Autoscaler,水平自动扩缩)
根据指标动态调整 Pod 副本数量,应对流量波动。支持 CPU/内存利用率、自定义指标或外部监控系统数据作为触发条件。当指标超过阈值时增加实例数,低于下限则缩减,维持性能与成本平衡。
4. 健康检查
确保容器持续正常运行并准备好接收流量
5. LimitRange(资源限额范围)
为命名空间内的容器设置硬性资源上下限约束,防止单个 Pod 过度占用集群资源。可分别限制最小/最大请求值和限制值。
6. DaemonSet(守护进程集)
确保每个符合条件的节点上都运行一份该应用的副本,用于集群级监控、日志采集等全局性任务。天然适合需要主机级访问的场景。节点新增时自动部署,删除节点时自动回收对应 Pod。
7. NodeSelector(节点选择器)
手动指定 Pod 调度到带有特定标签的节点上,实现初步的定位控制。属于强制绑定策略,优先级高于默认调度算法
8. 亲和性(Affinity)
提供更灵活的调度策略,分为两类:
NodeAffinity(节点亲和性): 根据节点标签进行软性优先选择或硬性要求
PodAntiAffinity(互斥反亲和性): 使同一应用的不同实例尽量分散在不同节点上提高可用性

汇总表

模块核心功能典型应用场景配置层级
CronJob定时触发一次性任务日志备份、报表生成Workload
RBAC权限管控多租户隔离、安全审计Security
HPA自适应调整副本数A/B测试流量突增、秒杀活动Autoscaling
健康检查保障服务可靠性API网关存活监测、数据库连接池维护PodSpec
LimitRange资源配额兜底保护防止NoisyNeighbor干扰其他业务NamedSpaceLevel
DaemonSet全集群覆盖部署Daemon、Agent类组件Workload
NodeSelector强制节点过滤GPU加速任务绑定特定机型PodSpec
Affinity智能调度优化跨机房灾备、故障域隔离PodSpec
1.CronJob管理

在master节点/root目录下编写yaml文件date.yaml,具体要求如下:

(1)CronJob名称:date;

(2)命名空间:default;

(3)基于时间的调度规则:每分钟启动一次;

(4)容器名称:hello;镜像:busybox。 restartPolicy: OnFailure

 ​apiVersion: batch/v1beta1kind: CronJobmetadata:name: datenamespace: defaultspec:schedule: '*/1 * * * *'jobTemplate:metadata:spec:template:metadata:spec:containers:- image: busybox:latestname: hellorestartPolicy: OnFailure按定义的时间规则(如每分钟)自动创建Job,执行后生成一次性任务Pod并退出
2.RBAC管理

在master节点/root目录下编写yaml文件clusterrolebinding.yaml,具体要求如下:

(1)ClusterRoleBinding名称:read-secrets-global;

(2)绑定集群角色secret-reader,允许“manager”组中的任何用户读取任意命名空间中secrets。

 apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata:name: secret-reader  rules:  #保存此ClusterRole的所有策略规则- apiGroups:  # "" 指定核心 API 组    - apiGroups: [""] 这样写也可以- ""resources:  #可以操作的资源- secretsverbs:  #操作权限- get- list- watch----------------apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata:name: read-secrets-global roleRef:apiGroup: rbac.authorization.k8s.io  #apigroup是被引用资源的组kind: ClusterRole  ##正在引用的资源类型(role或clusterrole)name: secret-reader  subjects:- apiGroup: rbac.authorization.k8s.io   kind: Group  name: manager  #用于绑定的集群中的用户名

用户/服务账户尝试操作资源时,API Server会校验其权限,拒绝越权操作(如非manager组访问Secret)

3.HPA管理

在master节点/root目录下编写yaml文件deployment-hpa.yaml,具体要求如下:

(1)HPA名称:deployment-hpa;

(2)命名空间:default;

(3)基于deployment进行伸缩,副本数伸缩范围:1--10;

(4)期望每个Pod的CPU和内存使用率为50%。

 apiVersion: autoscaling/v1kind: HorizontalPodAutoscalermetadata:name: deployment-hpanamespace: defaultspec:maxReplicas: 10  minReplicas: 1  scaleTargetRef:apiVersion: apps/v1kind: Deploymentname: deployment-hpatargetCPUUtilizationPercentage: 50   #CPU

持续监控Pod指标(CPU/内存),当利用率超过50%时自动扩容,低于阈值时缩容

4.健康检查

在master节点/root目录下编写yaml文件liveness_tcp.yaml,具体要求如下:

(1)Pod名称:liveness-tcp;

(2)命名空间:default;

(3)镜像:nginx;端口:80;

(4)使用liveness-tcp方式向Pod IP的80/tcp端口发起连接请求;

(6)启动后延时30秒开始运行检测;

(7)每隔3秒执行一次liveness probe。

 apiVersion: v1kind: Podmetadata:name: liveness-tcp   namespace: default   spec:containers:- image: nginx:latest   imagePullPolicy: IfNotPresentlivenessProbe:  #用于检测节点是否处于存活(健康)状态,如有异常会直接重启podtcpSocket:  port: 80  initialDelaySeconds: 30  #延时30秒开始运行检测periodSeconds: 3  #每隔3秒执行一次liveness probename: nginx     ports:   - containerPort: 80   

每3秒检测80端口,若连续失败则重启Pod,确保服务可用性(30秒初始延迟避免误判)

5.LimitRange管理

在master节点/root目录下编写yaml文件mem-limit-range.yaml,具体要求如下:

(1)LimitRange名称:mem-limit-range;

(2)命名空间:default;

(3)默认容器能使用资源的最大值为512Mi内存、2000m CPU;

(4)默认容器的资源请求为256Mi内存、500m CPU;

(5)请求上限为800Mi内存、3000m CPU;

(6)请求下限为100Mi内存,300m CPU;

(7)内存和CPU超售的比率均为2。

 apiVersion: v1kind: LimitRangemetadata:name: mem-limit-rangenamespace: defaultspec:limits:- default:  memory: 512Mi cpu: 2000MdefaultRequest:memory: 256Mi   cpu: 500M max:memory: 800Mi  cpu: 3000M  min:memory: 100Mi cpu: 300M  maxLimitRequestRatio:    memory: 2 cpu: 2 type: Container   #应用此限制的资源类型

创建Pod时强制校验资源请求值,拒绝不符合范围的请求(如内存申请>800Mi会直接失败)

6.DaemonSet管理

在master节点/root目录下编写yaml文件daemonset.yaml,具体要求如下:

(1)DaemonSet名称:fluentd;

(2)命名空间:default;

(3)镜像:quay.io/fluentd_elasticsearch/fluentd:v2.5.2; 

(4)容器名称:fluentd-container01;

(5)将Pod调度到非污点的节点上。

 apiVersion: apps/v1kind: DaemonSetmetadata:name: fluentd namespace: defaultspec:revisionHistoryLimit: 10  #保留回滚的旧历史记录数selector:matchLabels:  #控制pod所需的标签必须一致            app: fluentd  template:metadata:labels:app: fluentd spec:containers:- image: quay.io/fluentd_elasticsearch/fluentd:v2.5.2  imagePullPolicy: IfNotPresentname: fluentd-container01  nodeSelector:kubernetes.io/os: linuxrestartPolicy: AlwaysschedulerName: default-schedulertolerations:   #指定污点节点集群中新增Node时自动部署Fluentd Pod,节点删除时同步清理,保证每个节点有且只有一个副本
7.nodeSelector管理

为node节点打上标签“disktype=ssd”,然后在master节点/root目录下编写yaml文件nodeselector.yaml,具体要求如下:

(1)Pod名称:nginx-nodeselector;

(2)命名空间:default;

(3)镜像:nginx;

(4)调度该Pod到标签为“disktype=ssd”的节点上。

  #给node节点打上标签[root@master k8s]# kubectl label nodes node disktype=ssdkubectl get nodes node --show-labels | grep ssd 查询标签-----------------------------------------------------------------apiVersion: v1kind: Podmetadata: name: nginx-nodeselector namespace: defaultspec:containers:- image: nginx:latest name: nginx-nodeselectorimagePullPolicy: IfNotPresent nodeSelector:   #选择器,匹配节点标签disktype: ssd  

Pod只会被调度到带有disktype=ssd标签的节点,若无可调度的节点则处于Pending状态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/918480.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/918480.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据分析学习总结之实例练习(双十一淘宝美妆)

本次通过对双十一淘宝美妆数据的分析实践,我系统掌握了数据处理与分析的完整流程,从数据初步认知到深度挖掘,再到可视化呈现与结论提炼,收获颇丰。以下是具体的学习总结:一、数据初步了解:奠定分析基础在分…

如何评估一个需求的业务价值

要科学、全面地评估一个需求的业务价值,核心在于建立一个多维度的、从战略到财务、从客户到风险的“价值罗盘”,并运用这套罗盘,对需求进行系统性的、数据驱动的量化与定性分析。一套成熟的价值评估体系,其构建必须涵盖五大关键视…

day38_2025-08-12

一、 图像数据的介绍 1.1 灰度图像 从这里开始我们进入到了图像数据相关的部分,也是默认你有之前复试班计算机视觉相关的知识,但是一些基础的概念我仍然会提。 昨天我们介绍了minist这个经典的手写数据集,作为图像数据,相较于结构…

Kubernetes1.28-单Master集群部署

一、 服务器环境及初始化 1、架构分析 集群角色主机名操作系统IP地址masterk8s-masterOpenEuler24.03192.168.166.128nodek8s-node1OpenEuler24.03192.168.166.129nodek8s-node2OpenEuler24.03192.168.166.130 2、初始化 所有节点都需要初始化! 2.1、清空Iptal…

使用pyqt5实现可勾选的测试用例界面

目录 界面 代码 python有哪些自动化测试的库和html的报告的库可以和这个软件结合使用的 **一、自动化测试核心库** **二、HTML报告生成库** **三、其他实用工具** **与您的工具结合建议** 参考 界面 代码 import sys import time import random from PyQt5.QtWidgets import (…

C语言变量的声明和定义有什么区别?

定义:定义:为变量分配地址和存储空间声明:不分配地址和存储空间一个变量可以在多个地方声明,但是只在一个地方定义。加入extern修饰的是变量的声明,说明此变量将在文件或在文件后面部分定义。1.变量声明作用&#xff1…

imx6ull-驱动开发篇20——linux互斥体实验

目录 实验程序编写 修改设备树文件 LED 驱动修改 mutex.c 测试mutexApp.c Makefile 文件 运行测试 在之前的文章里,我们学习了:驱动开发篇16——信号量与互斥体。 本讲实验里,我们来使用互斥体mutex实现 LED 灯互斥访问的功能&#x…

[4.2-2] NCCL新版本的register如何实现的?

文章目录1->2->31. ncclRegisterP2pIpcBuffer2. ncclIpcLocalRegisterBuffer(..., 1, 0,...)3. ipcRegisterBuffer(..., regRecord,..., isLegacyIpc)4. p2pProxyRegister()1->2->3 1. ncclRegisterP2pIpcBuffer 在enqueue.cc内的调用是: NCCLCHECK(…

在idea中git切换分支,但是我的文件没add,没commit

这是一个很悲伤的故事,我朋友一个下午写了4个小时的代码,差不多10多个类,都在切换分支的时候。IDEA发现有冲突,然后就要resolve conflict,发现自己不知道怎么操作,就点了abort & rollback。然后所有代码…

GPFS api

一、核心命令行 API(mm 命令集) GPFS 最基础且常用的接口是命令行工具集(以mm为前缀),用于文件系统的创建、配置、管理和监控。这些命令可直接在终端执行,也可通过脚本(如 Shell、Python&#…

虚拟机一站式部署Claude Code 可视化UI界面

前言 最近,强大的 AI 编码助手 Claude Code 在开发者社区中迅速走红,凭借其出色的代码生成和理解能力赢得了广泛赞誉。然而,其纯粹基于命令行的交互方式,对于许多习惯了图形化界面的开发者,尤其是新手而言&#xff0c…

网站IP被劫持?三步自建防护盾

一、劫持检测实战(Python脚本) import requests import socket import ssldef check_hijacking(domain):try:# 获取真实DNS解析real_ip socket.gethostbyname(domain)# 本地发起请求验证response requests.get(f"https://{domain}", timeout…

SQL Server从入门到项目实践(超值版)读书笔记 23

第三篇 核心应用篇在本章中,将通过案例示范学习SQL Server数据库的一些核心应用。例如,SQL Server视图的使用、游标的应用、存储过程的应用、索引的应用、触发器的应用、SQL Server事务与锁的应用等。学完本篇,读者将对SQL Server数据库的管理…

功能测试中常见的面试题-一

一、基础概念与理论题什么是软件测试?它的目的是什么?回答: 软件测试是通过人工或自动化手段,运行或评估软件系统,以验证它是否满足规定的需求、识别实际结果与预期结果之间的差异,并评估软件产品质量的过程…

LINUX88 变量:命令定义;普通数组定义(复);declare -i /-x

问题 [codesamba ~]$ array3(ls axel-2.4) [codesamba ~]$ echo $array3 API [codesamba ~]$ ls axel-2.4 API CHANGES conn.o gui README tcp.o axel conf.c COPYING http.c ru.mo text.c axel.1 …

数字IC后端PPA优化| Timing一致性调整方法和Module Region规划方法

Q1:直播课经常讲到一致性,这个一致性的话一般是指place,CTS和PT的derating time,uncertainty和transition吗,我大概知道innovus的uncertainty设置要比PT里面高一点,但具体设计时这几部分的大小应该是一个什么样的关系或…

电子电气架构 --- 软件定义汽车的驱动和挑战

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…

机器学习——10 支持向量机SVM

1 支持向量机 1.1 故事引入看下图左边,蓝色和红色的点混在一起,这就像一堆数据,没办法用一条简单的直线把它们分开。再看下图右边,有一条直线把蓝色和红色的点分开,这就是SVM在找的“决策边界”,它能把不同…

若以微服务部署踩坑点

windows docker desktop 部署nacos mysql1、docker部署nacosdocker pull nacos/nacos-server:v2.4.3docker启动命令 docker run --name nacos -d -p 8848:8848 -p 9848:9848 -p 9849:9849 --privilegedtrue --network bridge -e MODEstandalone -e SPRING_DATASOURCE_PLATFORMm…

Lua基础+Lua数据类型

Lua基础 Lua介绍 特点:轻量、小巧。C语言开发。开源。 设计的目的:嵌入到应用程序当中,提供灵活的扩展和定制化的功能。 luanginx,luaredis。 环境安装 windows上安装lua: 检查机器上是否有lua C:\Users\cpf>lua lu…