kube-scheduler

简介

Kubernetes 调度器是一个控制面进程,负责将 Pods 指派到节点上。 调度器基于约束和可用资源为调度队列中每个 Pod 确定其可合法放置的节点。 调度器之后对所有合法的节点进行排序,将 Pod 绑定到一个合适的节点。 在同一个集群中可以使用多个不同的调度器;kube-scheduler 是其参考实现。 参阅调度以获得关于调度和 kube-scheduler 组件的更多信息。

  1. kube-scheduler [flags]

选项

—allow-metric-labels stringToString      默认值:[]
这个键值映射表设置度量标签所允许设置的值。 其中键的格式是 <MetricName>,<LabelName>。 值的格式是 <allowed_value>,<allowed_value>。 例如:metric1,label1=’v1,v2,v3’, metric1,label2=’v1,v2,v3’ metric2,label1=’v1,v2,v3’。
—allow-metric-labels-manifest string

包含允许列表映射的清单文件的路径。此文件的格式与 —allow-metric-labels 标志相同。 请注意,—allow-metric-labels 标志将覆盖此清单文件。

—authentication-kubeconfig string
指向具有足够权限以创建 tokenaccessreviews.authentication.k8s.io 的 Kubernetes 核心服务器的 kubeconfig 文件。 这是可选的。如果为空,则所有令牌请求均被视为匿名请求,并且不会在集群中查找任何客户端 CA。
—authentication-skip-lookup
如果为 false,则 authentication-kubeconfig 将用于从集群中查找缺少的身份验证配置。
—authentication-token-webhook-cache-ttl duration     默认值:10s
缓存来自 Webhook 令牌身份验证器的响应的持续时间。
—authentication-tolerate-lookup-failure     默认值:true
如果为 true,则无法从集群中查找缺少的身份验证配置是致命的。 请注意,这可能导致身份验证将所有请求视为匿名。
—authorization-always-allow-paths strings     默认值:”/healthz,/readyz,/livez”
在授权过程中跳过的 HTTP 路径列表,即在不联系 “core” kubernetes 服务器的情况下被授权的 HTTP 路径。
—authorization-kubeconfig string
指向具有足够权限以创建 subjectaccessreviews.authorization.k8s.io 的 Kubernetes 核心服务器的 kubeconfig 文件。这是可选的。 如果为空,则所有未被鉴权机制略过的请求都会被禁止。
—authorization-webhook-cache-authorized-ttl duration     默认值:10s
缓存来自 Webhook 授权者的 “authorized” 响应的持续时间。
—authorization-webhook-cache-unauthorized-ttl duration     默认值:10s
缓存来自 Webhook 授权者的 “unauthorized” 响应的持续时间。
—bind-address string     默认值:0.0.0.0
监听 —secure-port 端口的 IP 地址。 集群的其余部分以及 CLI/ Web 客户端必须可以访问关联的接口。 如果为空,将使用所有接口(0.0.0.0 表示使用所有 IPv4 接口,“::” 表示使用所有 IPv6 接口)。 如果为空或未指定地址 (0.0.0.0 或 ::),所有接口和 IP 地址簇将被使用。
—cert-dir string
TLS 证书所在的目录。如果提供了—tls-cert-file 和 —tls private-key-file, 则将忽略此参数。
—client-ca-file string
如果已设置,由 client-ca-file 中的证书机构签名的客户端证书的任何请求都将使用 与客户端证书的 CommonName 对应的身份进行身份验证。
—config string
配置文件的路径。
—contention-profiling     默认值:true
已弃用: 如果启用了性能分析,则启用锁竞争分析。 如果 —config 指定了一个配置文件,那么这个参数将被忽略。
—disable-http2-serving

如果为 true,HTTP2 服务将被禁用 [默认值=false]

—disabled-metrics strings
这个标志提供了一个规避不良指标的选项。你必须提供完整的指标名称才能禁用它。 免责声明:禁用指标的优先级比显示隐藏的指标更高。
—emulated-version strings

不同组件所模拟的能力(API、特性等)的版本。
如果设置了该选项,组件将模拟此版本的行为,而不是下层可执行文件版本的行为。
版本格式只能是 major.minor,例如 “—emulated-version=wardle=1.2,kube=1.31”。 选项包括:
kube=1.31..1.31(默认值=1.31)。如果组件未被指定,默认为 “kube”。

—feature-gates colonSeparatedMultimapStringString

逗号分隔的组件列表,这些 key=value 对用来描述不同组件测试性/试验性特性的特性门控。
如果组件未被指定,默认值为 “kube”。此标志可以被重复调用。例如: —feature-gates ‘wardle:featureA=true,wardle:featureB=false’ —feature-gates ‘kube:featureC=true’ 可选项为:
kube:APIResponseCompression=true|false (BETA - 默认值=true)
kube:APIServerIdentity=true|false (BETA - 默认值=true)
kube:APIServerTracing=true|false (BETA - 默认值=true)
kube:APIServingWithRoutine=true|false (ALPHA - 默认值=false)
kube:AllAlpha=true|false (ALPHA - 默认值=false)
kube:AllBeta=true|false (BETA - 默认值=false)
kube:AnonymousAuthConfigurableEndpoints=true|false (ALPHA - 默认值=false)
kube:AnyVolumeDataSource=true|false (BETA - 默认值=true)
kube:AuthorizeNodeWithSelectors=true|false (ALPHA - 默认值=false)
kube:AuthorizeWithSelectors=true|false (ALPHA - 默认值=false)
kube:CPUManagerPolicyAlphaOptions=true|false (ALPHA - 默认值=false)
kube:CPUManagerPolicyBetaOptions=true|false (BETA - 默认值=true)
kube:CPUManagerPolicyOptions=true|false (BETA - 默认值=true)
kube:CRDValidationRatcheting=true|false (BETA - 默认值=true)
kube:CSIMigrationPortworx=true|false (BETA - 默认值=true)
kube:CSIVolumeHealth=true|false (ALPHA - 默认值=false)
kube:CloudControllerManagerWebhook=true|false (ALPHA - 默认值=false)
kube:ClusterTrustBundle=true|false (ALPHA - 默认值=false)
kube:ClusterTrustBundleProjection=true|false (ALPHA - 默认值=false)
kube:ComponentSLIs=true|false (BETA - 默认值=true)
kube:ConcurrentWatchObjectDecode=true|false (BETA - 默认值=false)
kube:ConsistentListFromCache=true|false (BETA - 默认值=true)
kube:ContainerCheckpoint=true|false (BETA - 默认值=true)
kube:ContextualLogging=true|false (BETA - 默认值=true)
kube:CoordinatedLeaderElection=true|false (ALPHA - 默认值=false)
kube:CronJobsScheduledAnnotation=true|false (BETA - 默认值=true)
kube:CrossNamespaceVolumeDataSource=true|false (ALPHA - 默认值=false)
kube:CustomCPUCFSQuotaPeriod=true|false (ALPHA - 默认值=false)
kube:CustomResourceFieldSelectors=true|false (BETA - 默认值=true)
kube:DRAControlPlaneController=true|false (ALPHA - 默认值=false)
kube:DisableAllocatorDualWrite=true|false (ALPHA - 默认值=false)
kube:DisableNodeKubeProxyVersion=true|false (BETA - 默认值=true)
kube:DynamicResourceAllocation=true|false (ALPHA - 默认值=false)
kube:EventedPLEG=true|false (ALPHA - 默认值=false)
kube:GracefulNodeShutdown=true|false (BETA - 默认值=true)
kube:GracefulNodeShutdownBasedOnPodPriority=true|false (BETA - 默认值=true)
kube:HPAScaleToZero=true|false (ALPHA - 默认值=false)
kube:HonorPVReclaimPolicy=true|false (BETA - 默认值=true)
kube:ImageMaximumGCAge=true|false (BETA - 默认值=true)
kube:ImageVolume=true|false (ALPHA - 默认值=false)
kube:InPlacePodVerticalScaling=true|false (ALPHA - 默认值=false)
kube:InTreePluginPortworxUnregister=true|false (ALPHA - 默认值=false)
kube:InformerResourceVersion=true|false (ALPHA - 默认值=false)
kube:JobBackoffLimitPerIndex=true|false (BETA - 默认值=true)
kube:JobManagedBy=true|false (ALPHA - 默认值=false)
kube:JobPodReplacementPolicy=true|false (BETA - 默认值=true)
kube:JobSuccessPolicy=true|false (BETA - 默认值=true)
kube:KubeletCgroupDriverFromCRI=true|false (BETA - 默认值=true)
kube:KubeletInUserNamespace=true|false (ALPHA - 默认值=false)
kube:KubeletPodResourcesDynamicResources=true|false (ALPHA - 默认值=false)
kube:KubeletPodResourcesGet=true|false (ALPHA - 默认值=false)
kube:KubeletSeparateDiskGC=true|false (BETA - 默认值=true)
kube:KubeletTracing=true|false (BETA - 默认值=true)
kube:LoadBalancerIPMode=true|false (BETA - 默认值=true)
kube:LocalStorageCapacityIsolationFSQuotaMonitoring=true|false (BETA - 默认值=false)
kube:LoggingAlphaOptions=true|false (ALPHA - 默认值=false)
kube:LoggingBetaOptions=true|false (BETA - 默认值=true)
kube:MatchLabelKeysInPodAffinity=true|false (BETA - 默认值=true)
kube:MatchLabelKeysInPodTopologySpread=true|false (BETA - 默认值=true)
kube:MaxUnavailableStatefulSet=true|false (ALPHA - 默认值=false)
kube:MemoryManager=true|false (BETA - 默认值=true)
kube:MemoryQoS=true|false (ALPHA - 默认值=false)
kube:MultiCIDRServiceAllocator=true|false (BETA - 默认值=false)
kube:MutatingAdmissionPolicy=true|false (ALPHA - 默认值=false)
kube:NFTablesProxyMode=true|false (BETA - 默认值=true)
kube:NodeInclusionPolicyInPodTopologySpread=true|false (BETA - 默认值=true)
kube:NodeLogQuery=true|false (BETA - 默认值=false)
kube:NodeSwap=true|false (BETA - 默认值=true)
kube:OpenAPIEnums=true|false (BETA - 默认值=true)
kube:PodAndContainerStatsFromCRI=true|false (ALPHA - 默认值=false)
kube:PodDeletionCost=true|false (BETA - 默认值=true)
kube:PodIndexLabel=true|false (BETA - 默认值=true)
kube:PodLifecycleSleepAction=true|false (BETA - 默认值=true)
kube:PodReadyToStartContainersCondition=true|false (BETA - 默认值=true)
kube:PortForwardWebsockets=true|false (BETA - 默认值=true)
kube:ProcMountType=true|false (BETA - 默认值=false)
kube:QOSReserved=true|false (ALPHA - 默认值=false)
kube:RecoverVolumeExpansionFailure=true|false (ALPHA - 默认值=false)
kube:RecursiveReadOnlyMounts=true|false (BETA - 默认值=true)
kube:RelaxedEnvironmentVariableValidation=true|false (ALPHA - 默认值=false)
kube:ReloadKubeletServerCertificateFile=true|false (BETA - 默认值=true)
kube:ResilientWatchCacheInitialization=true|false (BETA - 默认值=true)
kube:ResourceHealthStatus=true|false (ALPHA - 默认值=false)
kube:RetryGenerateName=true|false (BETA - 默认值=true)
kube:RotateKubeletServerCertificate=true|false (BETA - 默认值=true)
kube:RuntimeClassInImageCriApi=true|false (ALPHA - 默认值=false)
kube:SELinuxMount=true|false (ALPHA - 默认值=false)
kube:SELinuxMountReadWriteOncePod=true|false (BETA - 默认值=true)
kube:SchedulerQueueingHints=true|false (BETA - 默认值=false)
kube:SeparateCacheWatchRPC=true|false (BETA - 默认值=true)
kube:SeparateTaintEvictionController=true|false (BETA - 默认值=true)
kube:ServiceAccountTokenJTI=true|false (BETA - 默认值=true)
kube:ServiceAccountTokenNodeBinding=true|false (BETA - 默认值=true)
kube:ServiceAccountTokenNodeBindingValidation=true|false (BETA - 默认值=true)
kube:ServiceAccountTokenPodNodeInfo=true|false (BETA - 默认值=true)
kube:ServiceTrafficDistribution=true|false (BETA - 默认值=true)
kube:SidecarContainers=true|false (BETA - 默认值=true)
kube:SizeMemoryBackedVolumes=true|false (BETA - 默认值=true)
kube:StatefulSetAutoDeletePVC=true|false (BETA - 默认值=true)
kube:StorageNamespaceIndex=true|false (BETA - 默认值=true)
kube:StorageVersionAPI=true|false (ALPHA - 默认值=false)
kube:StorageVersionHash=true|false (BETA - 默认值=true)
kube:StorageVersionMigrator=true|false (ALPHA - 默认值=false)
kube:StrictCostEnforcementForVAP=true|false (BETA - 默认值=false)
kube:StrictCostEnforcementForWebhooks=true|false (BETA - 默认值=false)
kube:StructuredAuthenticationConfiguration=true|false (BETA - 默认值=true)
kube:StructuredAuthorizationConfiguration=true|false (BETA - 默认值=true)
kube:SupplementalGroupsPolicy=true|false (ALPHA - 默认值=false)
kube:TopologyAwareHints=true|false (BETA - 默认值=true)
kube:TopologyManagerPolicyAlphaOptions=true|false (ALPHA - 默认值=false)
kube:TopologyManagerPolicyBetaOptions=true|false (BETA - 默认值=true)
kube:TopologyManagerPolicyOptions=true|false (BETA - 默认值=true)
kube:TranslateStreamCloseWebsocketRequests=true|false (BETA - 默认值=true)
kube:UnauthenticatedHTTP2DOSMitigation=true|false (BETA - 默认值=true)
kube:UnknownVersionInteroperabilityProxy=true|false (ALPHA - 默认值=false)
kube:UserNamespacesPodSecurityStandards=true|false (ALPHA - 默认值=false)
kube:UserNamespacesSupport=true|false (BETA - 默认值=false)
kube:VolumeAttributesClass=true|false (BETA - 默认值=false)
kube:VolumeCapacityPriority=true|false (ALPHA - 默认值=false)
kube:WatchCacheInitializationPostStartHook=true|false (BETA - 默认值=false)
kube:WatchFromStorageWithoutResourceVersion=true|false (BETA - 默认值=false)
kube:WatchList=true|false (ALPHA - 默认值=false)
kube:WatchListClient=true|false (BETA - 默认值=false)
kube:WinDSR=true|false (ALPHA - 默认值=false)
kube:WinOverlay=true|false (BETA - 默认值=true)
kube:WindowsHostNetwork=true|false (ALPHA - 默认值=true)

-h, —help
kube-scheduler 帮助命令
—http2-max-streams-per-connection int
服务器为客户端提供的 HTTP/2 连接最大限制。零表示使用 Golang 的默认值。
—kube-api-burst int32     默认值:100
已弃用: 与 kubernetes API 通信时使用的突发请求个数限值。 如果 —config 指定了一个配置文件,那么这个参数将被忽略。
—kube-api-content-type string     默认值:”application/vnd.kubernetes.protobuf”
已弃用: 发送到 API 服务器的请求的内容类型。 如果 —config 指定了一个配置文件,那么这个参数将被忽略。
—kube-api-qps float     默认值:50
已弃用: 与 kubernetes apiserver 通信时要使用的 QPS 如果 —config 指定了一个配置文件,那么这个参数将被忽略。
—kubeconfig string
已弃用: 包含鉴权和主节点位置信息的 kubeconfig 文件的路径。 如果 —config 指定了一个配置文件,那么这个参数将被忽略。
—leader-elect     默认值:true
在执行主循环之前,开始领导者选举并选出领导者。 使用多副本来实现高可用性时,可启用此标志。
—leader-elect-lease-duration duration     默认值:15s
非领导者候选人在观察到领导者更新后将等待直到试图获得领导但未更新的领导者职位的等待时间。 这实际上是领导者在被另一位候选人替代之前可以停止的最大持续时间。 该情况仅在启用了领导者选举的情况下才适用。
—leader-elect-renew-deadline duration     默认值:10s
领导者尝试在停止领导之前更新领导职位的间隔时间。该时间必须小于租赁期限。 仅在启用了领导者选举的情况下才适用。
—leader-elect-resource-lock string     默认值:”leases”
在领导者选举期间用于锁定的资源对象的类型。支持的选项有 leasesendpointleasesconfigmapsleases
—leader-elect-resource-name string     默认值:”kube-scheduler”
在领导者选举期间用于锁定的资源对象的名称。
—leader-elect-resource-namespace string     默认值:”kube-system”
在领导者选举期间用于锁定的资源对象的命名空间。
—leader-elect-retry-period duration     默认值:2s
客户应在尝试获取和更新领导之间等待的时间。仅在启用了领导者选举的情况下才适用。
—log-flush-frequency duration     默认值:5s
两次日志刷新之间的最大秒数。
—log-text-info-buffer-size quantity

[Alpha] 在具有分割输出流的文本格式中,信息消息可以被缓冲一段时间以提高性能。 默认值零字节表示禁用缓冲区机制。 大小可以指定为字节数(512)、1000 的倍数(1K)、1024 的倍数(2Ki)或它们的幂(3M、4G、5Mi、6Gi)。 启用 LoggingAlphaOptions 特性门控以使用此功能。

—log-text-split-stream

[Alpha] 以文本格式,将错误消息写入 stderr,将信息消息写入 stdout。 默认是将单个流写入标准输出。 启用 LoggingAlphaOptions 特性门控以使用此功能。

—logging-format string     默认值:“text”
设置日志格式。可选格式:“text”。
—logtostderr     默认值:true
日志记录到标准错误输出而不是文件。
—master string
Kubernetes API 服务器的地址(覆盖 kubeconfig 中的任何值)。
—permit-address-sharing
如果为 true,在绑定端口时将使用 SO_REUSEADDR。 这将允许同时绑定诸如 0.0.0.0 这类通配符 IP和特定 IP, 并且它避免等待内核释放处于 TIME_WAIT 状态的套接字。 默认值:false
—permit-port-sharing
如果此标志为 true,在绑定端口时会使用 SO_REUSEPORT,从而允许不止一个 实例绑定到同一地址和端口。 默认值:false
—pod-max-in-unschedulable-pods-duration duration     默认值:5m0s
已弃用:Pod 可以在 unschedulablePods 中停留的最长时间。 如果 Pod 在 unschedulablePods 中停留的时间超过此值,则该 pod 将被从 unschedulablePods 移动到 backoffQ 或 activeQ。 此标志已弃用,将在后续版本中移除。
—profiling     默认值:true
已弃用: 通过 Web 界面主机启用配置文件:host:port/debug/pprof/。 如果 —config 指定了一个配置文件,这个参数将被忽略。
—requestheader-allowed-names stringSlice
客户端证书通用名称列表,允许在 —requestheader-username-headers 指定的头部中提供用户名。如果为空,则允许任何由 —requestheader-client-ca-file 中证书机构验证的客户端证书。
—requestheader-client-ca-file string
在信任 —requestheader-username-headers 指定的头部中的用户名之前 用于验证传入请求上的客户端证书的根证书包。 警告:通常不应假定传入请求已经完成鉴权。
—requestheader-extra-headers-prefix strings      默认值:”x-remote-extra-“
要检查请求头部前缀列表。建议使用 X-Remote-Extra-
—requestheader-group-headers strings      默认值:”x-remote-group”
用于检查组的请求头部列表。建议使用 X-Remote-Group
—requestheader-username-headers strings      默认值:”x-remote-user”
用于检查用户名的请求头部列表。X-Remote-User 很常用。
—secure-port int     默认值:10259
通过身份验证和授权为 HTTPS 服务的端口。如果为 0,则根本不提供 HTTPS。
—show-hidden-metrics-for-version string
你希望显式隐藏指标的老版本号。只有较早的此版本号有意义,其它值都是不允许的。 格式为 <主版本>.<此版本>,例如:’1.16’。 此格式的目的是确保你有机会注意到是否下一个发行版本中隐藏了一些额外的指标, 而不是当某些指标在该版本之后被彻底移除时感到震惊。
—tls-cert-file string
包含默认的 HTTPS x509 证书的文件。(如果有 CA 证书,在服务器证书之后并置)。 如果启用了 HTTPS 服务,并且未提供 —tls-cert-file—tls-private-key-file,则会为公共地址生成一个自签名证书和密钥, 并将其保存到 —cert-dir 指定的目录中。
—tls-cipher-suites strings
服务器的密码套件列表,以逗号分隔。如果省略,将使用默认的 Go 密码套件。
优先考虑的值: TLS_AES_128_GCM_SHA256、TLS_AES_256_GCM_SHA384、TLS_CHACHA20_POLY1305_SHA256、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA、 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA、TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384、 TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305、TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA、 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA、TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384、TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305、TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256。
不安全的值: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256、TLS_ECDHE_ECDSA_WITH_RC4_128_SHA、TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA、 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256、TLS_ECDHE_RSA_WITH_RC4_128_SHA、TLS_RSA_WITH_3DES_EDE_CBC_SHA、 TLS_RSA_WITH_AES_128_CBC_SHA、TLS_RSA_WITH_AES_128_CBC_SHA256、TLS_RSA_WITH_AES_128_GCM_SHA256、 TLS_RSA_WITH_AES_256_CBC_SHA、TLS_RSA_WITH_AES_256_GCM_SHA384、TLS_RSA_WITH_RC4_128_SHA。
—tls-min-version string
支持的最低 TLS 版本。可能的值:VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13
—tls-private-key-file string
包含与 —tls-cert-file 匹配的默认 x509 私钥的文件。
—tls-sni-cert-key string
一对 x509 证书和私钥文件路径,也可以包含由全限定域名构成的域名模式列表作为后缀, 并可能带有前缀的通配符段。域名匹配还允许是 IP 地址, 但是只有当 apiserver 对客户端请求的 IP 地址可见时,才能使用 IP。 如果未提供域名匹配模式,则提取证书名称。 非通配符匹配优先于通配符匹配,显式域名匹配优先于提取而来的名称。 若有多个密钥/证书对,可多次使用 —tls-sni-cert-key。 例如: “example.crt,example.key” 或者 “foo.crt,foo.key:*.foo.com,foo.com”。
-v, —v int
设置日志级别详细程度的数字
—version version[=true]
—version, —version=raw 打印版本信息并推出; —version=vX.Y.Z… 设置报告的版本。
—vmodule pattern=N,…
以逗号分隔的 “pattern=N” 设置列表,用于文件过滤的日志记录(仅适用于文本日志格式)。
—write-config-to string
如果设置此参数,将配置值写入此文件并退出。