本文档详细介绍Volcano调度系统中scheduler、controller-manager和admission核心组件的启动参数配置。
1. Scheduler
volcano-scheduler是Volcano的核心调度组件,负责Pod的调度决策。
镜像默认启动参数:
--logtostderr
--scheduler-conf=/volcano.scheduler/volcano-scheduler.conf
--enable-healthz=true
--enable-metrics=true
--leader-elect=false
--kube-api-qps=2000
--kube-api-burst=2000
--schedule-period=1s
--node-worker-threads=20
-v=3
2>&1
1.1 基础配置参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
--master | string | Kubernetes API服务器地址(覆盖kubeconfig中的值) | |
--kubeconfig | string | kubeconfig文件路径,包含授权和master位置信息 | |
--scheduler-name | []string | ["volcano"] | 调度器名称,只处理.spec.SchedulerName匹配的Pod |
--scheduler-conf | string | 调度器配置文件的绝对路径 | |
--schedule-period | duration | 1s | 每个调度周期的间隔时间 |
--resync-period | duration | 0 | Kubernetes原生informer工厂的默认重新同步周期 |
--default-queue | string | default | 作业的默认队列名称 |
1.2 网络和安全参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
--listen-address | string | :8080 | HTTP请求监听地址 |
--healthz-address | string | :11251 | 健康检查服务器监听地址 |
--ca-cert-file | string | HTTPS的x509证书文件 | |
--tls-cert-file | string | HTTPS的默认x509证书文件 | |
--tls-private-key-file | string | 与--tls-cert-file匹配的x509私钥文件 |
1.3 API客户端参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
--kube-api-qps | float32 | 2000.0 | 与Kubernetes APIServer通信时使用的QPS |
--kube-api-burst | int | 2000 | 与Kubernetes APIServer通信时使用的Burst |
1.4 调度优化参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
--minimum-feasible-nodes | int32 | 100 | 查找和评分的最小可行节点数 |
--minimum-percentage-nodes-to-find | int32 | 5 | 查找和评分的最小节点百分比 |
--percentage-nodes-to-find | int32 | 0 | 每个调度周期评分的节点百分比,<=0时基于集群大小自动计算 |
--node-worker-threads | uint32 | 20 | 同步节点操作的线程数 |
1.5 功能开关参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
--priority-class | bool | true | 启用PriorityClass以提供pod组级别的抢占能力 |
--csi-storage | bool | false | 启用跟踪CSI驱动程序提供的可用存储容量 |
--enable-healthz | bool | false | 启用健康检查 |
--enable-metrics | bool | false | 启用指标功能 |
--enable-pprof | bool | false | 启用pprof端点 |
--cache-dumper | bool | true | 启用缓存转储器 |
1.6 高级配置参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
--plugins-dir | string | vc-scheduler加载自定义插件的目录 | |
--node-selector | []string | nil | volcano只处理带有指定标签的节点 |
--cache-dump-dir | string | /tmp | 缓存信息转储到JSON文件的目标目录 |
--ignored-provisioners | []string | nil | 在pod pvc请求计算和抢占期间忽略的provisioner列表 |
1.7 Leader选举参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
--leader-elect | bool | true | 启用leader选举,确保只有一个调度器实例处于活动状态 |
--leader-elect-lease-duration | duration | 15s | leader选举租约持续时间 |
--leader-elect-renew-deadline | duration | 10s | leader选举续约截止时间 |
--leader-elect-retry-period | duration | 2s | leader选举重试周期 |
--leader-elect-resource-lock | string | leases | leader选举使用的资源锁类型 |
--leader-elect-resource-name | string | volcano-scheduler | leader选举资源名称 |
--leader-elect-resource-namespace | string | volcano-system | leader选举资源所在的命名空间 |
--lock-object-namespace | string | volcano-system | 锁对象的命名空间(已弃用,使用--leader-elect-resource-namespace) |
1.8 日志参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
-v | int | 0 | 日志级别,数值越大日志越详细 |
--logtostderr | bool | false | 将日志输出到stderr而不是文件 |
--alsologtostderr | bool | false | 同时将日志输出到stderr和文件 |
--log_dir | string | 日志文件输出目录 | |
--log_file | string | 日志文件路径 | |
--log_file_max_size | uint64 | 1800 | 日志文件最大大小(MB) |
--skip_headers | bool | false | 跳过日志头信息 |
--skip_log_headers | bool | false | 跳过日志头信息 |
--stderrthreshold | int | 2 | 输出到stderr的日志级别阈值 |
--vmodule | string | 按模块设置日志级别,格式:pattern=N,... | |
--log-flush-frequency | duration | 5s | 日志刷新之间的最大秒数 |
1.9 Feature Gate参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
--feature-gates | string | 启用或禁用特定功能的键值对列表,格式:key1=value1,key2=value2 |
1.10 其他参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
--version | bool | false | 显示版本信息并退出 |
2. Controller Manager
volcano-controller-manager负责管理Volcano的自定义资源管理,如Job、Queue、PodGroup等。
镜像默认启动参数:
--logtostderr
--enable-healthz=true
--enable-metrics=true
--leader-elect=false
--kube-api-qps=50
--kube-api-burst=100
--worker-threads=3
--worker-threads-for-gc=5
--worker-threads-for-podgroup=5
-v=4
2>&1
2.1 基础配置参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
--master | string | Kubernetes API服务器地址(覆盖kubeconfig中的值) | |
--kubeconfig | string | kubeconfig文件路径,包含授权和master位置信息 | |
--scheduler-name | []string | ["volcano"] | 处理.spec.SchedulerName匹配的Pod |
2.2 网络和安全参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
--listen-address | string | :8081 | HTTP请求监听地址 |
--healthz-address | string | :11251 | 健康检查服务器监听地址 |
--ca-cert-file | string | HTTPS的x509证书文件 | |
--tls-cert-file | string | HTTPS的默认x509证书文件 | |
--tls-private-key-file | string | 与--tls-cert-file匹配的x509私钥文件 |
2.3 API客户端参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
--kube-api-qps | float32 | 50.0 | 与Kubernetes APIServer通信时使用的QPS |
--kube-api-burst | int | 100 | 与Kubernetes APIServer通信时使用的Burst |
2.4 工作线程参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
--worker-threads | uint32 | 3 | 并发同步作业操作的线程数,数量越大作业更新越快但CPU负载更高 |
--worker-threads-for-podgroup | uint32 | 5 | 同步podgroup操作的线程数,数量越大处理越快但需要更多CPU负载 |
--worker-threads-for-queue | uint32 | 5 | 同步队列操作的线程数,数量越大处理越快但需要更多CPU负载 |
--worker-threads-for-gc | uint32 | 1 | 回收作业的线程数,数量越大回收越快但需要更多CPU负载 |
2.5 重试和控制参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
--max-requeue-num | int | 15 | 作业、队列或命令在从队列中删除之前的重新排队次数 |
--controllers | []string | ["*"] | 指定要启用的控制器,使用'*'表示所有控制器 |
2.6 功能开关参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
--enable-healthz | bool | false | 启用健康检查 |
--enable-metrics | bool | false | 启用指标功能 |
--inherit-owner-annotations | bool | true | 创建podgroup时启用继承所有者注释 |
2.7 Leader选举参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
--leader-elect | bool | true | 启用leader选举,确保只有一个控制器实例处于活动状态 |
--leader-elect-lease-duration | duration | 15s | leader选举租约持续时间 |
--leader-elect-renew-deadline | duration | 10s | leader选举续约截止时间 |
--leader-elect-retry-period | duration | 2s | leader选举重试周期 |
--leader-elect-resource-lock | string | leases | leader选举使用的资源锁类型 |
--leader-elect-resource-name | string | vc-controller-manager | leader选举资源名称 |
--leader-elect-resource-namespace | string | volcano-system | leader选举资源所在的命名空间 |
--lock-object-namespace | string | volcano-system | 锁对象的命名空间(已弃用,使用--leader-elect-resource-namespace) |
2.8 日志参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
-v | int | 0 | 日志级别,数值越大日志越详细 |
--logtostderr | bool | false | 将日志输出到stderr而不是文件 |
--alsologtostderr | bool | false | 同时将日志输出到stderr和文件 |
--log_dir | string | 日志文件输出目录 | |
--log_file | string | 日志文件路径 | |
--log_file_max_size | uint64 | 1800 | 日志文件最大大小(MB) |
--skip_headers | bool | false | 跳过日志头信息 |
--skip_log_headers | bool | false | 跳过日志头信息 |
--stderrthreshold | int | 2 | 输出到stderr的日志级别阈值 |
--vmodule | string | 按模块设置日志级别,格式:pattern=N,... | |
--log-flush-frequency | duration | 5s | 日志刷新之间的最大秒数 |
2.9 Feature Gate参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
--feature-gates | string | 启用或禁用特定功能的键值对列表,格式:key1=value1,key2=value2 |
2.10 其他参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
--version | bool | false | 显示版本信息并退出 |
3. Admission(Webhook Manager)
volcano-webhook-manager(vc-webhook-manager)是Volcano的admission控制器组件,负责对Volcano资源进行准入控制和验证。
镜像默认启动参数:
--enabled-admission=/jobs/mutate,/jobs/validate,/podgroups/validate,/queues/mutate,/queues/validate,/hypernodes/validate
--tls-cert-file=/admission.local.config/certificates/tls.crt
--tls-private-key-file=/admission.local.config/certificates/tls.key
--ca-cert-file=/admission.local.config/certificates/ca.crt
--admission-conf=/admission.local.config/configmap/volcano-admission.conf
--webhook-namespace=volcano-system
--webhook-service-name=volcano-admission-service
--enable-healthz=true
--logtostderr
--port=8443
-v=4
2>&1
3.1 基础配置参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
--master | string | Kubernetes API服务器地址(覆盖kubeconfig中的值) | |
--kubeconfig | string | kubeconfig文件路径,包含授权和master位置信息 | |
--scheduler-name | []string | ["volcano"] | 处理.spec.SchedulerName匹配的Pod |
3.2 网络和服务参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
--listen-address | string | admission控制器服务器监听地址 | |
--port | int | 8443 | admission控制器服务器使用的端口 |
--healthz-address | string | :11251 | 健康检查服务器监听地址 |
3.3 TLS和安全参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
--tls-cert-file | string | HTTPS的默认x509证书文件 | |
--tls-private-key-file | string | 与--tls-cert-file匹配的x509私钥文件 | |
--ca-cert-file | string | HTTPS的x509证书文件 |
3.4 Webhook配置参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
--webhook-namespace | string | webhook所在的命名空间 | |
--webhook-service-name | string | webhook服务名称 | |
--webhook-url | string | webhook的URL地址 | |
--admission-conf | string | webhook的configmap配置文件 |
3.5 Admission控制参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
--enabled-admission | string | /jobs/mutate,/jobs/validate,/podgroups/mutate,/pods/validate,/pods/mutate,/queues/mutate,/queues/validate | 启用的admission webhook列表 |
--graceful-shutdown-time | duration | 30s | 优雅关闭时强制终止前的等待时间 |
3.6 API客户端参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
--kube-api-qps | float32 | 50.0 | 与Kubernetes APIServer通信时使用的QPS |
--kube-api-burst | int | 100 | 与Kubernetes APIServer通信时使用的Burst |
3.7 功能开关参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
--enable-healthz | bool | false | 启用健康检查 |
3.8 日志参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
-v | int | 0 | 日志级别,数值越大日志越详细 |
--logtostderr | bool | false | 将日志输出到stderr而不是文件 |
--alsologtostderr | bool | false | 同时将日志输出到stderr和文件 |
--log_dir | string | 日志文件输出目录 | |
--log_file | string | 日志文件路径 | |
--log_file_max_size | uint64 | 1800 | 日志文件最大大小(MB) |
--skip_headers | bool | false | 跳过日志头信息 |
--skip_log_headers | bool | false | 跳过日志头信息 |
--stderrthreshold | int | 2 | 输出到stderr的日志级别阈值 |
--vmodule | string | 按模块设置日志级别,格式:pattern=N,... | |
--log-flush-frequency | duration | 5s | 日志刷新之间的最大秒数 |
3.9 其他参数
| 参数名称 | 参数类型 | 默认值 | 参数说明 |
|---|---|---|---|
--version | bool | false | 显示版本信息并退出 |