容器(Pod)调度以及参数优化配置
1、Prometheus:提供实时监控数据,是动态调度的基础。
下载prometheus.tgz
mkdir prometheus & tar -xvf prometheus.tgz -C prometheus
helm install prometheus -n crane-tool \ #指定安装到crane-tool命名空间
--set pushgateway.enabled=false \ #禁用Pushgateway组件
--set alertmanager.enabled=false \ 禁用Alertmanager告警功能
--set server.persistentVolume.enabled=false \ #禁用Prometheus数据持久化(数据仅存于内存)
-f /prometheus/override_values.yaml \ #使用自定义配置文件
--create-namespace prometheus/ #--create-namespace如果命名空间不存在则自动创建,prometheus/指定使用的Helm Chart仓库和名称
2、Crane:基于Prometheus数据优化调度,提升资源利用率。
下载crane.tgz
mkdir crane & tar -xvf crane.tgz -C crane
helm install crane -n crane-tool --create-namespace crane/
3、fAdvisor:提供容器级指标,间接支持调度。
下载fadvisor.tgz
mkdir fadvisor & tar -xvf fadvisor.tgz -C fadvisor
helm install fadvisor -n crane-tool --create-namespace fadvisor/
4、Scheduler:原生调度器需结合外部工具(如Crane)实现更智能的调度。
下载scheduler.tgz
mkdir scheduler & tar -xvf scheduler.tgz -C scheduler
helm install scheduler -n crane-tool --create-namespace scheduler/
以上这些工具协同工作,可显著提升Kubernetes集群的调度效率和资源利用率。
5、传入调度器参数替换默认调度器
{{- if .Values.env.open.SCHEDULER_NAME }}
schedulerName: "{{ .Values.env.open.SCHEDULER_NAME }}"
{{- end }}
#Pod的Values配置
env:
open:
SCHEDULER_NAME: crane-scheduler
此参数将启用crane调度,否则将会继续用K8s默认调度器。
6、启动配置文件
JAVA_OPTS: >-
-XX:+UseG1GC #启用G1垃圾回收器减少停顿时间
-XX:NativeMemoryTracking=summary #追踪JVM内存使用
-Xmx12288m #设置JVM堆内存的最大可用空间
-Xms2048m #设置JVM启动时分配初始堆内存大小
-Dspring.profiles.active=docker #激活SpringBoot的Docker配置文件,确保应用在容器环境中的正确运行
-XX:+HeapDumpOnOutOfMemoryError #在OOM时自动生成堆转储文件,便于分析内存泄露
7、内存回收参数:为了避免扎堆回收导致CPU飙升,分钟和秒数是随机的
指定JVM在每日的6:00、12:00、18:00和23:00执行Full GC(完全垃圾回收)操作。
清理(Old Generation)内存,释放长期未使用的对象。优化内存布局,减少碎片化。
预防OOM(内存溢出),确保应用稳定运行。
JVM_FULLGC_EXECUTE_HOUR: 6,12,18,23
8、资源请求和限制相关配置
调度器行为:
当requests < limits时,Pod属于Burstable等级,资源紧张时可能被限制在requests范围内。
当1:1(requests = limits)比例可避免此类问题,Pod属于Guaranteed QoS等级确保Pod在limits范围内运行。
resources:
limits:
cpu: 4
memory: 12Gi
requests:
cpu: 100m
memory: 12Gi
9、健康检查参数
## Liveness 和 Readiness 探针相关配置
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/
#livenessProbe:失败时重启容器,解决应用假死问题
#readinessProbe:失败时暂停流量,保护应用免受过载影响
livenessProbe: #存活探针,用于检测容器是否健康运行
initialDelaySeconds: 180 #容器启动后延迟多少秒开始执行第一次探测默认为0秒。这个参数用于给足容器足够的启动时间。
periodSeconds: 30 #探测的时间间隔,即每隔多少秒执行一次探测,默认为10秒
timeoutSeconds: 3 #单次探测的超时时间
successThreshold: 1 #只需要1次成功的探测,即可将容器状态标记为"成功"。
failureThreshold: 6 #探测失败的阈值,即连续失败多少次后认为探测失败,默认为3次
readinessProbe: #就绪指针,用于检测容器是否已经准备好接收外部请求
initialDelaySeconds: 5 #容器启动后延迟多少秒开始执行第一次探测默认为0秒。这个参数用于给足容器足够的启动时间。
periodSeconds: 15 #探测的时间间隔,即每隔多少秒执行一次探测,默认为10秒
timeoutSeconds: 3 #单次探测的超时时间
successThreshold: 1 #只需要1次成功的探测,即可将容器状态标记为"成功"。
failureThreshold: 3 #探测失败的阈值,即连续失败多少次后认为探测失败,默认为3次
更多推荐

所有评论(0)