kubernetes reference The file is auto generated from the Go source code of the component using a generic contenttype tool reference weight 30 autogenerated true title kube scheduler

Answer:
---
title: kube-scheduler
content_type: tool-reference
weight: 30
auto_generated: true
---

##

The Kubernetes scheduler is a control plane process which assigns
Pods to Nodes. The scheduler determines which Nodes are valid placements for
each Pod in the scheduling queue according to constraints and available
resources. The scheduler then ranks each valid Node and binds the Pod to a
suitable Node. Multiple different schedulers may be used within a cluster;
kube-scheduler is the reference implementation.
See [scheduling](https://kubernetes.io/docs/concepts/scheduling-eviction/)
for more information about scheduling and the kube-scheduler component.

```
kube-scheduler [flags]
```

##

<colgroup>
<col span="1" style="width: 10px;" />
<col span="1" />
</colgroup>

--allow-metric-labels stringToString     Default: []

The map from metric-label to value allow-list of this label. The key's format is <MetricName>,<LabelName>. The value's format is <allowed_value>,<allowed_value>...e.g. metric1,label1='v1,v2,v3', metric1,label2='v1,v2,v3' metric2,label1='v1,v2,v3'.

--allow-metric-labels-manifest string

The path to the manifest file that contains the allow-list mapping. The format of the file is the same as the flag --allow-metric-labels. Note that the flag --allow-metric-labels will override the manifest file.

--authentication-kubeconfig string

kubeconfig file pointing at the 'core' kubernetes server with enough rights to create tokenreviews.authentication.k8s.io. This is optional. If empty, all token requests are considered to be anonymous and no client CA is looked up in the cluster.

--authentication-skip-lookup

If false, the authentication-kubeconfig will be used to lookup missing authentication configuration from the cluster.

--authentication-token-webhook-cache-ttl duration     Default: 10s

The duration to cache responses from the webhook token authenticator.

--authentication-tolerate-lookup-failure     Default: true

If true, failures to look up missing authentication configuration from the cluster are not considered fatal. Note that this can result in authentication that treats all requests as anonymous.

--authorization-always-allow-paths strings     Default: "/healthz,/readyz,/livez"

A list of HTTP paths to skip during authorization, i.e. these are authorized without contacting the 'core' kubernetes server.

--authorization-kubeconfig string

kubeconfig file pointing at the 'core' kubernetes server with enough rights to create subjectaccessreviews.authorization.k8s.io. This is optional. If empty, all requests not skipped by authorization are forbidden.

--authorization-webhook-cache-authorized-ttl duration     Default: 10s

The duration to cache 'authorized' responses from the webhook authorizer.

--authorization-webhook-cache-unauthorized-ttl duration     Default: 10s

The duration to cache 'unauthorized' responses from the webhook authorizer.

--bind-address string     Default: 0.0.0.0

The IP address on which to listen for the --secure-port port. The associated interface(s) must be reachable by the rest of the cluster, and by CLI/web clients. If blank or an unspecified address (0.0.0.0 or ::), all interfaces and IP address families will be used.

--cert-dir string

The directory where the TLS certs are located. If --tls-cert-file and --tls-private-key-file are provided, this flag will be ignored.

--client-ca-file string

If set, any request presenting a client certificate signed by one of the authorities in the client-ca-file is authenticated with an identity corresponding to the CommonName of the client certificate.

--config string

The path to the configuration file.

--contention-profiling     Default: true

DEPRECATED: enable block profiling, if profiling is enabled. This parameter is ignored if a config file is specified in --config.

--disable-http2-serving

If true, HTTP2 serving will be disabled [default=false]

--disabled-metrics strings

This flag provides an escape hatch for misbehaving metrics. You must provide the fully qualified metric name in order to disable it. Disclaimer: disabling metrics is higher in precedence than showing hidden metrics.

--emulated-version strings

The versions different components emulate their capabilities (APIs, features, ...) of.
If set, the component will emulate the behavior of this version instead of the underlying binary version.
Version format could only be major.minor, for example: '--emulated-version=wardle=1.2,kube=1.31'. Options are:
kube=1.31..1.31 (default=1.31)If the component is not specified, defaults to "kube"

--feature-gates colonSeparatedMultimapStringString

Comma-separated list of component:key=value pairs that describe feature gates for alpha/experimental features of different components.
If the component is not specified, defaults to "kube". This flag can be repeatedly invoked. For example: --feature-gates 'wardle:featureA=true,wardle:featureB=false' --feature-gates 'kube:featureC=true'Options are:
kube:APIResponseCompression=true|false (BETA - default=true)
kube:APIServerIdentity=true|false (BETA - default=true)
kube:APIServerTracing=true|false (BETA - default=true)
kube:APIServingWithRoutine=true|false (ALPHA - default=false)
kube:AllAlpha=true|false (ALPHA - default=false)
kube:AllBeta=true|false (BETA - default=false)
kube:AnonymousAuthConfigurableEndpoints=true|false (ALPHA - default=false)
kube:AnyVolumeDataSource=true|false (BETA - default=true)
kube:AuthorizeNodeWithSelectors=true|false (ALPHA - default=false)
kube:AuthorizeWithSelectors=true|false (ALPHA - default=false)
kube:CPUManagerPolicyAlphaOptions=true|false (ALPHA - default=false)
kube:CPUManagerPolicyBetaOptions=true|false (BETA - default=true)
kube:CPUManagerPolicyOptions=true|false (BETA - default=true)
kube:CRDValidationRatcheting=true|false (BETA - default=true)
kube:CSIMigrationPortworx=true|false (BETA - default=true)
kube:CSIVolumeHealth=true|false (ALPHA - default=false)
kube:CloudControllerManagerWebhook=true|false (ALPHA - default=false)
kube:ClusterTrustBundle=true|false (ALPHA - default=false)
kube:ClusterTrustBundleProjection=true|false (ALPHA - default=false)
kube:ComponentSLIs=true|false (BETA - default=true)
kube:ConcurrentWatchObjectDecode=true|false (BETA - default=false)
kube:ConsistentListFromCache=true|false (BETA - default=true)
kube:ContainerCheckpoint=true|false (BETA - default=true)
kube:ContextualLogging=true|false (BETA - default=true)
kube:CoordinatedLeaderElection=true|false (ALPHA - default=false)
kube:CronJobsScheduledAnnotation=true|false (BETA - default=true)
kube:CrossNamespaceVolumeDataSource=true|false (ALPHA - default=false)
kube:CustomCPUCFSQuotaPeriod=true|false (ALPHA - default=false)
kube:CustomResourceFieldSelectors=true|false (BETA - default=true)
kube:DRAControlPlaneController=true|false (ALPHA - default=false)
kube:DisableAllocatorDualWrite=true|false (ALPHA - default=false)
kube:DisableNodeKubeProxyVersion=true|false (BETA - default=true)
kube:DynamicResourceAllocation=true|false (ALPHA - default=false)
kube:EventedPLEG=true|false (ALPHA - default=false)
kube:GracefulNodeShutdown=true|false (BETA - default=true)
kube:GracefulNodeShutdownBasedOnPodPriority=true|false (BETA - default=true)
kube:HPAScaleToZero=true|false (ALPHA - default=false)
kube:HonorPVReclaimPolicy=true|false (BETA - default=true)
kube:ImageMaximumGCAge=true|false (BETA - default=true)
kube:ImageVolume=true|false (ALPHA - default=false)
kube:InPlacePodVerticalScaling=true|false (ALPHA - default=false)
kube:InTreePluginPortworxUnregister=true|false (ALPHA - default=false)
kube:InformerResourceVersion=true|false (ALPHA - default=false)
kube:JobBackoffLimitPerIndex=true|false (BETA - default=true)
kube:JobManagedBy=true|false (ALPHA - default=false)
kube:JobPodReplacementPolicy=true|false (BETA - default=true)
kube:JobSuccessPolicy=true|false (BETA - default=true)
kube:KubeletCgroupDriverFromCRI=true|false (BETA - default=true)
kube:KubeletInUserNamespace=true|false (ALPHA - default=false)
kube:KubeletPodResourcesDynamicResources=true|false (ALPHA - default=false)
kube:KubeletPodResourcesGet=true|false (ALPHA - default=false)
kube:KubeletSeparateDiskGC=true|false (BETA - default=true)
kube:KubeletTracing=true|false (BETA - default=true)
kube:LoadBalancerIPMode=true|false (BETA - default=true)
kube:LocalStorageCapacityIsolationFSQuotaMonitoring=true|false (BETA - default=false)
kube:LoggingAlphaOptions=true|false (ALPHA - default=false)
kube:LoggingBetaOptions=true|false (BETA - default=true)
kube:MatchLabelKeysInPodAffinity=true|false (BETA - default=true)
kube:MatchLabelKeysInPodTopologySpread=true|false (BETA - default=true)
kube:MaxUnavailableStatefulSet=true|false (ALPHA - default=false)
kube:MemoryManager=true|false (BETA - default=true)
kube:MemoryQoS=true|false (ALPHA - default=false)
kube:MultiCIDRServiceAllocator=true|false (BETA - default=false)
kube:MutatingAdmissionPolicy=true|false (ALPHA - default=false)
kube:NFTablesProxyMode=true|false (BETA - default=true)
kube:NodeInclusionPolicyInPodTopologySpread=true|false (BETA - default=true)
kube:NodeLogQuery=true|false (BETA - default=false)
kube:NodeSwap=true|false (BETA - default=true)
kube:OpenAPIEnums=true|false (BETA - default=true)
kube:PodAndContainerStatsFromCRI=true|false (ALPHA - default=false)
kube:PodDeletionCost=true|false (BETA - default=true)
kube:PodIndexLabel=true|false (BETA - default=true)
kube:PodLifecycleSleepAction=true|false (BETA - default=true)
kube:PodReadyToStartContainersCondition=true|false (BETA - default=true)
kube:PortForwardWebsockets=true|false (BETA - default=true)
kube:ProcMountType=true|false (BETA - default=false)
kube:QOSReserved=true|false (ALPHA - default=false)
kube:RecoverVolumeExpansionFailure=true|false (ALPHA - default=false)
kube:RecursiveReadOnlyMounts=true|false (BETA - default=true)
kube:RelaxedEnvironmentVariableValidation=true|false (ALPHA - default=false)
kube:ReloadKubeletServerCertificateFile=true|false (BETA - default=true)
kube:ResilientWatchCacheInitialization=true|false (BETA - default=true)
kube:ResourceHealthStatus=true|false (ALPHA - default=false)
kube:RetryGenerateName=true|false (BETA - default=true)
kube:RotateKubeletServerCertificate=true|false (BETA - default=true)
kube:RuntimeClassInImageCriApi=true|false (ALPHA - default=false)
kube:SELinuxMount=true|false (ALPHA - default=false)
kube:SELinuxMountReadWriteOncePod=true|false (BETA - default=true)
kube:SchedulerQueueingHints=true|false (BETA - default=false)
kube:SeparateCacheWatchRPC=true|false (BETA - default=true)
kube:SeparateTaintEvictionController=true|false (BETA - default=true)
kube:ServiceAccountTokenJTI=true|false (BETA - default=true)
kube:ServiceAccountTokenNodeBinding=true|false (BETA - default=true)
kube:ServiceAccountTokenNodeBindingValidation=true|false (BETA - default=true)
kube:ServiceAccountTokenPodNodeInfo=true|false (BETA - default=true)
kube:ServiceTrafficDistribution=true|false (BETA - default=true)
kube:SidecarContainers=true|false (BETA - default=true)
kube:SizeMemoryBackedVolumes=true|false (BETA - default=true)
kube:StatefulSetAutoDeletePVC=true|false (BETA - default=true)
kube:StorageNamespaceIndex=true|false (BETA - default=true)
kube:StorageVersionAPI=true|false (ALPHA - default=false)
kube:StorageVersionHash=true|false (BETA - default=true)
kube:StorageVersionMigrator=true|false (ALPHA - default=false)
kube:StrictCostEnforcementForVAP=true|false (BETA - default=false)
kube:StrictCostEnforcementForWebhooks=true|false (BETA - default=false)
kube:StructuredAuthenticationConfiguration=true|false (BETA - default=true)
kube:StructuredAuthorizationConfiguration=true|false (BETA - default=true)
kube:SupplementalGroupsPolicy=true|false (ALPHA - default=false)
kube:TopologyAwareHints=true|false (BETA - default=true)
kube:TopologyManagerPolicyAlphaOptions=true|false (ALPHA - default=false)
kube:TopologyManagerPolicyBetaOptions=true|false (BETA - default=true)
kube:TopologyManagerPolicyOptions=true|false (BETA - default=true)
kube:TranslateStreamCloseWebsocketRequests=true|false (BETA - default=true)
kube:UnauthenticatedHTTP2DOSMitigation=true|false (BETA - default=true)
kube:UnknownVersionInteroperabilityProxy=true|false (ALPHA - default=false)
kube:UserNamespacesPodSecurityStandards=true|false (ALPHA - default=false)
kube:UserNamespacesSupport=true|false (BETA - default=false)
kube:VolumeAttributesClass=true|false (BETA - default=false)
kube:VolumeCapacityPriority=true|false (ALPHA - default=false)
kube:WatchCacheInitializationPostStartHook=true|false (BETA - default=false)
kube:WatchFromStorageWithoutResourceVersion=true|false (BETA - default=false)
kube:WatchList=true|false (ALPHA - default=false)
kube:WatchListClient=true|false (BETA - default=false)
kube:WinDSR=true|false (ALPHA - default=false)
kube:WinOverlay=true|false (BETA - default=true)
kube:WindowsHostNetwork=true|false (ALPHA - default=true)

-h, --help

help for kube-scheduler

--http2-max-streams-per-connection int

The limit that the server gives to clients for the maximum number of streams in an HTTP/2 connection. Zero means to use golang's default.

--kube-api-burst int32     Default: 100

DEPRECATED: burst to use while talking with kubernetes apiserver. This parameter is ignored if a config file is specified in --config.

--kube-api-content-type string     Default: "application/vnd.kubernetes.protobuf"

DEPRECATED: content type of requests sent to apiserver. This parameter is ignored if a config file is specified in --config.

--kube-api-qps float     Default: 50

DEPRECATED: QPS to use while talking with kubernetes apiserver. This parameter is ignored if a config file is specified in --config.

--kubeconfig string

DEPRECATED: path to kubeconfig file with authorization and master location information. This parameter is ignored if a config file is specified in --config.

--leader-elect     Default: true

Start a leader election client and gain leadership before executing the main loop. Enable this when running replicated components for high availability.

--leader-elect-lease-duration duration     Default: 15s

The duration that non-leader candidates will wait after observing a leadership renewal until attempting to acquire leadership of a led but unrenewed leader slot. This is effectively the maximum duration that a leader can be stopped before it is replaced by another candidate. This is only applicable if leader election is enabled.

--leader-elect-renew-deadline duration     Default: 10s

The interval between attempts by the acting master to renew a leadership slot before it stops leading. This must be less than the lease duration. This is only applicable if leader election is enabled.

--leader-elect-resource-lock string     Default: "leases"

The type of resource object that is used for locking during leader election. Supported options are 'leases', 'endpointsleases' and 'configmapsleases'.

--leader-elect-resource-name string     Default: "kube-scheduler"

The name of resource object that is used for locking during leader election.

--leader-elect-resource-namespace string     Default: "kube-system"

The namespace of resource object that is used for locking during leader election.

--leader-elect-retry-period duration     Default: 2s

The duration the clients should wait between attempting acquisition and renewal of a leadership. This is only applicable if leader election is enabled.

--log-flush-frequency duration     Default: 5s

Maximum number of seconds between log flushes

--log-text-info-buffer-size quantity

[Alpha] In text format with split output streams, the info messages can be buffered for a while to increase performance. The default value of zero bytes disables buffering. The size can be specified as number of bytes (512), multiples of 1000 (1K), multiples of 1024 (2Ki), or powers of those (3M, 4G, 5Mi, 6Gi). Enable the LoggingAlphaOptions feature gate to use this.

--log-text-split-stream

[Alpha] In text format, write error messages to stderr and info messages to stdout. The default is to write a single stream to stdout. Enable the LoggingAlphaOptions feature gate to use this.

--logging-format string     Default: "text"

Sets the log format. Permitted formats: "text".

--master string

The address of the Kubernetes API server (overrides any value in kubeconfig)

--permit-address-sharing

If true, SO_REUSEADDR will be used when binding the port. This allows binding to wildcard IPs like 0.0.0.0 and specific IPs in parallel, and it avoids waiting for the kernel to release sockets in TIME_WAIT state. [default=false]

--permit-port-sharing

If true, SO_REUSEPORT will be used when binding the port, which allows more than one instance to bind on the same address and port. [default=false]

--pod-max-in-unschedulable-pods-duration duration     Default: 5m0s

DEPRECATED: the maximum time a pod can stay in unschedulablePods. If a pod stays in unschedulablePods for longer than this value, the pod will be moved from unschedulablePods to backoffQ or activeQ. This flag is deprecated and will be removed in a future version.

--profiling     Default: true

DEPRECATED: enable profiling via web interface host:port/debug/pprof/. This parameter is ignored if a config file is specified in --config.

--requestheader-allowed-names strings

List of client certificate common names to allow to provide usernames in headers specified by --requestheader-username-headers. If empty, any client certificate validated by the authorities in --requestheader-client-ca-file is allowed.

--requestheader-client-ca-file string

Root certificate bundle to use to verify client certificates on incoming requests before trusting usernames in headers specified by --requestheader-username-headers. WARNING: generally do not depend on authorization being already done for incoming requests.

--requestheader-extra-headers-prefix strings     Default: "x-remote-extra-"

List of request header prefixes to inspect. X-Remote-Extra- is suggested.

--requestheader-group-headers strings     Default: "x-remote-group"

List of request headers to inspect for groups. X-Remote-Group is suggested.

--requestheader-username-headers strings     Default: "x-remote-user"

List of request headers to inspect for usernames. X-Remote-User is common.

--secure-port int     Default: 10259

The port on which to serve HTTPS with authentication and authorization. If 0, don't serve HTTPS at all.

--show-hidden-metrics-for-version string

The previous version for which you want to show hidden metrics. Only the previous minor version is meaningful, other values will not be allowed. The format is <major>.<minor>, e.g.: '1.16'. The purpose of this format is make sure you have the opportunity to notice if the next release hides additional metrics, rather than being surprised when they are permanently removed in the release after that.

--tls-cert-file string

File containing the default x509 Certificate for HTTPS. (CA cert, if any, concatenated after server cert). If HTTPS serving is enabled, and --tls-cert-file and --tls-private-key-file are not provided, a self-signed certificate and key are generated for the public address and saved to the directory specified by --cert-dir.

--tls-cipher-suites strings

Comma-separated list of cipher suites for the server. If omitted, the default Go cipher suites will be used.
Preferred values: 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.
Insecure values: 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

Minimum TLS version supported. Possible values: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13

--tls-private-key-file string

File containing the default x509 private key matching --tls-cert-file.

--tls-sni-cert-key string

A pair of x509 certificate and private key file paths, optionally suffixed with a list of domain patterns which are fully qualified domain names, possibly with prefixed wildcard segments. The domain patterns also allow IP addresses, but IPs should only be used if the apiserver has visibility to the IP address requested by a client. If no domain patterns are provided, the names of the certificate are extracted. Non-wildcard matches trump over wildcard matches, explicit domain patterns trump over extracted names. For multiple key/certificate pairs, use the --tls-sni-cert-key multiple times. Examples: "example.crt,example.key" or "foo.crt,foo.key:*.foo.com,foo.com".

-v, --v int

number for the log level verbosity

--version version[=true]

--version, --version=raw prints version information and quits; --version=vX.Y.Z... sets the reported version

--vmodule pattern=N,...

comma-separated list of pattern=N settings for file-filtered logging (only works for text log format)

--write-config-to string

If set, write the configuration values to this file and exit.

title  kube scheduler content type  tool reference weight  30 auto generated  true            The file is auto generated from the Go source code of the component using a generic  generator  https   github com kubernetes sigs reference docs    To learn how to generate the reference documentation  please read  Contributing to the reference documentation   docs contribute generate ref docs    To update the reference content  please follow the  Contributing upstream   docs contribute generate ref docs contribute upstream   guide  You can file document formatting bugs against the  reference docs  https   github com kubernetes sigs reference docs   project              The Kubernetes scheduler is a control plane process which assigns Pods to Nodes  The scheduler determines which Nodes are valid placements for each Pod in the scheduling queue according to constraints and available resources  The scheduler then ranks each valid Node and binds the Pod to a suitable Node  Multiple different schedulers may be used within a cluster  kube scheduler is the reference implementation  See  scheduling  https   kubernetes io docs concepts scheduling eviction   for more information about scheduling and the kube scheduler component       kube scheduler  flags                table style  width  100   table layout  fixed     colgroup   col span  1  style  width  10px       col span  1       colgroup   tbody    tr   td colspan  2    allow metric labels stringToString nbsp  nbsp  nbsp  nbsp  nbsp Default      td    tr   tr   td   td  td style  line height  130   word wrap  break word    p The map from metric label to value allow list of this label  The key s format is  lt MetricName gt   lt LabelName gt   The value s format is  lt allowed value gt   lt allowed value gt    e g  metric1 label1  v1 v2 v3   metric1 label2  v1 v2 v3  metric2 label1  v1 v2 v3    p   td    tr    tr   td colspan  2    allow metric labels manifest string  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p The path to the manifest file that contains the allow list mapping  The format of the file is the same as the flag   allow metric labels  Note that the flag   allow metric labels will override the manifest file   p   td    tr    tr   td colspan  2    authentication kubeconfig string  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p kubeconfig file pointing at the  core  kubernetes server with enough rights to create tokenreviews authentication k8s io  This is optional  If empty  all token requests are considered to be anonymous and no client CA is looked up in the cluster   p   td    tr    tr   td colspan  2    authentication skip lookup  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p If false  the authentication kubeconfig will be used to lookup missing authentication configuration from the cluster   p   td    tr    tr   td colspan  2    authentication token webhook cache ttl duration nbsp  nbsp  nbsp  nbsp  nbsp Default  10s  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p The duration to cache responses from the webhook token authenticator   p   td    tr    tr   td colspan  2    authentication tolerate lookup failure nbsp  nbsp  nbsp  nbsp  nbsp Default  true  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p If true  failures to look up missing authentication configuration from the cluster are not considered fatal  Note that this can result in authentication that treats all requests as anonymous   p   td    tr    tr   td colspan  2    authorization always allow paths strings nbsp  nbsp  nbsp  nbsp  nbsp Default    healthz  readyz  livez   td    tr   tr   td   td  td style  line height  130   word wrap  break word    p A list of HTTP paths to skip during authorization  i e  these are authorized without contacting the  core  kubernetes server   p   td    tr    tr   td colspan  2    authorization kubeconfig string  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p kubeconfig file pointing at the  core  kubernetes server with enough rights to create subjectaccessreviews authorization k8s io  This is optional  If empty  all requests not skipped by authorization are forbidden   p   td    tr    tr   td colspan  2    authorization webhook cache authorized ttl duration nbsp  nbsp  nbsp  nbsp  nbsp Default  10s  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p The duration to cache  authorized  responses from the webhook authorizer   p   td    tr    tr   td colspan  2    authorization webhook cache unauthorized ttl duration nbsp  nbsp  nbsp  nbsp  nbsp Default  10s  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p The duration to cache  unauthorized  responses from the webhook authorizer   p   td    tr    tr   td colspan  2    bind address string nbsp  nbsp  nbsp  nbsp  nbsp Default  0 0 0 0  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p The IP address on which to listen for the   secure port port  The associated interface s  must be reachable by the rest of the cluster  and by CLI web clients  If blank or an unspecified address  0 0 0 0 or      all interfaces and IP address families will be used   p   td    tr    tr   td colspan  2    cert dir string  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p The directory where the TLS certs are located  If   tls cert file and   tls private key file are provided  this flag will be ignored   p   td    tr    tr   td colspan  2    client ca file string  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p If set  any request presenting a client certificate signed by one of the authorities in the client ca file is authenticated with an identity corresponding to the CommonName of the client certificate   p   td    tr    tr   td colspan  2    config string  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p The path to the configuration file   p   td    tr    tr   td colspan  2    contention profiling nbsp  nbsp  nbsp  nbsp  nbsp Default  true  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p DEPRECATED  enable block profiling  if profiling is enabled  This parameter is ignored if a config file is specified in   config   p   td    tr    tr   td colspan  2    disable http2 serving  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p If true  HTTP2 serving will be disabled  default false   p   td    tr    tr   td colspan  2    disabled metrics strings  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p This flag provides an escape hatch for misbehaving metrics  You must provide the fully qualified metric name in order to disable it  Disclaimer  disabling metrics is higher in precedence than showing hidden metrics   p   td    tr    tr   td colspan  2    emulated version strings  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p The versions different components emulate their capabilities  APIs  features       of  br  If set  the component will emulate the behavior of this version instead of the underlying binary version  br  Version format could only be major minor  for example     emulated version wardle 1 2 kube 1 31   Options are  br  kube 1 31  1 31  default 1 31 If the component is not specified  defaults to  quot kube quot   p   td    tr    tr   td colspan  2    feature gates colonSeparatedMultimapStringString  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p Comma separated list of component key value pairs that describe feature gates for alpha experimental features of different components  br  If the component is not specified  defaults to  quot kube quot   This flag can be repeatedly invoked  For example    feature gates  wardle featureA true wardle featureB false    feature gates  kube featureC true Options are  br  kube APIResponseCompression true false  BETA   default true  br  kube APIServerIdentity true false  BETA   default true  br  kube APIServerTracing true false  BETA   default true  br  kube APIServingWithRoutine true false  ALPHA   default false  br  kube AllAlpha true false  ALPHA   default false  br  kube AllBeta true false  BETA   default false  br  kube AnonymousAuthConfigurableEndpoints true false  ALPHA   default false  br  kube AnyVolumeDataSource true false  BETA   default true  br  kube AuthorizeNodeWithSelectors true false  ALPHA   default false  br  kube AuthorizeWithSelectors true false  ALPHA   default false  br  kube CPUManagerPolicyAlphaOptions true false  ALPHA   default false  br  kube CPUManagerPolicyBetaOptions true false  BETA   default true  br  kube CPUManagerPolicyOptions true false  BETA   default true  br  kube CRDValidationRatcheting true false  BETA   default true  br  kube CSIMigrationPortworx true false  BETA   default true  br  kube CSIVolumeHealth true false  ALPHA   default false  br  kube CloudControllerManagerWebhook true false  ALPHA   default false  br  kube ClusterTrustBundle true false  ALPHA   default false  br  kube ClusterTrustBundleProjection true false  ALPHA   default false  br  kube ComponentSLIs true false  BETA   default true  br  kube ConcurrentWatchObjectDecode true false  BETA   default false  br  kube ConsistentListFromCache true false  BETA   default true  br  kube ContainerCheckpoint true false  BETA   default true  br  kube ContextualLogging true false  BETA   default true  br  kube CoordinatedLeaderElection true false  ALPHA   default false  br  kube CronJobsScheduledAnnotation true false  BETA   default true  br  kube CrossNamespaceVolumeDataSource true false  ALPHA   default false  br  kube CustomCPUCFSQuotaPeriod true false  ALPHA   default false  br  kube CustomResourceFieldSelectors true false  BETA   default true  br  kube DRAControlPlaneController true false  ALPHA   default false  br  kube DisableAllocatorDualWrite true false  ALPHA   default false  br  kube DisableNodeKubeProxyVersion true false  BETA   default true  br  kube DynamicResourceAllocation true false  ALPHA   default false  br  kube EventedPLEG true false  ALPHA   default false  br  kube GracefulNodeShutdown true false  BETA   default true  br  kube GracefulNodeShutdownBasedOnPodPriority true false  BETA   default true  br  kube HPAScaleToZero true false  ALPHA   default false  br  kube HonorPVReclaimPolicy true false  BETA   default true  br  kube ImageMaximumGCAge true false  BETA   default true  br  kube ImageVolume true false  ALPHA   default false  br  kube InPlacePodVerticalScaling true false  ALPHA   default false  br  kube InTreePluginPortworxUnregister true false  ALPHA   default false  br  kube InformerResourceVersion true false  ALPHA   default false  br  kube JobBackoffLimitPerIndex true false  BETA   default true  br  kube JobManagedBy true false  ALPHA   default false  br  kube JobPodReplacementPolicy true false  BETA   default true  br  kube JobSuccessPolicy true false  BETA   default true  br  kube KubeletCgroupDriverFromCRI true false  BETA   default true  br  kube KubeletInUserNamespace true false  ALPHA   default false  br  kube KubeletPodResourcesDynamicResources true false  ALPHA   default false  br  kube KubeletPodResourcesGet true false  ALPHA   default false  br  kube KubeletSeparateDiskGC true false  BETA   default true  br  kube KubeletTracing true false  BETA   default true  br  kube LoadBalancerIPMode true false  BETA   default true  br  kube LocalStorageCapacityIsolationFSQuotaMonitoring true false  BETA   default false  br  kube LoggingAlphaOptions true false  ALPHA   default false  br  kube LoggingBetaOptions true false  BETA   default true  br  kube MatchLabelKeysInPodAffinity true false  BETA   default true  br  kube MatchLabelKeysInPodTopologySpread true false  BETA   default true  br  kube MaxUnavailableStatefulSet true false  ALPHA   default false  br  kube MemoryManager true false  BETA   default true  br  kube MemoryQoS true false  ALPHA   default false  br  kube MultiCIDRServiceAllocator true false  BETA   default false  br  kube MutatingAdmissionPolicy true false  ALPHA   default false  br  kube NFTablesProxyMode true false  BETA   default true  br  kube NodeInclusionPolicyInPodTopologySpread true false  BETA   default true  br  kube NodeLogQuery true false  BETA   default false  br  kube NodeSwap true false  BETA   default true  br  kube OpenAPIEnums true false  BETA   default true  br  kube PodAndContainerStatsFromCRI true false  ALPHA   default false  br  kube PodDeletionCost true false  BETA   default true  br  kube PodIndexLabel true false  BETA   default true  br  kube PodLifecycleSleepAction true false  BETA   default true  br  kube PodReadyToStartContainersCondition true false  BETA   default true  br  kube PortForwardWebsockets true false  BETA   default true  br  kube ProcMountType true false  BETA   default false  br  kube QOSReserved true false  ALPHA   default false  br  kube RecoverVolumeExpansionFailure true false  ALPHA   default false  br  kube RecursiveReadOnlyMounts true false  BETA   default true  br  kube RelaxedEnvironmentVariableValidation true false  ALPHA   default false  br  kube ReloadKubeletServerCertificateFile true false  BETA   default true  br  kube ResilientWatchCacheInitialization true false  BETA   default true  br  kube ResourceHealthStatus true false  ALPHA   default false  br  kube RetryGenerateName true false  BETA   default true  br  kube RotateKubeletServerCertificate true false  BETA   default true  br  kube RuntimeClassInImageCriApi true false  ALPHA   default false  br  kube SELinuxMount true false  ALPHA   default false  br  kube SELinuxMountReadWriteOncePod true false  BETA   default true  br  kube SchedulerQueueingHints true false  BETA   default false  br  kube SeparateCacheWatchRPC true false  BETA   default true  br  kube SeparateTaintEvictionController true false  BETA   default true  br  kube ServiceAccountTokenJTI true false  BETA   default true  br  kube ServiceAccountTokenNodeBinding true false  BETA   default true  br  kube ServiceAccountTokenNodeBindingValidation true false  BETA   default true  br  kube ServiceAccountTokenPodNodeInfo true false  BETA   default true  br  kube ServiceTrafficDistribution true false  BETA   default true  br  kube SidecarContainers true false  BETA   default true  br  kube SizeMemoryBackedVolumes true false  BETA   default true  br  kube StatefulSetAutoDeletePVC true false  BETA   default true  br  kube StorageNamespaceIndex true false  BETA   default true  br  kube StorageVersionAPI true false  ALPHA   default false  br  kube StorageVersionHash true false  BETA   default true  br  kube StorageVersionMigrator true false  ALPHA   default false  br  kube StrictCostEnforcementForVAP true false  BETA   default false  br  kube StrictCostEnforcementForWebhooks true false  BETA   default false  br  kube StructuredAuthenticationConfiguration true false  BETA   default true  br  kube StructuredAuthorizationConfiguration true false  BETA   default true  br  kube SupplementalGroupsPolicy true false  ALPHA   default false  br  kube TopologyAwareHints true false  BETA   default true  br  kube TopologyManagerPolicyAlphaOptions true false  ALPHA   default false  br  kube TopologyManagerPolicyBetaOptions true false  BETA   default true  br  kube TopologyManagerPolicyOptions true false  BETA   default true  br  kube TranslateStreamCloseWebsocketRequests true false  BETA   default true  br  kube UnauthenticatedHTTP2DOSMitigation true false  BETA   default true  br  kube UnknownVersionInteroperabilityProxy true false  ALPHA   default false  br  kube UserNamespacesPodSecurityStandards true false  ALPHA   default false  br  kube UserNamespacesSupport true false  BETA   default false  br  kube VolumeAttributesClass true false  BETA   default false  br  kube VolumeCapacityPriority true false  ALPHA   default false  br  kube WatchCacheInitializationPostStartHook true false  BETA   default false  br  kube WatchFromStorageWithoutResourceVersion true false  BETA   default false  br  kube WatchList true false  ALPHA   default false  br  kube WatchListClient true false  BETA   default false  br  kube WinDSR true false  ALPHA   default false  br  kube WinOverlay true false  BETA   default true  br  kube WindowsHostNetwork true false  ALPHA   default true   p   td    tr    tr   td colspan  2   h    help  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p help for kube scheduler  p   td    tr    tr   td colspan  2    http2 max streams per connection int  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p The limit that the server gives to clients for the maximum number of streams in an HTTP 2 connection  Zero means to use golang s default   p   td    tr    tr   td colspan  2    kube api burst int32 nbsp  nbsp  nbsp  nbsp  nbsp Default  100  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p DEPRECATED  burst to use while talking with kubernetes apiserver  This parameter is ignored if a config file is specified in   config   p   td    tr    tr   td colspan  2    kube api content type string nbsp  nbsp  nbsp  nbsp  nbsp Default   application vnd kubernetes protobuf   td    tr   tr   td   td  td style  line height  130   word wrap  break word    p DEPRECATED  content type of requests sent to apiserver  This parameter is ignored if a config file is specified in   config   p   td    tr    tr   td colspan  2    kube api qps float nbsp  nbsp  nbsp  nbsp  nbsp Default  50  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p DEPRECATED  QPS to use while talking with kubernetes apiserver  This parameter is ignored if a config file is specified in   config   p   td    tr    tr   td colspan  2    kubeconfig string  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p DEPRECATED  path to kubeconfig file with authorization and master location information  This parameter is ignored if a config file is specified in   config   p   td    tr    tr   td colspan  2    leader elect nbsp  nbsp  nbsp  nbsp  nbsp Default  true  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p Start a leader election client and gain leadership before executing the main loop  Enable this when running replicated components for high availability   p   td    tr    tr   td colspan  2    leader elect lease duration duration nbsp  nbsp  nbsp  nbsp  nbsp Default  15s  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p The duration that non leader candidates will wait after observing a leadership renewal until attempting to acquire leadership of a led but unrenewed leader slot  This is effectively the maximum duration that a leader can be stopped before it is replaced by another candidate  This is only applicable if leader election is enabled   p   td    tr    tr   td colspan  2    leader elect renew deadline duration nbsp  nbsp  nbsp  nbsp  nbsp Default  10s  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p The interval between attempts by the acting master to renew a leadership slot before it stops leading  This must be less than the lease duration  This is only applicable if leader election is enabled   p   td    tr    tr   td colspan  2    leader elect resource lock string nbsp  nbsp  nbsp  nbsp  nbsp Default   leases   td    tr   tr   td   td  td style  line height  130   word wrap  break word    p The type of resource object that is used for locking during leader election  Supported options are  leases    endpointsleases  and  configmapsleases    p   td    tr    tr   td colspan  2    leader elect resource name string nbsp  nbsp  nbsp  nbsp  nbsp Default   kube scheduler   td    tr   tr   td   td  td style  line height  130   word wrap  break word    p The name of resource object that is used for locking during leader election   p   td    tr    tr   td colspan  2    leader elect resource namespace string nbsp  nbsp  nbsp  nbsp  nbsp Default   kube system   td    tr   tr   td   td  td style  line height  130   word wrap  break word    p The namespace of resource object that is used for locking during leader election   p   td    tr    tr   td colspan  2    leader elect retry period duration nbsp  nbsp  nbsp  nbsp  nbsp Default  2s  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p The duration the clients should wait between attempting acquisition and renewal of a leadership  This is only applicable if leader election is enabled   p   td    tr    tr   td colspan  2    log flush frequency duration nbsp  nbsp  nbsp  nbsp  nbsp Default  5s  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p Maximum number of seconds between log flushes  p   td    tr    tr   td colspan  2    log text info buffer size quantity  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p  Alpha  In text format with split output streams  the info messages can be buffered for a while to increase performance  The default value of zero bytes disables buffering  The size can be specified as number of bytes  512   multiples of 1000  1K   multiples of 1024  2Ki   or powers of those  3M  4G  5Mi  6Gi   Enable the LoggingAlphaOptions feature gate to use this   p   td    tr    tr   td colspan  2    log text split stream  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p  Alpha  In text format  write error messages to stderr and info messages to stdout  The default is to write a single stream to stdout  Enable the LoggingAlphaOptions feature gate to use this   p   td    tr    tr   td colspan  2    logging format string nbsp  nbsp  nbsp  nbsp  nbsp Default   text   td    tr   tr   td   td  td style  line height  130   word wrap  break word    p Sets the log format  Permitted formats   quot text quot    p   td    tr    tr   td colspan  2    master string  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p The address of the Kubernetes API server  overrides any value in kubeconfig   p   td    tr    tr   td colspan  2    permit address sharing  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p If true  SO REUSEADDR will be used when binding the port  This allows binding to wildcard IPs like 0 0 0 0 and specific IPs in parallel  and it avoids waiting for the kernel to release sockets in TIME WAIT state   default false   p   td    tr    tr   td colspan  2    permit port sharing  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p If true  SO REUSEPORT will be used when binding the port  which allows more than one instance to bind on the same address and port   default false   p   td    tr    tr   td colspan  2    pod max in unschedulable pods duration duration nbsp  nbsp  nbsp  nbsp  nbsp Default  5m0s  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p DEPRECATED  the maximum time a pod can stay in unschedulablePods  If a pod stays in unschedulablePods for longer than this value  the pod will be moved from unschedulablePods to backoffQ or activeQ  This flag is deprecated and will be removed in a future version   p   td    tr    tr   td colspan  2    profiling nbsp  nbsp  nbsp  nbsp  nbsp Default  true  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p DEPRECATED  enable profiling via web interface host port debug pprof   This parameter is ignored if a config file is specified in   config   p   td    tr    tr   td colspan  2    requestheader allowed names strings  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p List of client certificate common names to allow to provide usernames in headers specified by   requestheader username headers  If empty  any client certificate validated by the authorities in   requestheader client ca file is allowed   p   td    tr    tr   td colspan  2    requestheader client ca file string  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p Root certificate bundle to use to verify client certificates on incoming requests before trusting usernames in headers specified by   requestheader username headers  WARNING  generally do not depend on authorization being already done for incoming requests   p   td    tr    tr   td colspan  2    requestheader extra headers prefix strings nbsp  nbsp  nbsp  nbsp  nbsp Default   x remote extra    td    tr   tr   td   td  td style  line height  130   word wrap  break word    p List of request header prefixes to inspect  X Remote Extra  is suggested   p   td    tr    tr   td colspan  2    requestheader group headers strings nbsp  nbsp  nbsp  nbsp  nbsp Default   x remote group   td    tr   tr   td   td  td style  line height  130   word wrap  break word    p List of request headers to inspect for groups  X Remote Group is suggested   p   td    tr    tr   td colspan  2    requestheader username headers strings nbsp  nbsp  nbsp  nbsp  nbsp Default   x remote user   td    tr   tr   td   td  td style  line height  130   word wrap  break word    p List of request headers to inspect for usernames  X Remote User is common   p   td    tr    tr   td colspan  2    secure port int nbsp  nbsp  nbsp  nbsp  nbsp Default  10259  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p The port on which to serve HTTPS with authentication and authorization  If 0  don t serve HTTPS at all   p   td    tr    tr   td colspan  2    show hidden metrics for version string  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p The previous version for which you want to show hidden metrics  Only the previous minor version is meaningful  other values will not be allowed  The format is  lt major gt   lt minor gt   e g    1 16   The purpose of this format is make sure you have the opportunity to notice if the next release hides additional metrics  rather than being surprised when they are permanently removed in the release after that   p   td    tr    tr   td colspan  2    tls cert file string  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p File containing the default x509 Certificate for HTTPS   CA cert  if any  concatenated after server cert   If HTTPS serving is enabled  and   tls cert file and   tls private key file are not provided  a self signed certificate and key are generated for the public address and saved to the directory specified by   cert dir   p   td    tr    tr   td colspan  2    tls cipher suites strings  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p Comma separated list of cipher suites for the server  If omitted  the default Go cipher suites will be used  br  Preferred values  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  br  Insecure values  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   p   td    tr    tr   td colspan  2    tls min version string  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p Minimum TLS version supported  Possible values  VersionTLS10  VersionTLS11  VersionTLS12  VersionTLS13  p   td    tr    tr   td colspan  2    tls private key file string  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p File containing the default x509 private key matching   tls cert file   p   td    tr    tr   td colspan  2    tls sni cert key string  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p A pair of x509 certificate and private key file paths  optionally suffixed with a list of domain patterns which are fully qualified domain names  possibly with prefixed wildcard segments  The domain patterns also allow IP addresses  but IPs should only be used if the apiserver has visibility to the IP address requested by a client  If no domain patterns are provided  the names of the certificate are extracted  Non wildcard matches trump over wildcard matches  explicit domain patterns trump over extracted names  For multiple key certificate pairs  use the   tls sni cert key multiple times  Examples   quot example crt example key quot  or  quot foo crt foo key   foo com foo com quot    p   td    tr    tr   td colspan  2   v    v int  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p number for the log level verbosity  p   td    tr    tr   td colspan  2    version version  true   td    tr   tr   td   td  td style  line height  130   word wrap  break word    p   version    version raw prints version information and quits    version vX Y Z    sets the reported version  p   td    tr    tr   td colspan  2    vmodule pattern N      td    tr   tr   td   td  td style  line height  130   word wrap  break word    p comma separated list of pattern N settings for file filtered logging  only works for text log format   p   td    tr    tr   td colspan  2    write config to string  td    tr   tr   td   td  td style  line height  130   word wrap  break word    p If set  write the configuration values to this file and exit   p   td    tr     tbody    table


kubernetes reference name reference contenttype concept card weight 10 title Feature Gates overview weight 60

Answer:
---
title: Feature Gates
weight: 10
content_type: concept
card:
  name: reference
  weight: 60
---

<!-- overview -->
This page contains an overview of the various feature gates an administrator
can specify on different Kubernetes components.

See [feature stages](#feature-stages) for an explanation of the stages for a feature.

<!-- body -->
## Overview

Feature gates are a set of key=value pairs that describe Kubernetes features.
You can turn these features on or off using the `--feature-gates` command line flag
on each Kubernetes component.

Each Kubernetes component lets you enable or disable a set of feature gates that
are relevant to that component.
Use `-h` flag to see a full set of feature gates for all components.
To set feature gates for a component, such as kubelet, use the `--feature-gates`
flag assigned to a list of feature pairs:

```shell
--feature-gates=...,GracefulNodeShutdown=true
```

The following tables are a summary of the feature gates that you can set on
different Kubernetes components.

- The "Since" column contains the Kubernetes release when a feature is introduced
  or its release stage is changed.
- The "Until" column, if not empty, contains the last Kubernetes release in which
  you can still use a feature gate.
- If a feature is in the Alpha or Beta state, you can find the feature listed
  in the [Alpha/Beta feature gate table](#feature-gates-for-alpha-or-beta-features).
- If a feature is stable you can find all stages for that feature listed in the
  [Graduated/Deprecated feature gate table](#feature-gates-for-graduated-or-deprecated-features).
- The [Graduated/Deprecated feature gate table](#feature-gates-for-graduated-or-deprecated-features)
  also lists deprecated and withdrawn features.

For a reference to old feature gates that are removed, please refer to
[feature gates removed](/docs/reference/command-line-tools-reference/feature-gates-removed/).

<!-- Want to edit this table? See https://k8s.io/docs/contribute/new-content/new-features/#ready-for-review-feature-gates -->
### Feature gates for Alpha or Beta features

<!-- Want to edit this table? See https://k8s.io/docs/contribute/new-content/new-features/#ready-for-review-feature-gates -->
### Feature gates for graduated or deprecated features

## Using a feature

### Feature stages

A feature can be in *Alpha*, *Beta* or *GA* stage.
An *Alpha* feature means:

* Disabled by default.
* Might be buggy. Enabling the feature may expose bugs.
* Support for feature may be dropped at any time without notice.
* The API may change in incompatible ways in a later software release without notice.
* Recommended for use only in short-lived testing clusters, due to increased
  risk of bugs and lack of long-term support.

A *Beta* feature means:

* Usually enabled by default. Beta API groups are
  [disabled by default](https://github.com/kubernetes/enhancements/tree/master/keps/sig-architecture/3136-beta-apis-off-by-default).
* The feature is well tested. Enabling the feature is considered safe.
* Support for the overall feature will not be dropped, though details may change.
* The schema and/or semantics of objects may change in incompatible ways in a
  subsequent beta or stable release. When this happens, we will provide instructions
  for migrating to the next version. This may require deleting, editing, and
  re-creating API objects. The editing process may require some thought.
  This may require downtime for applications that rely on the feature.
* Recommended for only non-business-critical uses because of potential for
  incompatible changes in subsequent releases. If you have multiple clusters
  that can be upgraded independently, you may be able to relax this restriction.

Please do try *Beta* features and give feedback on them!
After they exit beta, it may not be practical for us to make more changes.

A *General Availability* (GA) feature is also referred to as a *stable* feature. It means:

* The feature is always enabled; you cannot disable it.
* The corresponding feature gate is no longer needed.
* Stable versions of features will appear in released software for many subsequent versions.

## List of feature gates {#feature-gates}

Each feature gate is designed for enabling/disabling a specific feature.

<!-- Want to edit this list? See https://k8s.io/docs/contribute/new-content/new-features/#ready-for-review-feature-gates -->

##

* The [deprecation policy](/docs/reference/using-api/deprecation-policy/) for Kubernetes explains
  the project's approach to removing features and components.
* Since Kubernetes 1.24, new beta APIs are not enabled by default.  When enabling a beta
  feature, you will also need to enable any associated API resources.
  For example, to enable a particular resource like
  `storage.k8s.io/v1beta1/csistoragecapacities`, set `--runtime-config=storage.k8s.io/v1beta1/csistoragecapacities`.
  See [API Versioning](/docs/reference/using-api/#api-versioning) for more details on the command line flags.

title  Feature Gates weight  10 content type  concept card    name  reference   weight  60           overview     This page contains an overview of the various feature gates an administrator can specify on different Kubernetes components   See  feature stages   feature stages  for an explanation of the stages for a feature         body        Overview  Feature gates are a set of key value pairs that describe Kubernetes features  You can turn these features on or off using the    feature gates  command line flag on each Kubernetes component   Each Kubernetes component lets you enable or disable a set of feature gates that are relevant to that component  Use   h  flag to see a full set of feature gates for all components  To set feature gates for a component  such as kubelet  use the    feature gates  flag assigned to a list of feature pairs      shell   feature gates     GracefulNodeShutdown true      The following tables are a summary of the feature gates that you can set on different Kubernetes components     The  Since  column contains the Kubernetes release when a feature is introduced   or its release stage is changed    The  Until  column  if not empty  contains the last Kubernetes release in which   you can still use a feature gate    If a feature is in the Alpha or Beta state  you can find the feature listed   in the  Alpha Beta feature gate table   feature gates for alpha or beta features     If a feature is stable you can find all stages for that feature listed in the    Graduated Deprecated feature gate table   feature gates for graduated or deprecated features     The  Graduated Deprecated feature gate table   feature gates for graduated or deprecated features    also lists deprecated and withdrawn features    For a reference to old feature gates that are removed  please refer to  feature gates removed   docs reference command line tools reference feature gates removed           Want to edit this table  See https   k8s io docs contribute new content new features  ready for review feature gates         Feature gates for Alpha or Beta features         Want to edit this table  See https   k8s io docs contribute new content new features  ready for review feature gates         Feature gates for graduated or deprecated features       Using a feature      Feature stages  A feature can be in  Alpha    Beta  or  GA  stage  An  Alpha  feature means     Disabled by default    Might be buggy  Enabling the feature may expose bugs    Support for feature may be dropped at any time without notice    The API may change in incompatible ways in a later software release without notice    Recommended for use only in short lived testing clusters  due to increased   risk of bugs and lack of long term support   A  Beta  feature means     Usually enabled by default  Beta API groups are    disabled by default  https   github com kubernetes enhancements tree master keps sig architecture 3136 beta apis off by default     The feature is well tested  Enabling the feature is considered safe    Support for the overall feature will not be dropped  though details may change    The schema and or semantics of objects may change in incompatible ways in a   subsequent beta or stable release  When this happens  we will provide instructions   for migrating to the next version  This may require deleting  editing  and   re creating API objects  The editing process may require some thought    This may require downtime for applications that rely on the feature    Recommended for only non business critical uses because of potential for   incompatible changes in subsequent releases  If you have multiple clusters   that can be upgraded independently  you may be able to relax this restriction    Please do try  Beta  features and give feedback on them  After they exit beta  it may not be practical for us to make more changes    A  General Availability   GA  feature is also referred to as a  stable  feature  It means     The feature is always enabled  you cannot disable it    The corresponding feature gate is no longer needed    Stable versions of features will appear in released software for many subsequent versions      List of feature gates   feature gates   Each feature gate is designed for enabling disabling a specific feature        Want to edit this list  See https   k8s io docs contribute new content new features  ready for review feature gates              The  deprecation policy   docs reference using api deprecation policy   for Kubernetes explains   the project s approach to removing features and components    Since Kubernetes 1 24  new beta APIs are not enabled by default   When enabling a beta   feature  you will also need to enable any associated API resources    For example  to enable a particular resource like    storage k8s io v1beta1 csistoragecapacities   set    runtime config storage k8s io v1beta1 csistoragecapacities     See  API Versioning   docs reference using api  api versioning  for more details on the command line flags


kubernetes reference title Flow control API Priority and Fairness controls the behavior of the Kubernetes API server in an overload situation You can find more information about it in the weight 130 overview

Answer:
---
title: Flow control
weight: 130
---

<!-- overview -->

API Priority and Fairness controls the behavior of the Kubernetes API server in
an overload situation. You can find more information about it in the
[API Priority and Fairness](/docs/concepts/cluster-administration/flow-control/)
documentation.

<!-- body -->

## Diagnostics

Every HTTP response from an API server with the priority and fairness feature
enabled has two extra headers: `X-Kubernetes-PF-FlowSchema-UID` and
`X-Kubernetes-PF-PriorityLevel-UID`, noting the flow schema that matched the request
and the priority level to which it was assigned, respectively. The API objects'
names are not included in these headers (to avoid revealing details in case the
requesting user does not have permission to view them). When debugging, you
can use a command such as:

```shell
kubectl get flowschemas -o custom-columns="uid:{metadata.uid},name:{metadata.name}"
kubectl get prioritylevelconfigurations -o custom-columns="uid:{metadata.uid},name:{metadata.name}"
```

to get a mapping of UIDs to names for both FlowSchemas and
PriorityLevelConfigurations.

## Debug endpoints

With the `APIPriorityAndFairness` feature enabled, the `kube-apiserver`
serves the following additional paths at its HTTP(S) ports.

You need to ensure you have permissions to access these endpoints.
You don't have to do anything if you are using admin.
Permissions can be granted if needed following the [RBAC](/docs/reference/access-authn-authz/rbac/) doc
to access `/debug/api_priority_and_fairness/` by specifying `nonResourceURLs`.

- `/debug/api_priority_and_fairness/dump_priority_levels` - a listing of
  all the priority levels and the current state of each.  You can fetch like this:

  ```shell
  kubectl get --raw /debug/api_priority_and_fairness/dump_priority_levels
  ```

  The output will be in CSV and similar to this:

  ```none
  PriorityLevelName, ActiveQueues, IsIdle, IsQuiescing, WaitingRequests, ExecutingRequests, DispatchedRequests, RejectedRequests, TimedoutRequests, CancelledRequests
  catch-all,         0,            true,   false,       0,               0,                 1,                  0,                0,                0
  exempt,            0,            true,   false,       0,               0,                 0,                  0,                0,                0
  global-default,    0,            true,   false,       0,               0,                 46,                 0,                0,                0
  leader-election,   0,            true,   false,       0,               0,                 4,                  0,                0,                0
  node-high,         0,            true,   false,       0,               0,                 34,                 0,                0,                0
  system,            0,            true,   false,       0,               0,                 48,                 0,                0,                0
  workload-high,     0,            true,   false,       0,               0,                 500,                0,                0,                0
  workload-low,      0,            true,   false,       0,               0,                 0,                  0,                0,                0
  ```

  Explanation for selected column names:
  - `IsQuiescing` indicates if this priority level will be removed when its queues have been drained.

- `/debug/api_priority_and_fairness/dump_queues` - a listing of all the
  queues and their current state.  You can fetch like this:

  ```shell
  kubectl get --raw /debug/api_priority_and_fairness/dump_queues
  ```

  The output will be in CSV and similar to this:

  ```none
  PriorityLevelName, Index,  PendingRequests, ExecutingRequests, SeatsInUse, NextDispatchR,   InitialSeatsSum, MaxSeatsSum, TotalWorkSum
  workload-low,      14,     27,              0,                 0,          77.64342019ss,   270,             270,         0.81000000ss
  workload-low,      74,     26,              0,                 0,          76.95387841ss,   260,             260,         0.78000000ss
  ...
  leader-election,   0,      0,               0,                 0,          5088.87053833ss, 0,               0,           0.00000000ss
  leader-election,   1,      0,               0,                 0,          0.00000000ss,    0,               0,           0.00000000ss
  ...
  workload-high,     0,      0,               0,                 0,          0.00000000ss,    0,               0,           0.00000000ss
  workload-high,     1,      0,               0,                 0,          1119.44936475ss, 0,               0,           0.00000000ss
  ```

  Explanation for selected column names:
  - `NextDispatchR`: The R progress meter reading, in units of seat-seconds, at
    which the next request will be dispatched.
  - `InitialSeatsSum`: The sum of InitialSeats associated with all requests in
    a given queue.
  - `MaxSeatsSum`: The sum of MaxSeats associated with all requests in a given
    queue.
  - `TotalWorkSum`: The sum of total work, in units of seat-seconds, of all
    waiting requests in a given queue.

  Note: `seat-second` (abbreviate as `ss`) is a measure of work, in units of
  seat-seconds, in the APF world.

- `/debug/api_priority_and_fairness/dump_requests` - a listing of all the requests
  including requests waiting in a queue and requests being executing.
  You can fetch like this:

  ```shell
  kubectl get --raw /debug/api_priority_and_fairness/dump_requests
  ```

  The output will be in CSV and similar to this:

  ```none
  PriorityLevelName, FlowSchemaName,   QueueIndex, RequestIndexInQueue, FlowDistingsher,                        ArriveTime,                     InitialSeats, FinalSeats, AdditionalLatency, StartTime
  exempt,            exempt,           -1,         -1,                  ,                                       2023-07-15T04:51:25.596404345Z, 1,            0,          0s,                2023-07-15T04:51:25.596404345Z
  workload-low,      service-accounts, 14,         0,                   system:serviceaccount:default:loadtest, 2023-07-18T00:12:51.386556253Z, 10,           0,          0s,                0001-01-01T00:00:00Z
  workload-low,      service-accounts, 14,         1,                   system:serviceaccount:default:loadtest, 2023-07-18T00:12:51.487092539Z, 10,           0,          0s,                0001-01-01T00:00:00Z
  ```

  You can get a more detailed listing with a command like this:

  ```shell
  kubectl get --raw '/debug/api_priority_and_fairness/dump_requests?includeRequestDetails=1'
  ```

  The output will be in CSV and similar to this:

  ```none
  PriorityLevelName, FlowSchemaName,   QueueIndex, RequestIndexInQueue, FlowDistingsher,                        ArriveTime,                     InitialSeats, FinalSeats, AdditionalLatency, StartTime,                      UserName,                               Verb,   APIPath,                                   Namespace,   Name,   APIVersion, Resource,   SubResource
  exempt,            exempt,           -1,         -1,                  ,                                       2023-07-15T04:51:25.596404345Z, 1,            0,          0s,                2023-07-15T04:51:25.596404345Z, system:serviceaccount:system:admin,     list,   /api/v1/namespaces/kube-stress/configmaps, kube-stress, ,       v1,         configmaps,
  workload-low,      service-accounts, 14,         0,                   system:serviceaccount:default:loadtest, 2023-07-18T00:13:08.986534842Z, 10,           0,          0s,                0001-01-01T00:00:00Z,           system:serviceaccount:default:loadtest, list,   /api/v1/namespaces/kube-stress/configmaps, kube-stress, ,       v1,         configmaps,
  workload-low,      service-accounts, 14,         1,                   system:serviceaccount:default:loadtest, 2023-07-18T00:13:09.086476021Z, 10,           0,          0s,                0001-01-01T00:00:00Z,           system:serviceaccount:default:loadtest, list,   /api/v1/namespaces/kube-stress/configmaps, kube-stress, ,       v1,         configmaps,
  ```

  Explanation for selected column names:
  - `QueueIndex`: The index of the queue. It will be -1 for priority levels
    without queues.
  - `RequestIndexInQueue`: The index in the queue for a given request. It will
    be -1 for executing requests.
  - `InitialSeats`: The number of seats will be occupied during the initial
    (normal) stage of execution of the request.
  - `FinalSeats`: The number of seats will be occupied during the final stage
    of request execution, accounting for the associated WATCH notifications.
  - `AdditionalLatency`: The extra time taken during the final stage of request
    execution. FinalSeats will be occupied during this time period. It does not
    mean any latency that a user will observe.
  - `StartTime`: The time a request starts to execute. It will be
    0001-01-01T00:00:00Z for queued requests.

## Debug logging

At `-v=3` or more verbosity, the API server outputs an httplog line for every
request in the API server log, and it includes the following attributes.

- `apf_fs`: the name of the flow schema to which the request was classified.
- `apf_pl`: the name of the priority level for that flow schema.
- `apf_iseats`: the number of seats determined for the initial
  (normal) stage of execution of the request.
- `apf_fseats`: the number of seats determined for the final stage of
  execution (accounting for the associated `watch` notifications) of the
  request.
- `apf_additionalLatency`: the duration of the final stage of
  execution of the request.

At higher levels of verbosity there will be log lines exposing details
of how APF handled the request, primarily for debugging purposes.

## Response headers

APF adds the following two headers to each HTTP response message.
They won't appear in the audit log. They can be viewed from the client side.
For client using `klog`, use verbosity `-v=8` or higher to view these headers.

- `X-Kubernetes-PF-FlowSchema-UID` holds the UID of the FlowSchema
  object to which the corresponding request was classified.
- `X-Kubernetes-PF-PriorityLevel-UID` holds the UID of the
  PriorityLevelConfiguration object associated with that FlowSchema.

##

For background information on design details for API priority and fairness, see
the [enhancement proposal](https://github.com/kubernetes/enhancements/tree/master/keps/sig-api-machinery/1040-priority-and-fairness).

title  Flow control weight  130           overview      API Priority and Fairness controls the behavior of the Kubernetes API server in an overload situation  You can find more information about it in the  API Priority and Fairness   docs concepts cluster administration flow control   documentation        body         Diagnostics  Every HTTP response from an API server with the priority and fairness feature enabled has two extra headers   X Kubernetes PF FlowSchema UID  and  X Kubernetes PF PriorityLevel UID   noting the flow schema that matched the request and the priority level to which it was assigned  respectively  The API objects  names are not included in these headers  to avoid revealing details in case the requesting user does not have permission to view them   When debugging  you can use a command such as      shell kubectl get flowschemas  o custom columns  uid  metadata uid  name  metadata name   kubectl get prioritylevelconfigurations  o custom columns  uid  metadata uid  name  metadata name        to get a mapping of UIDs to names for both FlowSchemas and PriorityLevelConfigurations      Debug endpoints  With the  APIPriorityAndFairness  feature enabled  the  kube apiserver  serves the following additional paths at its HTTP S  ports   You need to ensure you have permissions to access these endpoints  You don t have to do anything if you are using admin  Permissions can be granted if needed following the  RBAC   docs reference access authn authz rbac   doc to access   debug api priority and fairness   by specifying  nonResourceURLs        debug api priority and fairness dump priority levels    a listing of   all the priority levels and the current state of each   You can fetch like this        shell   kubectl get   raw  debug api priority and fairness dump priority levels          The output will be in CSV and similar to this        none   PriorityLevelName  ActiveQueues  IsIdle  IsQuiescing  WaitingRequests  ExecutingRequests  DispatchedRequests  RejectedRequests  TimedoutRequests  CancelledRequests   catch all          0             true    false        0                0                  1                   0                 0                 0   exempt             0             true    false        0                0                  0                   0                 0                 0   global default     0             true    false        0                0                  46                  0                 0                 0   leader election    0             true    false        0                0                  4                   0                 0                 0   node high          0             true    false        0                0                  34                  0                 0                 0   system             0             true    false        0                0                  48                  0                 0                 0   workload high      0             true    false        0                0                  500                 0                 0                 0   workload low       0             true    false        0                0                  0                   0                 0                 0          Explanation for selected column names       IsQuiescing  indicates if this priority level will be removed when its queues have been drained       debug api priority and fairness dump queues    a listing of all the   queues and their current state   You can fetch like this        shell   kubectl get   raw  debug api priority and fairness dump queues          The output will be in CSV and similar to this        none   PriorityLevelName  Index   PendingRequests  ExecutingRequests  SeatsInUse  NextDispatchR    InitialSeatsSum  MaxSeatsSum  TotalWorkSum   workload low       14      27               0                  0           77 64342019ss    270              270          0 81000000ss   workload low       74      26               0                  0           76 95387841ss    260              260          0 78000000ss         leader election    0       0                0                  0           5088 87053833ss  0                0            0 00000000ss   leader election    1       0                0                  0           0 00000000ss     0                0            0 00000000ss         workload high      0       0                0                  0           0 00000000ss     0                0            0 00000000ss   workload high      1       0                0                  0           1119 44936475ss  0                0            0 00000000ss          Explanation for selected column names       NextDispatchR   The R progress meter reading  in units of seat seconds  at     which the next request will be dispatched       InitialSeatsSum   The sum of InitialSeats associated with all requests in     a given queue       MaxSeatsSum   The sum of MaxSeats associated with all requests in a given     queue       TotalWorkSum   The sum of total work  in units of seat seconds  of all     waiting requests in a given queue     Note   seat second   abbreviate as  ss   is a measure of work  in units of   seat seconds  in the APF world       debug api priority and fairness dump requests    a listing of all the requests   including requests waiting in a queue and requests being executing    You can fetch like this        shell   kubectl get   raw  debug api priority and fairness dump requests          The output will be in CSV and similar to this        none   PriorityLevelName  FlowSchemaName    QueueIndex  RequestIndexInQueue  FlowDistingsher                         ArriveTime                      InitialSeats  FinalSeats  AdditionalLatency  StartTime   exempt             exempt             1           1                                                           2023 07 15T04 51 25 596404345Z  1             0           0s                 2023 07 15T04 51 25 596404345Z   workload low       service accounts  14          0                    system serviceaccount default loadtest  2023 07 18T00 12 51 386556253Z  10            0           0s                 0001 01 01T00 00 00Z   workload low       service accounts  14          1                    system serviceaccount default loadtest  2023 07 18T00 12 51 487092539Z  10            0           0s                 0001 01 01T00 00 00Z          You can get a more detailed listing with a command like this        shell   kubectl get   raw   debug api priority and fairness dump requests includeRequestDetails 1           The output will be in CSV and similar to this        none   PriorityLevelName  FlowSchemaName    QueueIndex  RequestIndexInQueue  FlowDistingsher                         ArriveTime                      InitialSeats  FinalSeats  AdditionalLatency  StartTime                       UserName                                Verb    APIPath                                    Namespace    Name    APIVersion  Resource    SubResource   exempt             exempt             1           1                                                           2023 07 15T04 51 25 596404345Z  1             0           0s                 2023 07 15T04 51 25 596404345Z  system serviceaccount system admin      list     api v1 namespaces kube stress configmaps  kube stress          v1          configmaps    workload low       service accounts  14          0                    system serviceaccount default loadtest  2023 07 18T00 13 08 986534842Z  10            0           0s                 0001 01 01T00 00 00Z            system serviceaccount default loadtest  list     api v1 namespaces kube stress configmaps  kube stress          v1          configmaps    workload low       service accounts  14          1                    system serviceaccount default loadtest  2023 07 18T00 13 09 086476021Z  10            0           0s                 0001 01 01T00 00 00Z            system serviceaccount default loadtest  list     api v1 namespaces kube stress configmaps  kube stress          v1          configmaps           Explanation for selected column names       QueueIndex   The index of the queue  It will be  1 for priority levels     without queues       RequestIndexInQueue   The index in the queue for a given request  It will     be  1 for executing requests       InitialSeats   The number of seats will be occupied during the initial      normal  stage of execution of the request       FinalSeats   The number of seats will be occupied during the final stage     of request execution  accounting for the associated WATCH notifications       AdditionalLatency   The extra time taken during the final stage of request     execution  FinalSeats will be occupied during this time period  It does not     mean any latency that a user will observe       StartTime   The time a request starts to execute  It will be     0001 01 01T00 00 00Z for queued requests      Debug logging  At   v 3  or more verbosity  the API server outputs an httplog line for every request in the API server log  and it includes the following attributes      apf fs   the name of the flow schema to which the request was classified     apf pl   the name of the priority level for that flow schema     apf iseats   the number of seats determined for the initial    normal  stage of execution of the request     apf fseats   the number of seats determined for the final stage of   execution  accounting for the associated  watch  notifications  of the   request     apf additionalLatency   the duration of the final stage of   execution of the request   At higher levels of verbosity there will be log lines exposing details of how APF handled the request  primarily for debugging purposes      Response headers  APF adds the following two headers to each HTTP response message  They won t appear in the audit log  They can be viewed from the client side  For client using  klog   use verbosity   v 8  or higher to view these headers      X Kubernetes PF FlowSchema UID  holds the UID of the FlowSchema   object to which the corresponding request was classified     X Kubernetes PF PriorityLevel UID  holds the UID of the   PriorityLevelConfiguration object associated with that FlowSchema        For background information on design details for API priority and fairness  see the  enhancement proposal  https   github com kubernetes enhancements tree master keps sig api machinery 1040 priority and fairness


kubernetes reference weight 80 monitoring and maintaining node status to ensure a healthy and stable cluster aspect of managing a Kubernetes cluster In this article we ll cover the basics of contenttype reference title Node Status overview The status of a in Kubernetes is a critical

Answer:
---
content_type: reference
title: Node Status
weight: 80
---
<!-- overview -->

The status of a [node](/docs/concepts/architecture/nodes/) in Kubernetes is a critical
aspect of managing a Kubernetes cluster. In this article, we'll cover the basics of
monitoring and maintaining node status to ensure a healthy and stable cluster.

## Node status fields

A Node's status contains the following information:

* [Addresses](#addresses)
* [Conditions](#condition)
* [Capacity and Allocatable](#capacity)
* [Info](#info)

You can use `kubectl` to view a Node's status and other details:

```shell
kubectl describe node <insert-node-name-here>
```

Each section of the output is described below.

## Addresses

The usage of these fields varies depending on your cloud provider or bare metal configuration.

* HostName: The hostname as reported by the node's kernel. Can be overridden via the kubelet
  `--hostname-override` parameter.
* ExternalIP: Typically the IP address of the node that is externally routable (available from
  outside the cluster).
* InternalIP: Typically the IP address of the node that is routable only within the cluster.

## Conditions {#condition}

The `conditions` field describes the status of all `Running` nodes. Examples of conditions include:

| Node Condition       | Description |
|----------------------|-------------|
| `Ready`              | `True` if the node is healthy and ready to accept pods, `False` if the node is not healthy and is not accepting pods, and `Unknown` if the node controller has not heard from the node in the last `node-monitor-grace-period` (default is 40 seconds) |
| `DiskPressure`       | `True` if pressure exists on the disk size—that is, if the disk capacity is low; otherwise `False` |
| `MemoryPressure`     | `True` if pressure exists on the node memory—that is, if the node memory is low; otherwise `False` |
| `PIDPressure`        | `True` if pressure exists on the processes—that is, if there are too many processes on the node; otherwise `False` |
| `NetworkUnavailable` | `True` if the network for the node is not correctly configured, otherwise `False` |

If you use command-line tools to print details of a cordoned Node, the Condition includes
`SchedulingDisabled`. `SchedulingDisabled` is not a Condition in the Kubernetes API; instead,
cordoned nodes are marked Unschedulable in their spec.

In the Kubernetes API, a node's condition is represented as part of the `.status`
of the Node resource. For example, the following JSON structure describes a healthy node:

```json
"conditions": [
  {
    "type": "Ready",
    "status": "True",
    "reason": "KubeletReady",
    "message": "kubelet is posting ready status",
    "lastHeartbeatTime": "2019-06-05T18:38:35Z",
    "lastTransitionTime": "2019-06-05T11:41:27Z"
  }
]
```

When problems occur on nodes, the Kubernetes control plane automatically creates
[taints](/docs/concepts/scheduling-eviction/taint-and-toleration/) that match the conditions
affecting the node. An example of this is when the `status` of the Ready condition
remains `Unknown` or `False` for longer than the kube-controller-manager's `NodeMonitorGracePeriod`,
which defaults to 40 seconds. This will cause either an `node.kubernetes.io/unreachable` taint, for an `Unknown` status,
or a `node.kubernetes.io/not-ready` taint, for a `False` status, to be added to the Node.

These taints affect pending pods as the scheduler takes the Node's taints into consideration when
assigning a pod to a Node. Existing pods scheduled to the node may be evicted due to the application
of `NoExecute` taints. Pods may also have  that let
them schedule to and continue running on a Node even though it has a specific taint.

See [Taint Based Evictions](/docs/concepts/scheduling-eviction/taint-and-toleration/#taint-based-evictions) and
[Taint Nodes by Condition](/docs/concepts/scheduling-eviction/taint-and-toleration/#taint-nodes-by-condition)
for more details.

## Capacity and Allocatable {#capacity}

Describes the resources available on the node: CPU, memory, and the maximum
number of pods that can be scheduled onto the node.

The fields in the capacity block indicate the total amount of resources that a
Node has. The allocatable block indicates the amount of resources on a
Node that is available to be consumed by normal Pods.

You may read more about capacity and allocatable resources while learning how
to [reserve compute resources](/docs/tasks/administer-cluster/reserve-compute-resources/#node-allocatable)
on a Node.

## Info

Describes general information about the node, such as kernel version, Kubernetes
version (kubelet and kube-proxy version), container runtime details, and which
operating system the node uses.
The kubelet gathers this information from the node and publishes it into
the Kubernetes API.

## Heartbeats

Heartbeats, sent by Kubernetes nodes, help your cluster determine the
availability of each node, and to take action when failures are detected.

For nodes there are two forms of heartbeats:

* updates to the `.status` of a Node
* [Lease](/docs/concepts/architecture/leases/) objects
  within the `kube-node-lease`
  .
  Each Node has an associated Lease object.

Compared to updates to `.status` of a Node, a Lease is a lightweight resource.
Using Leases for heartbeats reduces the performance impact of these updates
for large clusters.

The kubelet is responsible for creating and updating the `.status` of Nodes,
and for updating their related Leases.

- The kubelet updates the node's `.status` either when there is change in status
  or if there has been no update for a configured interval. The default interval
  for `.status` updates to Nodes is 5 minutes, which is much longer than the 40
  second default timeout for unreachable nodes.
- The kubelet creates and then updates its Lease object every 10 seconds
  (the default update interval). Lease updates occur independently from
  updates to the Node's `.status`. If the Lease update fails, the kubelet retries,
  using exponential backoff that starts at 200 milliseconds and capped at 7 seconds.

content type  reference title  Node Status weight  80          overview      The status of a  node   docs concepts architecture nodes   in Kubernetes is a critical aspect of managing a Kubernetes cluster  In this article  we ll cover the basics of monitoring and maintaining node status to ensure a healthy and stable cluster      Node status fields  A Node s status contains the following information      Addresses   addresses     Conditions   condition     Capacity and Allocatable   capacity     Info   info   You can use  kubectl  to view a Node s status and other details      shell kubectl describe node  insert node name here       Each section of the output is described below      Addresses  The usage of these fields varies depending on your cloud provider or bare metal configuration     HostName  The hostname as reported by the node s kernel  Can be overridden via the kubelet      hostname override  parameter    ExternalIP  Typically the IP address of the node that is externally routable  available from   outside the cluster     InternalIP  Typically the IP address of the node that is routable only within the cluster      Conditions   condition   The  conditions  field describes the status of all  Running  nodes  Examples of conditions include      Node Condition         Description                                             Ready                  True  if the node is healthy and ready to accept pods   False  if the node is not healthy and is not accepting pods  and  Unknown  if the node controller has not heard from the node in the last  node monitor grace period   default is 40 seconds       DiskPressure           True  if pressure exists on the disk size that is  if the disk capacity is low  otherwise  False       MemoryPressure         True  if pressure exists on the node memory that is  if the node memory is low  otherwise  False       PIDPressure            True  if pressure exists on the processes that is  if there are too many processes on the node  otherwise  False       NetworkUnavailable     True  if the network for the node is not correctly configured  otherwise  False       If you use command line tools to print details of a cordoned Node  the Condition includes  SchedulingDisabled    SchedulingDisabled  is not a Condition in the Kubernetes API  instead  cordoned nodes are marked Unschedulable in their spec    In the Kubernetes API  a node s condition is represented as part of the   status  of the Node resource  For example  the following JSON structure describes a healthy node      json  conditions              type    Ready        status    True        reason    KubeletReady        message    kubelet is posting ready status        lastHeartbeatTime    2019 06 05T18 38 35Z        lastTransitionTime    2019 06 05T11 41 27Z             When problems occur on nodes  the Kubernetes control plane automatically creates  taints   docs concepts scheduling eviction taint and toleration   that match the conditions affecting the node  An example of this is when the  status  of the Ready condition remains  Unknown  or  False  for longer than the kube controller manager s  NodeMonitorGracePeriod   which defaults to 40 seconds  This will cause either an  node kubernetes io unreachable  taint  for an  Unknown  status  or a  node kubernetes io not ready  taint  for a  False  status  to be added to the Node   These taints affect pending pods as the scheduler takes the Node s taints into consideration when assigning a pod to a Node  Existing pods scheduled to the node may be evicted due to the application of  NoExecute  taints  Pods may also have  that let them schedule to and continue running on a Node even though it has a specific taint   See  Taint Based Evictions   docs concepts scheduling eviction taint and toleration  taint based evictions  and  Taint Nodes by Condition   docs concepts scheduling eviction taint and toleration  taint nodes by condition  for more details      Capacity and Allocatable   capacity   Describes the resources available on the node  CPU  memory  and the maximum number of pods that can be scheduled onto the node   The fields in the capacity block indicate the total amount of resources that a Node has  The allocatable block indicates the amount of resources on a Node that is available to be consumed by normal Pods   You may read more about capacity and allocatable resources while learning how to  reserve compute resources   docs tasks administer cluster reserve compute resources  node allocatable  on a Node      Info  Describes general information about the node  such as kernel version  Kubernetes version  kubelet and kube proxy version   container runtime details  and which operating system the node uses  The kubelet gathers this information from the node and publishes it into the Kubernetes API      Heartbeats  Heartbeats  sent by Kubernetes nodes  help your cluster determine the availability of each node  and to take action when failures are detected   For nodes there are two forms of heartbeats     updates to the   status  of a Node    Lease   docs concepts architecture leases   objects   within the  kube node lease        Each Node has an associated Lease object   Compared to updates to   status  of a Node  a Lease is a lightweight resource  Using Leases for heartbeats reduces the performance impact of these updates for large clusters   The kubelet is responsible for creating and updating the   status  of Nodes  and for updating their related Leases     The kubelet updates the node s   status  either when there is change in status   or if there has been no update for a configured interval  The default interval   for   status  updates to Nodes is 5 minutes  which is much longer than the 40   second default timeout for unreachable nodes    The kubelet creates and then updates its Lease object every 10 seconds    the default update interval   Lease updates occur independently from   updates to the Node s   status   If the Lease update fails  the kubelet retries    using exponential backoff that starts at 200 milliseconds and capped at 7 seconds