diff --git a/content/zh/docs/reference/config-api/kube-proxy-config.v1alpha1.md b/content/zh/docs/reference/config-api/kube-proxy-config.v1alpha1.md new file mode 100644 index 0000000000..86315856b2 --- /dev/null +++ b/content/zh/docs/reference/config-api/kube-proxy-config.v1alpha1.md @@ -0,0 +1,601 @@ +--- +title: kube-proxy Configuration (v1alpha1) +content_type: tool-reference +package: kubeproxy.config.k8s.io/v1alpha1 +auto_generated: true +--- + + +## Resource Types + + +- [KubeProxyConfiguration](#kubeproxy-config-k8s-io-v1alpha1-KubeProxyConfiguration) + + + + +## `KubeProxyConfiguration` {#kubeproxy-config-k8s-io-v1alpha1-KubeProxyConfiguration} + + + + + +KubeProxyConfiguration contains everything necessary to configure the +Kubernetes proxy server. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
apiVersion
string
kubeproxy.config.k8s.io/v1alpha1
kind
string
KubeProxyConfiguration
featureGates [Required]
+map[string]bool +
+ featureGates is a map of feature names to bools that enable or disable alpha/experimental features.
bindAddress [Required]
+string +
+ bindAddress is the IP address for the proxy server to serve on (set to 0.0.0.0 +for all interfaces)
healthzBindAddress [Required]
+string +
+ healthzBindAddress is the IP address and port for the health check server to serve on, +defaulting to 0.0.0.0:10256
metricsBindAddress [Required]
+string +
+ metricsBindAddress is the IP address and port for the metrics server to serve on, +defaulting to 127.0.0.1:10249 (set to 0.0.0.0 for all interfaces)
bindAddressHardFail [Required]
+bool +
+ bindAddressHardFail, if true, kube-proxy will treat failure to bind to a port as fatal and exit
enableProfiling [Required]
+bool +
+ enableProfiling enables profiling via web interface on /debug/pprof handler. +Profiling handlers will be handled by metrics server.
clusterCIDR [Required]
+string +
+ clusterCIDR is the CIDR range of the pods in the cluster. It is used to +bridge traffic coming from outside of the cluster. If not provided, +no off-cluster bridging will be performed.
hostnameOverride [Required]
+string +
+ hostnameOverride, if non-empty, will be used as the identity instead of the actual hostname.
clientConnection [Required]
+ClientConnectionConfiguration +
+ clientConnection specifies the kubeconfig file and client connection settings for the proxy +server to use when communicating with the apiserver.
iptables [Required]
+KubeProxyIPTablesConfiguration +
+ iptables contains iptables-related configuration options.
ipvs [Required]
+KubeProxyIPVSConfiguration +
+ ipvs contains ipvs-related configuration options.
oomScoreAdj [Required]
+int32 +
+ oomScoreAdj is the oom-score-adj value for kube-proxy process. Values must be within +the range [-1000, 1000]
mode [Required]
+ProxyMode +
+ mode specifies which proxy mode to use.
portRange [Required]
+string +
+ portRange is the range of host ports (beginPort-endPort, inclusive) that may be consumed +in order to proxy service traffic. If unspecified (0-0) then ports will be randomly chosen.
udpIdleTimeout [Required]
+meta/v1.Duration +
+ udpIdleTimeout is how long an idle UDP connection will be kept open (e.g. '250ms', '2s'). +Must be greater than 0. Only applicable for proxyMode=userspace.
conntrack [Required]
+KubeProxyConntrackConfiguration +
+ conntrack contains conntrack-related configuration options.
configSyncPeriod [Required]
+meta/v1.Duration +
+ configSyncPeriod is how often configuration from the apiserver is refreshed. Must be greater +than 0.
nodePortAddresses [Required]
+[]string +
+ nodePortAddresses is the --nodeport-addresses value for kube-proxy process. Values must be valid +IP blocks. These values are as a parameter to select the interfaces where nodeport works. +In case someone would like to expose a service on localhost for local visit and some other interfaces for +particular purpose, a list of IP blocks would do that. +If set it to "127.0.0.0/8", kube-proxy will only select the loopback interface for NodePort. +If set it to a non-zero IP block, kube-proxy will filter that down to just the IPs that applied to the node. +An empty string slice is meant to select all network interfaces.
winkernel [Required]
+KubeProxyWinkernelConfiguration +
+ winkernel contains winkernel-related configuration options.
showHiddenMetricsForVersion [Required]
+string +
+ ShowHiddenMetricsForVersion is the version for which you want to show hidden metrics.
detectLocalMode [Required]
+LocalMode +
+ DetectLocalMode determines mode to use for detecting local traffic, defaults to LocalModeClusterCIDR
+ + + +## `KubeProxyConntrackConfiguration` {#kubeproxy-config-k8s-io-v1alpha1-KubeProxyConntrackConfiguration} + + + + +**Appears in:** + +- [KubeProxyConfiguration](#kubeproxy-config-k8s-io-v1alpha1-KubeProxyConfiguration) + + +KubeProxyConntrackConfiguration contains conntrack settings for +the Kubernetes proxy server. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
maxPerCore [Required]
+int32 +
+ maxPerCore is the maximum number of NAT connections to track +per CPU core (0 to leave the limit as-is and ignore min).
min [Required]
+int32 +
+ min is the minimum value of connect-tracking records to allocate, +regardless of conntrackMaxPerCore (set maxPerCore=0 to leave the limit as-is).
tcpEstablishedTimeout [Required]
+meta/v1.Duration +
+ tcpEstablishedTimeout is how long an idle TCP connection will be kept open +(e.g. '2s'). Must be greater than 0 to set.
tcpCloseWaitTimeout [Required]
+meta/v1.Duration +
+ tcpCloseWaitTimeout is how long an idle conntrack entry +in CLOSE_WAIT state will remain in the conntrack +table. (e.g. '60s'). Must be greater than 0 to set.
+ + + +## `KubeProxyIPTablesConfiguration` {#kubeproxy-config-k8s-io-v1alpha1-KubeProxyIPTablesConfiguration} + + + + +**Appears in:** + +- [KubeProxyConfiguration](#kubeproxy-config-k8s-io-v1alpha1-KubeProxyConfiguration) + + +KubeProxyIPTablesConfiguration contains iptables-related configuration +details for the Kubernetes proxy server. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
masqueradeBit [Required]
+int32 +
+ masqueradeBit is the bit of the iptables fwmark space to use for SNAT if using +the pure iptables proxy mode. Values must be within the range [0, 31].
masqueradeAll [Required]
+bool +
+ masqueradeAll tells kube-proxy to SNAT everything if using the pure iptables proxy mode.
syncPeriod [Required]
+meta/v1.Duration +
+ syncPeriod is the period that iptables rules are refreshed (e.g. '5s', '1m', +'2h22m'). Must be greater than 0.
minSyncPeriod [Required]
+meta/v1.Duration +
+ minSyncPeriod is the minimum period that iptables rules are refreshed (e.g. '5s', '1m', +'2h22m').
+ + + +## `KubeProxyIPVSConfiguration` {#kubeproxy-config-k8s-io-v1alpha1-KubeProxyIPVSConfiguration} + + + + +**Appears in:** + +- [KubeProxyConfiguration](#kubeproxy-config-k8s-io-v1alpha1-KubeProxyConfiguration) + + +KubeProxyIPVSConfiguration contains ipvs-related configuration +details for the Kubernetes proxy server. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
syncPeriod [Required]
+meta/v1.Duration +
+ syncPeriod is the period that ipvs rules are refreshed (e.g. '5s', '1m', +'2h22m'). Must be greater than 0.
minSyncPeriod [Required]
+meta/v1.Duration +
+ minSyncPeriod is the minimum period that ipvs rules are refreshed (e.g. '5s', '1m', +'2h22m').
scheduler [Required]
+string +
+ ipvs scheduler
excludeCIDRs [Required]
+[]string +
+ excludeCIDRs is a list of CIDR's which the ipvs proxier should not touch +when cleaning up ipvs services.
strictARP [Required]
+bool +
+ strict ARP configure arp_ignore and arp_announce to avoid answering ARP queries +from kube-ipvs0 interface
tcpTimeout [Required]
+meta/v1.Duration +
+ tcpTimeout is the timeout value used for idle IPVS TCP sessions. +The default value is 0, which preserves the current timeout value on the system.
tcpFinTimeout [Required]
+meta/v1.Duration +
+ tcpFinTimeout is the timeout value used for IPVS TCP sessions after receiving a FIN. +The default value is 0, which preserves the current timeout value on the system.
udpTimeout [Required]
+meta/v1.Duration +
+ udpTimeout is the timeout value used for IPVS UDP packets. +The default value is 0, which preserves the current timeout value on the system.
+ + + +## `KubeProxyWinkernelConfiguration` {#kubeproxy-config-k8s-io-v1alpha1-KubeProxyWinkernelConfiguration} + + + + +**Appears in:** + +- [KubeProxyConfiguration](#kubeproxy-config-k8s-io-v1alpha1-KubeProxyConfiguration) + + +KubeProxyWinkernelConfiguration contains Windows/HNS settings for +the Kubernetes proxy server. + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
networkName [Required]
+string +
+ networkName is the name of the network kube-proxy will use +to create endpoints and policies
sourceVip [Required]
+string +
+ sourceVip is the IP address of the source VIP endoint used for +NAT when loadbalancing
enableDSR [Required]
+bool +
+ enableDSR tells kube-proxy whether HNS policies should be created +with DSR
+ + + +## `LocalMode` {#kubeproxy-config-k8s-io-v1alpha1-LocalMode} + +(Alias of `string`) + + +**Appears in:** + +- [KubeProxyConfiguration](#kubeproxy-config-k8s-io-v1alpha1-KubeProxyConfiguration) + + +LocalMode represents modes to detect local traffic from the node + + + + + +## `ProxyMode` {#kubeproxy-config-k8s-io-v1alpha1-ProxyMode} + +(Alias of `string`) + + +**Appears in:** + +- [KubeProxyConfiguration](#kubeproxy-config-k8s-io-v1alpha1-KubeProxyConfiguration) + + +ProxyMode represents modes used by the Kubernetes proxy server. + +Currently, three modes of proxy are available in Linux platform: 'userspace' (older, going to be EOL), 'iptables' +(newer, faster), 'ipvs'(newest, better in performance and scalability). + +Two modes of proxy are available in Windows platform: 'userspace'(older, stable) and 'kernelspace' (newer, faster). + +In Linux platform, if proxy mode is blank, use the best-available proxy (currently iptables, but may change in the +future). If the iptables proxy is selected, regardless of how, but the system's kernel or iptables versions are +insufficient, this always falls back to the userspace proxy. IPVS mode will be enabled when proxy mode is set to 'ipvs', +and the fall back path is firstly iptables and then userspace. + +In Windows platform, if proxy mode is blank, use the best-available proxy (currently userspace, but may change in the +future). If winkernel proxy is selected, regardless of how, but the Windows kernel can't support this mode of proxy, +this always falls back to the userspace proxy. + + + + + + + +## `ClientConnectionConfiguration` {#ClientConnectionConfiguration} + + + + +**Appears in:** + +- [KubeProxyConfiguration](#kubeproxy-config-k8s-io-v1alpha1-KubeProxyConfiguration) + + +ClientConnectionConfiguration contains details for constructing a client. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
kubeconfig [Required]
+string +
+ kubeconfig is the path to a KubeConfig file.
acceptContentTypes [Required]
+string +
+ acceptContentTypes defines the Accept header sent by clients when connecting to a server, overriding the +default value of 'application/json'. This field will control all connections to the server used by a particular +client.
contentType [Required]
+string +
+ contentType is the content type used when sending data to the server from this client.
qps [Required]
+float32 +
+ qps controls the number of queries per second allowed for this connection.
burst [Required]
+int32 +
+ burst allows extra queries to accumulate when a client is exceeding its rate.
diff --git a/content/zh/docs/reference/config-api/kubelet-config.v1beta1.md b/content/zh/docs/reference/config-api/kubelet-config.v1beta1.md new file mode 100644 index 0000000000..bee05b68db --- /dev/null +++ b/content/zh/docs/reference/config-api/kubelet-config.v1beta1.md @@ -0,0 +1,1604 @@ +--- +title: Kubelet Configuration (v1beta1) +content_type: tool-reference +package: kubelet.config.k8s.io/v1beta1 +auto_generated: true +--- + + +## Resource Types + + +- [KubeletConfiguration](#kubelet-config-k8s-io-v1beta1-KubeletConfiguration) +- [SerializedNodeConfigSource](#kubelet-config-k8s-io-v1beta1-SerializedNodeConfigSource) + + + + +## `KubeletConfiguration` {#kubelet-config-k8s-io-v1beta1-KubeletConfiguration} + + + + + +KubeletConfiguration contains the configuration for the Kubelet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
apiVersion
string
kubelet.config.k8s.io/v1beta1
kind
string
KubeletConfiguration
enableServer [Required]
+bool +
+ enableServer enables Kubelet's secured server. +Note: Kubelet's insecure port is controlled by the readOnlyPort option. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may disrupt components that interact with the Kubelet server. +Default: true
staticPodPath
+string +
+ staticPodPath is the path to the directory containing local (static) pods to +run, or the path to a single static pod file. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +the set of static pods specified at the new path may be different than the +ones the Kubelet initially started with, and this may disrupt your node. +Default: ""
syncFrequency
+meta/v1.Duration +
+ syncFrequency is the max period between synchronizing running +containers and config. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +shortening this duration may have a negative performance impact, especially +as the number of Pods on the node increases. Alternatively, increasing this +duration will result in longer refresh times for ConfigMaps and Secrets. +Default: "1m"
fileCheckFrequency
+meta/v1.Duration +
+ fileCheckFrequency is the duration between checking config files for +new data +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +shortening the duration will cause the Kubelet to reload local Static Pod +configurations more frequently, which may have a negative performance impact. +Default: "20s"
httpCheckFrequency
+meta/v1.Duration +
+ httpCheckFrequency is the duration between checking http for new data +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +shortening the duration will cause the Kubelet to poll staticPodURL more +frequently, which may have a negative performance impact. +Default: "20s"
staticPodURL
+string +
+ staticPodURL is the URL for accessing static pods to run +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +the set of static pods specified at the new URL may be different than the +ones the Kubelet initially started with, and this may disrupt your node. +Default: ""
staticPodURLHeader
+map[string][]string +
+ staticPodURLHeader is a map of slices with HTTP headers to use when accessing the podURL +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may disrupt the ability to read the latest set of static pods from StaticPodURL. +Default: nil
address
+string +
+ address is the IP address for the Kubelet to serve on (set to 0.0.0.0 +for all interfaces). +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may disrupt components that interact with the Kubelet server. +Default: "0.0.0.0"
port
+int32 +
+ port is the port for the Kubelet to serve on. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may disrupt components that interact with the Kubelet server. +Default: 10250
readOnlyPort
+int32 +
+ readOnlyPort is the read-only port for the Kubelet to serve on with +no authentication/authorization. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may disrupt components that interact with the Kubelet server. +Default: 0 (disabled)
tlsCertFile
+string +
+ tlsCertFile is the file containing x509 Certificate for HTTPS. (CA cert, +if any, concatenated after server cert). If tlsCertFile and +tlsPrivateKeyFile are not provided, a self-signed certificate +and key are generated for the public address and saved to the directory +passed to the Kubelet's --cert-dir flag. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may disrupt components that interact with the Kubelet server. +Default: ""
tlsPrivateKeyFile
+string +
+ tlsPrivateKeyFile is the file containing x509 private key matching tlsCertFile +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may disrupt components that interact with the Kubelet server. +Default: ""
tlsCipherSuites
+[]string +
+ TLSCipherSuites is the list of allowed cipher suites for the server. +Values are from tls package constants (https://golang.org/pkg/crypto/tls/#pkg-constants). +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may disrupt components that interact with the Kubelet server. +Default: nil
tlsMinVersion
+string +
+ TLSMinVersion is the minimum TLS version supported. +Values are from tls package constants (https://golang.org/pkg/crypto/tls/#pkg-constants). +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may disrupt components that interact with the Kubelet server. +Default: ""
rotateCertificates
+bool +
+ rotateCertificates enables client certificate rotation. The Kubelet will request a +new certificate from the certificates.k8s.io API. This requires an approver to approve the +certificate signing requests. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +disabling it may disrupt the Kubelet's ability to authenticate with the API server +after the current certificate expires. +Default: false
serverTLSBootstrap
+bool +
+ serverTLSBootstrap enables server certificate bootstrap. Instead of self +signing a serving certificate, the Kubelet will request a certificate from +the certificates.k8s.io API. This requires an approver to approve the +certificate signing requests. The RotateKubeletServerCertificate feature +must be enabled. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +disabling it will stop the renewal of Kubelet server certificates, which can +disrupt components that interact with the Kubelet server in the long term, +due to certificate expiration. +Default: false
authentication
+KubeletAuthentication +
+ authentication specifies how requests to the Kubelet's server are authenticated +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may disrupt components that interact with the Kubelet server. +Defaults: + anonymous: + enabled: false + webhook: + enabled: true + cacheTTL: "2m"
authorization
+KubeletAuthorization +
+ authorization specifies how requests to the Kubelet's server are authorized +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may disrupt components that interact with the Kubelet server. +Defaults: + mode: Webhook + webhook: + cacheAuthorizedTTL: "5m" + cacheUnauthorizedTTL: "30s"
registryPullQPS
+int32 +
+ registryPullQPS is the limit of registry pulls per second. +Set to 0 for no limit. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may impact scalability by changing the amount of traffic produced +by image pulls. +Default: 5
registryBurst
+int32 +
+ registryBurst is the maximum size of bursty pulls, temporarily allows +pulls to burst to this number, while still not exceeding registryPullQPS. +Only used if registryPullQPS > 0. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may impact scalability by changing the amount of traffic produced +by image pulls. +Default: 10
eventRecordQPS
+int32 +
+ eventRecordQPS is the maximum event creations per second. If 0, there +is no limit enforced. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may impact scalability by changing the amount of traffic produced by +event creations. +Default: 5
eventBurst
+int32 +
+ eventBurst is the maximum size of a burst of event creations, temporarily +allows event creations to burst to this number, while still not exceeding +eventRecordQPS. Only used if eventRecordQPS > 0. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may impact scalability by changing the amount of traffic produced by +event creations. +Default: 10
enableDebuggingHandlers
+bool +
+ enableDebuggingHandlers enables server endpoints for log access +and local running of containers and commands, including the exec, +attach, logs, and portforward features. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +disabling it may disrupt components that interact with the Kubelet server. +Default: true
enableContentionProfiling
+bool +
+ enableContentionProfiling enables lock contention profiling, if enableDebuggingHandlers is true. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +enabling it may carry a performance impact. +Default: false
healthzPort
+int32 +
+ healthzPort is the port of the localhost healthz endpoint (set to 0 to disable) +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may disrupt components that monitor Kubelet health. +Default: 10248
healthzBindAddress
+string +
+ healthzBindAddress is the IP address for the healthz server to serve on +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may disrupt components that monitor Kubelet health. +Default: "127.0.0.1"
oomScoreAdj
+int32 +
+ oomScoreAdj is The oom-score-adj value for kubelet process. Values +must be within the range [-1000, 1000]. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may impact the stability of nodes under memory pressure. +Default: -999
clusterDomain
+string +
+ clusterDomain is the DNS domain for this cluster. If set, kubelet will +configure all containers to search this domain in addition to the +host's search domains. +Dynamic Kubelet Config (beta): Dynamically updating this field is not recommended, +as it should be kept in sync with the rest of the cluster. +Default: ""
clusterDNS
+[]string +
+ clusterDNS is a list of IP addresses for the cluster DNS server. If set, +kubelet will configure all containers to use this for DNS resolution +instead of the host's DNS servers. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +changes will only take effect on Pods created after the update. Draining +the node is recommended before changing this field. +Default: nil
streamingConnectionIdleTimeout
+meta/v1.Duration +
+ streamingConnectionIdleTimeout is the maximum time a streaming connection +can be idle before the connection is automatically closed. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may impact components that rely on infrequent updates over streaming +connections to the Kubelet server. +Default: "4h"
nodeStatusUpdateFrequency
+meta/v1.Duration +
+ nodeStatusUpdateFrequency is the frequency that kubelet computes node +status. If node lease feature is not enabled, it is also the frequency that +kubelet posts node status to master. +Note: When node lease feature is not enabled, be cautious when changing the +constant, it must work with nodeMonitorGracePeriod in nodecontroller. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may impact node scalability, and also that the node controller's +nodeMonitorGracePeriod must be set to N∗NodeStatusUpdateFrequency, +where N is the number of retries before the node controller marks +the node unhealthy. +Default: "10s"
nodeStatusReportFrequency
+meta/v1.Duration +
+ nodeStatusReportFrequency is the frequency that kubelet posts node +status to master if node status does not change. Kubelet will ignore this +frequency and post node status immediately if any change is detected. It is +only used when node lease feature is enabled. nodeStatusReportFrequency's +default value is 1m. But if nodeStatusUpdateFrequency is set explicitly, +nodeStatusReportFrequency's default value will be set to +nodeStatusUpdateFrequency for backward compatibility. +Default: "1m"
nodeLeaseDurationSeconds
+int32 +
+ nodeLeaseDurationSeconds is the duration the Kubelet will set on its corresponding Lease, +when the NodeLease feature is enabled. This feature provides an indicator of node +health by having the Kubelet create and periodically renew a lease, named after the node, +in the kube-node-lease namespace. If the lease expires, the node can be considered unhealthy. +The lease is currently renewed every 10s, per KEP-0009. In the future, the lease renewal interval +may be set based on the lease duration. +Requires the NodeLease feature gate to be enabled. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +decreasing the duration may reduce tolerance for issues that temporarily prevent +the Kubelet from renewing the lease (e.g. a short-lived network issue). +Default: 40
imageMinimumGCAge
+meta/v1.Duration +
+ imageMinimumGCAge is the minimum age for an unused image before it is +garbage collected. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may trigger or delay garbage collection, and may change the image overhead +on the node. +Default: "2m"
imageGCHighThresholdPercent
+int32 +
+ imageGCHighThresholdPercent is the percent of disk usage after which +image garbage collection is always run. The percent is calculated as +this field value out of 100. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may trigger or delay garbage collection, and may change the image overhead +on the node. +Default: 85
imageGCLowThresholdPercent
+int32 +
+ imageGCLowThresholdPercent is the percent of disk usage before which +image garbage collection is never run. Lowest disk usage to garbage +collect to. The percent is calculated as this field value out of 100. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may trigger or delay garbage collection, and may change the image overhead +on the node. +Default: 80
volumeStatsAggPeriod
+meta/v1.Duration +
+ How frequently to calculate and cache volume disk usage for all pods +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +shortening the period may carry a performance impact. +Default: "1m"
kubeletCgroups
+string +
+ kubeletCgroups is the absolute name of cgroups to isolate the kubelet in +Dynamic Kubelet Config (beta): This field should not be updated without a full node +reboot. It is safest to keep this value the same as the local config. +Default: ""
systemCgroups
+string +
+ systemCgroups is absolute name of cgroups in which to place +all non-kernel processes that are not already in a container. Empty +for no container. Rolling back the flag requires a reboot. +Dynamic Kubelet Config (beta): This field should not be updated without a full node +reboot. It is safest to keep this value the same as the local config. +Default: ""
cgroupRoot
+string +
+ cgroupRoot is the root cgroup to use for pods. This is handled by the +container runtime on a best effort basis. +Dynamic Kubelet Config (beta): This field should not be updated without a full node +reboot. It is safest to keep this value the same as the local config. +Default: ""
cgroupsPerQOS
+bool +
+ Enable QoS based Cgroup hierarchy: top level cgroups for QoS Classes +And all Burstable and BestEffort pods are brought up under their +specific top level QoS cgroup. +Dynamic Kubelet Config (beta): This field should not be updated without a full node +reboot. It is safest to keep this value the same as the local config. +Default: true
cgroupDriver
+string +
+ driver that the kubelet uses to manipulate cgroups on the host (cgroupfs or systemd) +Dynamic Kubelet Config (beta): This field should not be updated without a full node +reboot. It is safest to keep this value the same as the local config. +Default: "cgroupfs"
cpuManagerPolicy
+string +
+ CPUManagerPolicy is the name of the policy to use. +Requires the CPUManager feature gate to be enabled. +Dynamic Kubelet Config (beta): This field should not be updated without a full node +reboot. It is safest to keep this value the same as the local config. +Default: "none"
cpuManagerReconcilePeriod
+meta/v1.Duration +
+ CPU Manager reconciliation period. +Requires the CPUManager feature gate to be enabled. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +shortening the period may carry a performance impact. +Default: "10s"
topologyManagerPolicy
+string +
+ TopologyManagerPolicy is the name of the policy to use. +Policies other than "none" require the TopologyManager feature gate to be enabled. +Dynamic Kubelet Config (beta): This field should not be updated without a full node +reboot. It is safest to keep this value the same as the local config. +Default: "none"
topologyManagerScope
+string +
+ TopologyManagerScope represents the scope of topology hint generation +that topology manager requests and hint providers generate. +"pod" scope requires the TopologyManager feature gate to be enabled. +Default: "container"
qosReserved
+map[string]string +
+ qosReserved is a set of resource name to percentage pairs that specify +the minimum percentage of a resource reserved for exclusive use by the +guaranteed QoS tier. +Currently supported resources: "memory" +Requires the QOSReserved feature gate to be enabled. +Dynamic Kubelet Config (beta): This field should not be updated without a full node +reboot. It is safest to keep this value the same as the local config. +Default: nil
runtimeRequestTimeout
+meta/v1.Duration +
+ runtimeRequestTimeout is the timeout for all runtime requests except long running +requests - pull, logs, exec and attach. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may disrupt components that interact with the Kubelet server. +Default: "2m"
hairpinMode
+string +
+ hairpinMode specifies how the Kubelet should configure the container +bridge for hairpin packets. +Setting this flag allows endpoints in a Service to loadbalance back to +themselves if they should try to access their own Service. Values: + "promiscuous-bridge": make the container bridge promiscuous. + "hairpin-veth": set the hairpin flag on container veth interfaces. + "none": do nothing. +Generally, one must set --hairpin-mode=hairpin-veth to achieve hairpin NAT, +because promiscuous-bridge assumes the existence of a container bridge named cbr0. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may require a node reboot, depending on the network plugin. +Default: "promiscuous-bridge"
maxPods
+int32 +
+ maxPods is the number of pods that can run on this Kubelet. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +changes may cause Pods to fail admission on Kubelet restart, and may change +the value reported in Node.Status.Capacity[v1.ResourcePods], thus affecting +future scheduling decisions. Increasing this value may also decrease performance, +as more Pods can be packed into a single node. +Default: 110
podCIDR
+string +
+ The CIDR to use for pod IP addresses, only used in standalone mode. +In cluster mode, this is obtained from the master. +Dynamic Kubelet Config (beta): This field should always be set to the empty default. +It should only set for standalone Kubelets, which cannot use Dynamic Kubelet Config. +Default: ""
podPidsLimit
+int64 +
+ PodPidsLimit is the maximum number of pids in any pod. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +lowering it may prevent container processes from forking after the change. +Default: -1
resolvConf
+string +
+ ResolverConfig is the resolver configuration file used as the basis +for the container DNS resolution configuration. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +changes will only take effect on Pods created after the update. Draining +the node is recommended before changing this field. +Default: "/etc/resolv.conf"
runOnce
+bool +
+ RunOnce causes the Kubelet to check the API server once for pods, +run those in addition to the pods specified by static pod files, and exit. +Default: false
cpuCFSQuota
+bool +
+ cpuCFSQuota enables CPU CFS quota enforcement for containers that +specify CPU limits. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +disabling it may reduce node stability. +Default: true
cpuCFSQuotaPeriod
+meta/v1.Duration +
+ CPUCFSQuotaPeriod is the CPU CFS quota period value, cpu.cfs_period_us. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +limits set for containers will result in different cpu.cfs_quota settings. This +will trigger container restarts on the node being reconfigured. +Default: "100ms"
nodeStatusMaxImages
+int32 +
+ nodeStatusMaxImages caps the number of images reported in Node.Status.Images. +Note: If -1 is specified, no cap will be applied. If 0 is specified, no image is returned. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +different values can be reported on node status. +Default: 50
maxOpenFiles
+int64 +
+ maxOpenFiles is Number of files that can be opened by Kubelet process. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may impact the ability of the Kubelet to interact with the node's filesystem. +Default: 1000000
contentType
+string +
+ contentType is contentType of requests sent to apiserver. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may impact the ability for the Kubelet to communicate with the API server. +If the Kubelet loses contact with the API server due to a change to this field, +the change cannot be reverted via dynamic Kubelet config. +Default: "application/vnd.kubernetes.protobuf"
kubeAPIQPS
+int32 +
+ kubeAPIQPS is the QPS to use while talking with kubernetes apiserver +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may impact scalability by changing the amount of traffic the Kubelet +sends to the API server. +Default: 5
kubeAPIBurst
+int32 +
+ kubeAPIBurst is the burst to allow while talking with kubernetes apiserver +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may impact scalability by changing the amount of traffic the Kubelet +sends to the API server. +Default: 10
serializeImagePulls
+bool +
+ serializeImagePulls when enabled, tells the Kubelet to pull images one +at a time. We recommend ∗not∗ changing the default value on nodes that +run docker daemon with version < 1.9 or an Aufs storage backend. +Issue #10959 has more details. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may impact the performance of image pulls. +Default: true
evictionHard
+map[string]string +
+ Map of signal names to quantities that defines hard eviction thresholds. For example: {"memory.available": "300Mi"}. +To explicitly disable, pass a 0% or 100% threshold on an arbitrary resource. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may trigger or delay Pod evictions. +Default: + memory.available: "100Mi" + nodefs.available: "10%" + nodefs.inodesFree: "5%" + imagefs.available: "15%"
evictionSoft
+map[string]string +
+ Map of signal names to quantities that defines soft eviction thresholds. +For example: {"memory.available": "300Mi"}. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may trigger or delay Pod evictions, and may change the allocatable reported +by the node. +Default: nil
evictionSoftGracePeriod
+map[string]string +
+ Map of signal names to quantities that defines grace periods for each soft eviction signal. +For example: {"memory.available": "30s"}. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may trigger or delay Pod evictions. +Default: nil
evictionPressureTransitionPeriod
+meta/v1.Duration +
+ Duration for which the kubelet has to wait before transitioning out of an eviction pressure condition. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +lowering it may decrease the stability of the node when the node is overcommitted. +Default: "5m"
evictionMaxPodGracePeriod
+int32 +
+ Maximum allowed grace period (in seconds) to use when terminating pods in +response to a soft eviction threshold being met. This value effectively caps +the Pod's TerminationGracePeriodSeconds value during soft evictions. +Note: Due to issue #64530, the behavior has a bug where this value currently just +overrides the grace period during soft eviction, which can increase the grace +period from what is set on the Pod. This bug will be fixed in a future release. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +lowering it decreases the amount of time Pods will have to gracefully clean +up before being killed during a soft eviction. +Default: 0
evictionMinimumReclaim
+map[string]string +
+ Map of signal names to quantities that defines minimum reclaims, which describe the minimum +amount of a given resource the kubelet will reclaim when performing a pod eviction while +that resource is under pressure. For example: {"imagefs.available": "2Gi"} +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may change how well eviction can manage resource pressure. +Default: nil
podsPerCore
+int32 +
+ podsPerCore is the maximum number of pods per core. Cannot exceed MaxPods. +If 0, this field is ignored. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +changes may cause Pods to fail admission on Kubelet restart, and may change +the value reported in Node.Status.Capacity[v1.ResourcePods], thus affecting +future scheduling decisions. Increasing this value may also decrease performance, +as more Pods can be packed into a single node. +Default: 0
enableControllerAttachDetach
+bool +
+ enableControllerAttachDetach enables the Attach/Detach controller to +manage attachment/detachment of volumes scheduled to this node, and +disables kubelet from executing any attach/detach operations +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +changing which component is responsible for volume management on a live node +may result in volumes refusing to detach if the node is not drained prior to +the update, and if Pods are scheduled to the node before the +volumes.kubernetes.io/controller-managed-attach-detach annotation is updated by the +Kubelet. In general, it is safest to leave this value set the same as local config. +Default: true
protectKernelDefaults
+bool +
+ protectKernelDefaults, if true, causes the Kubelet to error if kernel +flags are not as it expects. Otherwise the Kubelet will attempt to modify +kernel flags to match its expectation. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +enabling it may cause the Kubelet to crash-loop if the Kernel is not configured as +Kubelet expects. +Default: false
makeIPTablesUtilChains
+bool +
+ If true, Kubelet ensures a set of iptables rules are present on host. +These rules will serve as utility rules for various components, e.g. KubeProxy. +The rules will be created based on IPTablesMasqueradeBit and IPTablesDropBit. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +disabling it will prevent the Kubelet from healing locally misconfigured iptables rules. +Default: true
iptablesMasqueradeBit
+int32 +
+ iptablesMasqueradeBit is the bit of the iptables fwmark space to mark for SNAT +Values must be within the range [0, 31]. Must be different from other mark bits. +Warning: Please match the value of the corresponding parameter in kube-proxy. +TODO: clean up IPTablesMasqueradeBit in kube-proxy +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it needs to be coordinated with other components, like kube-proxy, and the update +will only be effective if MakeIPTablesUtilChains is enabled. +Default: 14
iptablesDropBit
+int32 +
+ iptablesDropBit is the bit of the iptables fwmark space to mark for dropping packets. +Values must be within the range [0, 31]. Must be different from other mark bits. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it needs to be coordinated with other components, like kube-proxy, and the update +will only be effective if MakeIPTablesUtilChains is enabled. +Default: 15
featureGates
+map[string]bool +
+ featureGates is a map of feature names to bools that enable or disable alpha/experimental +features. This field modifies piecemeal the built-in default values from +"k8s.io/kubernetes/pkg/features/kube_features.go". +Dynamic Kubelet Config (beta): If dynamically updating this field, consider the +documentation for the features you are enabling or disabling. While we +encourage feature developers to make it possible to dynamically enable +and disable features, some changes may require node reboots, and some +features may require careful coordination to retroactively disable. +Default: nil
failSwapOn
+bool +
+ failSwapOn tells the Kubelet to fail to start if swap is enabled on the node. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +setting it to true will cause the Kubelet to crash-loop if swap is enabled. +Default: true
containerLogMaxSize
+string +
+ A quantity defines the maximum size of the container log file before it is rotated. +For example: "5Mi" or "256Ki". +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may trigger log rotation. +Default: "10Mi"
containerLogMaxFiles
+int32 +
+ Maximum number of container log files that can be present for a container. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +lowering it may cause log files to be deleted. +Default: 5
configMapAndSecretChangeDetectionStrategy
+ResourceChangeDetectionStrategy +
+ ConfigMapAndSecretChangeDetectionStrategy is a mode in which +config map and secret managers are running. +Default: "Watch"
systemReserved
+map[string]string +
+ systemReserved is a set of ResourceName=ResourceQuantity (e.g. cpu=200m,memory=150G) +pairs that describe resources reserved for non-kubernetes components. +Currently only cpu and memory are supported. +See http://kubernetes.io/docs/user-guide/compute-resources for more detail. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may not be possible to increase the reserved resources, because this +requires resizing cgroups. Always look for a NodeAllocatableEnforced event +after updating this field to ensure that the update was successful. +Default: nil
kubeReserved
+map[string]string +
+ A set of ResourceName=ResourceQuantity (e.g. cpu=200m,memory=150G) pairs +that describe resources reserved for kubernetes system components. +Currently cpu, memory and local storage for root file system are supported. +See http://kubernetes.io/docs/user-guide/compute-resources for more detail. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may not be possible to increase the reserved resources, because this +requires resizing cgroups. Always look for a NodeAllocatableEnforced event +after updating this field to ensure that the update was successful. +Default: nil
reservedSystemCPUs [Required]
+string +
+ This ReservedSystemCPUs option specifies the cpu list reserved for the host level system threads and kubernetes related threads. +This provide a "static" CPU list rather than the "dynamic" list by system-reserved and kube-reserved. +This option overwrites CPUs provided by system-reserved and kube-reserved.
showHiddenMetricsForVersion
+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 ., 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. +Default: ""
systemReservedCgroup
+string +
+ This flag helps kubelet identify absolute name of top level cgroup used to enforce `SystemReserved` compute resource reservation for OS system daemons. +Refer to [Node Allocatable](https://git.k8s.io/community/contributors/design-proposals/node/node-allocatable.md) doc for more information. +Dynamic Kubelet Config (beta): This field should not be updated without a full node +reboot. It is safest to keep this value the same as the local config. +Default: ""
kubeReservedCgroup
+string +
+ This flag helps kubelet identify absolute name of top level cgroup used to enforce `KubeReserved` compute resource reservation for Kubernetes node system daemons. +Refer to [Node Allocatable](https://git.k8s.io/community/contributors/design-proposals/node/node-allocatable.md) doc for more information. +Dynamic Kubelet Config (beta): This field should not be updated without a full node +reboot. It is safest to keep this value the same as the local config. +Default: ""
enforceNodeAllocatable
+[]string +
+ This flag specifies the various Node Allocatable enforcements that Kubelet needs to perform. +This flag accepts a list of options. Acceptable options are `none`, `pods`, `system-reserved` & `kube-reserved`. +If `none` is specified, no other options may be specified. +Refer to [Node Allocatable](https://git.k8s.io/community/contributors/design-proposals/node/node-allocatable.md) doc for more information. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +removing enforcements may reduce the stability of the node. Alternatively, adding +enforcements may reduce the stability of components which were using more than +the reserved amount of resources; for example, enforcing kube-reserved may cause +Kubelets to OOM if it uses more than the reserved resources, and enforcing system-reserved +may cause system daemons to OOM if they use more than the reserved resources. +Default: ["pods"]
allowedUnsafeSysctls
+[]string +
+ A comma separated whitelist of unsafe sysctls or sysctl patterns (ending in ∗). +Unsafe sysctl groups are kernel.shm∗, kernel.msg∗, kernel.sem, fs.mqueue.∗, and net.∗. +These sysctls are namespaced but not allowed by default. For example: "kernel.msg∗,net.ipv4.route.min_pmtu" +Default: []
volumePluginDir
+string +
+ volumePluginDir is the full path of the directory in which to search +for additional third party volume plugins. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that changing +the volumePluginDir may disrupt workloads relying on third party volume plugins. +Default: "/usr/libexec/kubernetes/kubelet-plugins/volume/exec/"
providerID
+string +
+ providerID, if set, sets the unique id of the instance that an external provider (i.e. cloudprovider) +can use to identify a specific node. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may impact the ability of the Kubelet to interact with cloud providers. +Default: ""
kernelMemcgNotification
+bool +
+ kernelMemcgNotification, if set, the kubelet will integrate with the kernel memcg notification +to determine if memory eviction thresholds are crossed rather than polling. +Dynamic Kubelet Config (beta): If dynamically updating this field, consider that +it may impact the way Kubelet interacts with the kernel. +Default: false
logging [Required]
+LoggingConfiguration +
+ Logging specifies the options of logging. +Refer [Logs Options](https://github.com/kubernetes/component-base/blob/master/logs/options.go) for more information. +Defaults: + Format: text
enableSystemLogHandler
+bool +
+ enableSystemLogHandler enables system logs via web interface host:port/logs/ +Default: true
shutdownGracePeriod
+meta/v1.Duration +
+ ShutdownGracePeriod specifies the total duration that the node should delay the shutdown and total grace period for pod termination during a node shutdown. +Default: "30s"
shutdownGracePeriodCriticalPods
+meta/v1.Duration +
+ ShutdownGracePeriodCriticalPods specifies the duration used to terminate critical pods during a node shutdown. This should be less than ShutdownGracePeriod. +For example, if ShutdownGracePeriod=30s, and ShutdownGracePeriodCriticalPods=10s, during a node shutdown the first 20 seconds would be reserved for gracefully terminating normal pods, and the last 10 seconds would be reserved for terminating critical pods. +Default: "10s"
+ + + +## `SerializedNodeConfigSource` {#kubelet-config-k8s-io-v1beta1-SerializedNodeConfigSource} + + + + + +SerializedNodeConfigSource allows us to serialize v1.NodeConfigSource. +This type is used internally by the Kubelet for tracking checkpointed dynamic configs. +It exists in the kubeletconfig API group because it is classified as a versioned input to the Kubelet. + + + + + + + + + + + + + + + + + +
FieldDescription
apiVersion
string
kubelet.config.k8s.io/v1beta1
kind
string
SerializedNodeConfigSource
source
+core/v1.NodeConfigSource +
+ Source is the source that we are serializing
+ + + +## `HairpinMode` {#kubelet-config-k8s-io-v1beta1-HairpinMode} + +(Alias of `string`) + + + +HairpinMode denotes how the kubelet should configure networking to handle +hairpin packets. + + + + + +## `KubeletAnonymousAuthentication` {#kubelet-config-k8s-io-v1beta1-KubeletAnonymousAuthentication} + + + + +**Appears in:** + +- [KubeletAuthentication](#kubelet-config-k8s-io-v1beta1-KubeletAuthentication) + + + + + + + + + + + + + + + + +
FieldDescription
enabled
+bool +
+ enabled allows anonymous requests to the kubelet server. +Requests that are not rejected by another authentication method are treated as anonymous requests. +Anonymous requests have a username of system:anonymous, and a group name of system:unauthenticated.
+ + + +## `KubeletAuthentication` {#kubelet-config-k8s-io-v1beta1-KubeletAuthentication} + + + + +**Appears in:** + +- [KubeletConfiguration](#kubelet-config-k8s-io-v1beta1-KubeletConfiguration) + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
x509
+KubeletX509Authentication +
+ x509 contains settings related to x509 client certificate authentication
webhook
+KubeletWebhookAuthentication +
+ webhook contains settings related to webhook bearer token authentication
anonymous
+KubeletAnonymousAuthentication +
+ anonymous contains settings related to anonymous authentication
+ + + +## `KubeletAuthorization` {#kubelet-config-k8s-io-v1beta1-KubeletAuthorization} + + + + +**Appears in:** + +- [KubeletConfiguration](#kubelet-config-k8s-io-v1beta1-KubeletConfiguration) + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
mode
+KubeletAuthorizationMode +
+ mode is the authorization mode to apply to requests to the kubelet server. +Valid values are AlwaysAllow and Webhook. +Webhook mode uses the SubjectAccessReview API to determine authorization.
webhook
+KubeletWebhookAuthorization +
+ webhook contains settings related to Webhook authorization.
+ + + +## `KubeletAuthorizationMode` {#kubelet-config-k8s-io-v1beta1-KubeletAuthorizationMode} + +(Alias of `string`) + + +**Appears in:** + +- [KubeletAuthorization](#kubelet-config-k8s-io-v1beta1-KubeletAuthorization) + + + + + + + + +## `KubeletWebhookAuthentication` {#kubelet-config-k8s-io-v1beta1-KubeletWebhookAuthentication} + + + + +**Appears in:** + +- [KubeletAuthentication](#kubelet-config-k8s-io-v1beta1-KubeletAuthentication) + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
enabled
+bool +
+ enabled allows bearer token authentication backed by the tokenreviews.authentication.k8s.io API
cacheTTL
+meta/v1.Duration +
+ cacheTTL enables caching of authentication results
+ + + +## `KubeletWebhookAuthorization` {#kubelet-config-k8s-io-v1beta1-KubeletWebhookAuthorization} + + + + +**Appears in:** + +- [KubeletAuthorization](#kubelet-config-k8s-io-v1beta1-KubeletAuthorization) + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
cacheAuthorizedTTL
+meta/v1.Duration +
+ cacheAuthorizedTTL is the duration to cache 'authorized' responses from the webhook authorizer.
cacheUnauthorizedTTL
+meta/v1.Duration +
+ cacheUnauthorizedTTL is the duration to cache 'unauthorized' responses from the webhook authorizer.
+ + + +## `KubeletX509Authentication` {#kubelet-config-k8s-io-v1beta1-KubeletX509Authentication} + + + + +**Appears in:** + +- [KubeletAuthentication](#kubelet-config-k8s-io-v1beta1-KubeletAuthentication) + + + + + + + + + + + + + + + + +
FieldDescription
clientCAFile
+string +
+ clientCAFile is the path to a PEM-encoded certificate bundle. If set, any request presenting a client certificate +signed by one of the authorities in the bundle is authenticated with a username corresponding to the CommonName, +and groups corresponding to the Organization in the client certificate.
+ + + +## `ResourceChangeDetectionStrategy` {#kubelet-config-k8s-io-v1beta1-ResourceChangeDetectionStrategy} + +(Alias of `string`) + + +**Appears in:** + +- [KubeletConfiguration](#kubelet-config-k8s-io-v1beta1-KubeletConfiguration) + + +ResourceChangeDetectionStrategy denotes a mode in which internal +managers (secret, configmap) are discovering object changes. + + + + + + + +## `LoggingConfiguration` {#LoggingConfiguration} + + + + +**Appears in:** + +- [KubeletConfiguration](#kubelet-config-k8s-io-v1beta1-KubeletConfiguration) + + +LoggingConfiguration contains logging options +Refer [Logs Options](https://github.com/kubernetes/component-base/blob/master/logs/options.go) for more information. + + + + + + + + + + + + + + + + + + +
FieldDescription
format [Required]
+string +
+ Format Flag specifies the structure of log messages. +default value of format is `text`
sanitization [Required]
+bool +
+ [Experimental] When enabled prevents logging of fields tagged as sensitive (passwords, keys, tokens). +Runtime log sanitization may introduce significant computation overhead and therefore should not be enabled in production.`)
diff --git a/content/zh/docs/reference/setup-tools/kubeadm/implementation-details.md b/content/zh/docs/reference/setup-tools/kubeadm/implementation-details.md index ee17bb699a..3e3fe80b89 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/implementation-details.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/implementation-details.md @@ -46,7 +46,7 @@ with the aim of sharing knowledge on Kubernetes cluster best practices. - lock-down the kubelet API - locking down access to the API for system components like the kube-proxy and CoreDNS - locking down what a Bootstrap Token can access - - **Easy to use**: The user should not have to run anything more than a couple of commands: + - **User-friendly**: The user should not have to run anything more than a couple of commands: - `kubeadm init` - `export KUBECONFIG=/etc/kubernetes/admin.conf` - `kubectl apply -f ` @@ -63,7 +63,7 @@ with the aim of sharing knowledge on Kubernetes cluster best practices. - 锁定 kubelet API - 锁定对系统组件(例如 kube-proxy 和 CoreDNS)的 API 的访问 - 锁定启动引导令牌(Bootstrap Token)可以访问的内容 -- **易用的**:用户只需要运行几个命令即可: +- **用户友好**:用户只需要运行几个命令即可: - `kubeadm init` - `export KUBECONFIG=/etc/kubernetes/admin.conf` - `kubectl apply -f <所选网络.yaml>` @@ -558,7 +558,7 @@ API 服务器的静态 Pod 清单会受到用户提供的以下参数的影响: - `--requestheader-client-ca-file` to`front-proxy-ca.crt` - `--proxy-client-cert-file` to `front-proxy-client.crt` - `--proxy-client-key-file` to `front-proxy-client.key` - - Other flags for securing the front proxy ([API Aggregation](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/aggregated-api-servers.md)) communications: + - Other flags for securing the front proxy ([API Aggregation](/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/)) communications: - `--requestheader-username-headers=X-Remote-User` - `--requestheader-group-headers=X-Remote-Group` - `--requestheader-extra-headers-prefix=X-Remote-Extra-` @@ -580,7 +580,7 @@ API 服务器的静态 Pod 清单会受到用户提供的以下参数的影响: - `--proxy-client-key-file` 设为 `front-proxy-client.key` - 其他用于保护前端代理( - [API 聚合层](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/aggregated-api-servers.md)) + [API 聚合层](/zh/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/)) 通信的标志: - `--requestheader-username-headers=X-Remote-User` @@ -697,7 +697,7 @@ into `/var/lib/kubelet/config/init/kubelet` file. 初始化配置用于在这个特定节点上启动 kubelet,从而为 kubelet 插件文件提供了 一种替代方法。如以下步骤中所述,这种配置将由 kubelet 基本配置所替代。 @@ -710,17 +710,24 @@ See [set Kubelet parameters via a config file](/docs/tasks/administer-cluster/ku 1. 要使动态 kubelet 配置生效,应在 `/etc/systemd/system/kubelet.service.d/10-kubeadm.conf` 中指定 `--dynamic-config-dir=/var/lib/kubelet/config/dynamic` 标志。 -2. 通过使用配置文件 `--config some-file.yaml` 将 `KubeletConfiguration` 对象传递给 +1. 通过使用配置文件 `--config some-file.yaml` 将 `KubeletConfiguration` 对象传递给 `kubeadm init` 或 `kubeadm join` 来更改 kubelet 配置。 可以使用 `---` 分隔符将 `KubeletConfiguration` 对象与其他对象(例如 `InitConfiguration`) 分开。更多的详细信息,请查看 `kubeadm config print-default` 命令。 + +有关 `KubeletConfiguration` 结构的详细信息,可参阅 +[`KubeletConfiguration` 参考文档](/docs/reference/config-api/kubelet-config.v1beta1/)。 + @@ -748,7 +755,7 @@ kubeadm 依靠 kubelet 拉取控制平面镜像并将其作为静态 Pod 正确 --> ### (可选)编写基本 kubelet 配置 {#write-base-kubelet-configuration} -{{< feature-state for_k8s_version="v1.9" state="alpha" >}} +{{< feature-state for_k8s_version="v1.11" state="beta" >}} -- 在 Kubernetes 1.18 版本中,通过 kubeadm 部署 kube-dns 这一操作已经弃用, - 将在未来的版本中删除。 - CoreDNS 服务的名称为 `kube-dns`。这样做是为了防止当用户将集群 DNS 从 kube-dns - 切换到 CoreDNS 或者反过来时,出现服务中断。`--config` 方法在 + 切换到 CoreDNS 时出现服务中断。`--config` 方法在 [这里](/zh/docs/reference/setup-tools/kubeadm/kubeadm-init-phase/#cmd-phase-addon) 有描述。 -- 在 `kube-system` 名字空间中创建 CoreDNS/kube-dns 的 ServiceAccount -- `kube-dns` 的 ServiceAccount 绑定了 `system:kube-dns` ClusterRole 中的特权 +- 在 `kube-system` 名字空间中创建 CoreDNS 的 ServiceAccount +- `coredns` 的 ServiceAccount 绑定了 `system:coredns` ClusterRole 中的特权 + + +在 Kubernetes 1.21 版本中,kubeadm 对 `kube-dns` 的支持被移除。 +你可以在 kubeadm 使用 CoreDNS,即使相关的 Service 名字仍然是 `kube-dns`。 -知道集群信息后,将写入文件 `bootstrap-kubelet.conf`,从而允许 kubelet 执行 -TLS 引导(相反,在 v1.7 之前 TLS 引导都是由 kubeadm 管理)。 +知道集群信息后,kubeadm 将写入文件 `bootstrap-kubelet.conf`,从而允许 kubelet 执行 +TLS 引导。 -TLS 引导机制使用共享令牌对 Kubernetes 主控节点进行临时身份验证,以便 +TLS 引导机制使用共享令牌对 Kubernetes API 服务器进行临时身份验证,以便 为本地创建的密钥对提交证书签名请求(CSR)。 @@ -1222,9 +1232,9 @@ kubelet 加入集群,同时删除 `bootstrap-kubelet.conf`。 -### (可选)编写 init kubelet 配置 {#write-init-kubelet-configuration} +### (可选)写入初始的 kubelet 配置 {#write-init-kubelet-configuration} -{{< feature-state for_k8s_version="v1.9" state="alpha" >}} +{{< feature-state for_k8s_version="v1.11" state="beta" >}} -1. 使用引导令牌凭证从 `kube-system` 名字空间中 ConfigMap `kubelet-base-config-v1.9` +1. 使用引导令牌凭证从 `kube-system` 名字空间中 ConfigMap `kubelet-base-config-v1.x` 中读取 kubelet 基本配置, - 并将其作为 kubelet init 配置文件 `/var/lib/kubelet/config/init/kubelet` 写入磁盘。 + 并将其作为 kubelet 初始配置文件 `/var/lib/kubelet/config/init/kubelet` 写入磁盘。 2. 一旦 kubelet 开始使用节点自己的凭据(`/etc/kubernetes/kubelet.conf`), 就更新当前节点配置,指定该节点或 kubelet 配置来自上述 ConfigMap。 diff --git a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-alpha.md b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-alpha.md index 82d4f88024..3276fd9acc 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-alpha.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-alpha.md @@ -18,47 +18,10 @@ weight: 90 请试用这些功能并给我们提供反馈! {{< /caution >}} -## kubeadm alpha kubeconfig user {#cmd-phase-kubeconfig} - -使用子命令 `user` 为其他用户创建 kubeconfig 文件。 - -{{< tabs name="tab-kubeconfig" >}} -{{< tab name="kubeconfig" include="generated/kubeadm_alpha_kubeconfig.md" />}} -{{< tab name="user" include="generated/kubeadm_alpha_kubeconfig_user.md" />}} -{{< /tabs >}} - -## kubeadm alpha kubelet config {#cmd-phase-kubelet} - - -使用以下命令启用 DynamicKubeletConfiguration 功能。 - -{{< tabs name="tab-kubelet" >}} -{{< tab name="kubelet" include="generated/kubeadm_alpha_kubelet.md" />}} -{{< tab name="enable-dynamic" include="generated/kubeadm_alpha_kubelet_config_enable-dynamic.md" />}} -{{< /tabs >}} - -## kubeadm alpha selfhosting pivot {#cmd-selfhosting} - - -子命令 `pivot` 可用于将 Pod 托管的静态控制平面转换为自托管的控制平面。 -有关 `pivot` 更多信息,请参见 -[文档](/zh/docs/setup/production-environment/tools/kubeadm/self-hosting/)。 - - - -{{< tabs name="selfhosting" >}} -{{< tab name="selfhosting" include="generated/kubeadm_alpha_selfhosting.md" />}} -{{< tab name="pivot" include="generated/kubeadm_alpha_selfhosting_pivot.md" />}} -{{< /tabs >}} +目前在 `kubeadm alpha` 之下没有试验性质的命令。 ## {{% heading "whatsnext" %}} diff --git a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-init-phase.md b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-init-phase.md index 69cbc59b4c..86664ff8d6 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-init-phase.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-init-phase.md @@ -4,11 +4,9 @@ weight: 90 content_type: concept --- -`kubeadm init phase` 能确保调用引导过程的原子步骤。因此,如果希望自定义应用,则可以让 kubeadm 做一些工作,然后填补空白。 - +`kubeadm init phase` 能确保调用引导过程的原子步骤。 +因此,如果希望自定义应用,则可以让 kubeadm 做一些工作,然后填补空白。 -`kubeadm init phase` 与 [kubeadm init 工作流](/zh/docs/reference/setup-tools/kubeadm/kubeadm-init/#init-workflow)一致,后台都使用相同的代码。 +`kubeadm init phase` 与 [kubeadm init 工作流](/zh/docs/reference/setup-tools/kubeadm/kubeadm-init/#init-workflow) +一致,后台都使用相同的代码。 -可以使用此命令将 kubeadm 配置文件上传到集群。或者使用 [kubeadm config](/zh/docs/reference/setup-tools/kubeadm/kubeadm-config/)。 +可以使用此命令将 kubeadm 配置文件上传到集群。或者使用 +[kubeadm config](/zh/docs/reference/setup-tools/kubeadm/kubeadm-config/)。 {{< tabs name="upload-config" >}} {{< tab name="upload-config" include="generated/kubeadm_init_phase_upload-config.md" />}} @@ -177,7 +177,8 @@ By default the certs and encryption key expire after two hours. -使用以下阶段来给具有 `node-role.kubernetes.io/master=""` 键值对的节点打标签(label)和记录污点(taint)。 +使用以下阶段来给具有 `node-role.kubernetes.io/master=""` 键值对的节点 +打标签(label)和记录污点(taint)。 {{< tabs name="tab-mark-control-plane" >}} {{< tab name="mark-control-plane" include="generated/kubeadm_init_phase_mark-control-plane.md" />}} @@ -232,50 +233,12 @@ install them selectively. {{< tab name="kube-proxy" include="generated/kubeadm_init_phase_addon_kube-proxy.md" />}} {{< /tabs >}} - -要使用 kube-dns 代替 CoreDNS,必须传递一个配置文件: - - - -```bash -# 仅用于安装 DNS 插件 -kubeadm init phase addon coredns --config=someconfig.yaml -# 用于创建完整的控制平面节点 -kubeadm init --config=someconfig.yaml -# 用于列出或者拉取镜像 -kubeadm config images list/pull --config=someconfig.yaml -# 升级 -kubeadm upgrade apply --config=someconfig.yaml -``` - - -该文件必须在 [`ClusterConfiguration`](https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2#ClusterConfiguration) 中包含一个 [`DNS`](https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2#DNS) 字段,以及包含一个插件的类型 - `kube-dns`(默认值为 `CoreDNS`)。 - -```yaml -apiVersion: kubeadm.k8s.io/v1beta2 -kind: ClusterConfiguration -dns: - type: "kube-dns" -``` - -有关 `v1beta2` 配置中每个字段的更多详细信息,可以访问 [API](https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2)。 +有关 `v1beta2` 配置中每个字段的更多详细信息,可以访问 +[API](https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2)。 ## {{% heading "whatsnext" %}} @@ -285,7 +248,11 @@ For more details on each field in the `v1beta2` configuration you can navigate t * [kubeadm reset](/docs/reference/setup-tools/kubeadm/kubeadm-reset/) to revert any changes made to this host by `kubeadm init` or `kubeadm join` * [kubeadm alpha](/docs/reference/setup-tools/kubeadm/kubeadm-alpha/) to try experimental functionality --> -* [kubeadm init](/zh/docs/reference/setup-tools/kubeadm/kubeadm-init/) 引导 Kubernetes 控制平面节点 -* [kubeadm join](/zh/docs/reference/setup-tools/kubeadm/kubeadm-join/) 将节点连接到集群 -* [kubeadm reset](/zh/docs/reference/setup-tools/kubeadm/kubeadm-reset/) 恢复通过 `kubeadm init` 或 `kubeadm join` 操作对主机所做的任何更改 -* [kubeadm alpha](/zh/docs/reference/setup-tools/kubeadm/kubeadm-alpha/) 尝试实验性功能 +* [kubeadm init](/zh/docs/reference/setup-tools/kubeadm/kubeadm-init/) + 引导 Kubernetes 控制平面节点 +* [kubeadm join](/zh/docs/reference/setup-tools/kubeadm/kubeadm-join/) + 将节点加入到集群 +* [kubeadm reset](/zh/docs/reference/setup-tools/kubeadm/kubeadm-reset/) + 恢复通过 `kubeadm init` 或 `kubeadm join` 操作对主机所做的任何更改 +* [kubeadm alpha](/zh/docs/reference/setup-tools/kubeadm/kubeadm-alpha/) + 尝试实验性功能 diff --git a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-init.md b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-init.md index f7e4bb9bf1..2c70fe93e9 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-init.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-init.md @@ -129,22 +129,18 @@ following steps: 8. 通过 API 服务器安装一个 DNS 服务器 (CoreDNS) 和 kube-proxy 附加组件。 在 Kubernetes 版本 1.11 和更高版本中,CoreDNS 是默认的 DNS 服务器。 - 要安装 kube-dns 而不是 CoreDNS,必须在 kubeadm `ClusterConfiguration` 中配置 DNS 插件。 - 有关配置的更多信息,请参见下面的"带配置文件使用 kubeadm init" 一节。 请注意,尽管已部署 DNS 服务器,但直到安装 CNI 时才调度它。 {{< warning >}} - 从 v1.18 开始,在 kubeadm 中使用 kube-dns 已废弃,并将在以后的版本中将其删除。 + 从 v1.18 开始,在 kubeadm 中使用 kube-dns 的支持已被废弃,并已在 v1.21 版本中删除。 {{< /warning >}} 可以使用 [kubeadm config print](/zh/docs/reference/setup-tools/kubeadm/kubeadm-config/) 命令打印出默认配置。 @@ -255,7 +251,7 @@ page and pick a version from [the list](https://godoc.org/k8s.io/kubernetes/cmd/ 有关配置的字段和用法的更多信息, 你可以访问 API 参考页面并从 -[列表](https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm#pkg-subdirectories) +[列表](https://pkg.go.dev/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm#section-directories) 中选择一个版本。 kubeadm 配置中有关 kube-proxy 的说明请查看: -- [kube-proxy](https://godoc.org/k8s.io/kubernetes/pkg/proxy/apis/config#KubeProxyConfiguration) + +- [kube-proxy 参考](/zh/docs/reference/config-api/kube-proxy-config.v1alpha1/) 使用 kubeadm 启用 IPVS 模式的说明请查看: + - [IPVS](https://github.com/kubernetes/kubernetes/blob/master/pkg/proxy/ipvs/README.md) -1. 一旦知道集群信息,kubelet 就可以开始 TLS 引导过程。 +2. 一旦知道集群信息,kubelet 就可以开始 TLS 引导过程。 TLS 引导程序使用共享令牌与 Kubernetes API 服务器进行临时的身份验证,以提交证书签名请求 (CSR); 默认情况下,控制平面自动对该 CSR 请求进行签名。 @@ -56,7 +56,7 @@ This action consists of the following steps: 1. Finally, kubeadm configures the local kubelet to connect to the API server with the definitive identity assigned to the node. --> -1. 最后,kubeadm 配置本地 kubelet 使用分配给节点的确定标识连接到 API 服务器。 +3. 最后,kubeadm 配置本地 kubelet 使用分配给节点的确定标识连接到 API 服务器。 Kubeadm 的发现有几个选项,每个选项都有安全性上的优缺点。 -适合你的环境的正确方法取决于节点是如何准备的以及你对网络的安全性期望和节点的生命周期特点。 +适合你的环境的正确方法取决于节点是如何准备的以及你对网络的安全性期望 +和节点的生命周期特点。 **`kubeadm join` 命令示例** - + 对于工作节点: ```shell kubeadm join --discovery-token abcdef.1234567890abcdef --discovery-token-ca-cert-hash sha256:1234..cdef 1.2.3.4:6443 ``` - + 对于控制面节点: ```shell @@ -200,26 +205,28 @@ if the `kubeadm init` command was called with `--upload-certs`. master even if other worker nodes or the network are compromised. - Convenient to execute manually since all of the information required fits - into a single `kubeadm join` command that is easy to copy and paste. + into a single `kubeadm join` command. --> **优势:** - - 允许引导节点安全地发现主节点的信任根,即使其他工作节点或网络受到损害。 - - 方便手动执行,因为所需的所有信息都适合于易于复制和粘贴的单个 `kubeadm join` 命令。 +- 允许引导节点安全地发现主节点的信任根,即使其他工作节点或网络受到损害。 + +- 方便手动执行,因为所需的所有信息都可放到一个 `kubeadm join` 命令中。 **劣势:** - - CA 哈希通常在主节点被提供之前是不知道的,这使得构建使用 kubeadm 的自动化配置工具更加困难。 - 通过预先生成CA,你可以解除这个限制。 + +- CA 哈希通常在主节点被提供之前是不知道的,这使得构建使用 kubeadm 的自动化配置工具更加困难。 + 通过预先生成CA,你可以解除这个限制。 _这是 Kubernetes 1.7 和早期版本_中的默认设置;使用时要注意一些重要的补充说明。 此模式仅依赖于对称令牌来签名(HMAC-SHA256)发现信息,这些发现信息为主节点建立信任根。 -在 Kubernetes 1.8 及以上版本中仍然可以使用 `--discovery-token-unsafe-skip-ca-verification` 参数,但是如果可能的话,你应该考虑使用一种其他模式。 +在 Kubernetes 1.8 及以上版本中仍然可以使用 `--discovery-token-unsafe-skip-ca-verification` +参数,但是如果可能的话,你应该考虑使用一种其他模式。 **`kubeadm join` 命令示例** @@ -249,33 +257,34 @@ kubeadm join --token abcdef.1234567890abcdef --discovery-token-unsafe-skip-ca-ve **优势** - - 仍然可以防止许多网络级攻击。 +- 仍然可以防止许多网络级攻击。 - - 可以提前生成令牌并与主节点和工作节点共享,这样主节点和工作节点就可以并行引导而无需协调。 - 这允许它在许多配置场景中使用。 +- 可以提前生成令牌并与主节点和工作节点共享,这样主节点和工作节点就可以并行引导而无需协调。 + 这允许它在许多配置场景中使用。 **劣势** - - 如果攻击者能够通过某些漏洞窃取引导令牌,那么他们可以使用该令牌(连同网络级访问)为其它处于引导过程中的节点提供假冒的主节点。 - 在你的环境中,这可能是一个适当的折衷方法,也可能不是。 +- 如果攻击者能够通过某些漏洞窃取引导令牌,那么他们可以使用该令牌(连同网络级访问) + 为其它处于引导过程中的节点提供假冒的主节点。 + 在你的环境中,这可能是一个适当的折衷方法,也可能不是。 这种方案提供了一种带外方式在主节点和引导节点之间建立信任根。 如果使用 kubeadm 构建自动配置,请考虑使用此模式。 -发现文件的格式为常规的 Kubernetes [kubeconfig](/zh/docs/tasks/access-application-cluster/configure-access-multiple-clusters/) 文件。 +发现文件的格式为常规的 Kubernetes +[kubeconfig](/zh/docs/tasks/access-application-cluster/configure-access-multiple-clusters/) 文件。 如果发现文件不包含凭据,则将使用 TLS 发现令牌。 @@ -300,35 +310,36 @@ In case the discovery file does not contain credentials, the TLS discovery token **Example `kubeadm join` commands:** --> **`kubeadm join` 命令示例:** - - `kubeadm join --discovery-file path/to/file.conf` (本地文件) - - `kubeadm join --discovery-file https://url/file.conf` (远程 HTTPS URL) +- `kubeadm join --discovery-file path/to/file.conf` (本地文件) + +- `kubeadm join --discovery-file https://url/file.conf` (远程 HTTPS URL) **优势:** - - 允许引导节点安全地发现主节点的信任根,即使网络或其他工作节点受到损害。 +- 允许引导节点安全地发现主节点的信任根,即使网络或其他工作节点受到损害。 **劣势:** - - 要求你有某种方法将发现信息从主节点传送到引导节点。 - 例如,这可以通过云提供商或驱动工具实现。 - 该文件中的信息不是加密的,而是需要 HTTPS 或等效文件来保证其完整性。 +- 要求你有某种方法将发现信息从主节点传送到引导节点。 + 例如,这可以通过云提供商或驱动工具实现。 + 该文件中的信息不是加密的,而是需要 HTTPS 或等效文件来保证其完整性。 -默认情况下,Kubernetes 启用了 CSR 自动批准器,如果在身份验证时使用 Bootstrap Token,它会批准对 kubelet 的任何客户端证书的请求。 +默认情况下,Kubernetes 启用了 CSR 自动批准器,如果在身份验证时使用启动引导令牌, +它会批准对 kubelet 的任何客户端证书的请求。 如果不希望集群自动批准kubelet客户端证书,可以通过执行以下命令关闭它: ```shell @@ -362,13 +374,15 @@ kubectl delete clusterrolebinding kubeadm:node-autoapprove-bootstrap -关闭后,`kubeadm join` 操作将会被阻断,直到管理员已经手动批准了在途中的 CSR 才会继续: +关闭后,`kubeadm join` 操作将会被阻塞,直到管理员已经手动批准了在途中的 CSR 才会继续: ```shell kubectl get csr ``` - + 输出类似于: ``` @@ -380,7 +394,9 @@ node-csr-c69HXe7aYcqkS1bKmH4faEnHAWxn6i2bHZ2mD04jZyQ 18s system:bootstra kubectl certificate approve node-csr-c69HXe7aYcqkS1bKmH4faEnHAWxn6i2bHZ2mD04jZyQ ``` - + 输出类似于: ``` @@ -391,7 +407,9 @@ certificatesigningrequest "node-csr-c69HXe7aYcqkS1bKmH4faEnHAWxn6i2bHZ2mD04jZyQ" kubectl get csr ``` - + 输出类似于: ``` @@ -416,7 +434,8 @@ default. While there is no private data in this ConfigMap, some users might wish it off regardless. Doing so will disable the ability to use the `--discovery-token` flag of the `kubeadm join` flow. Here are the steps to do so: --> -为了实现使用令牌作为唯一验证信息的加入工作流,默认情况下会公开带有验证主节点标识所需数据的 ConfigMap。 +为了实现使用令牌作为唯一验证信息的加入工作流,默认情况下会公开带有验证主节点标识 +所需数据的 ConfigMap。 虽然此 ConfigMap 中没有私有数据,但一些用户可能希望无论如何都关闭它。 这样做需要禁用 `kubeadm join` 工作流的 `--discovery-token` 参数。 以下是实现步骤: @@ -430,7 +449,9 @@ it off regardless. Doing so will disable the ability to use the `--discovery-tok kubectl -n kube-public get cm cluster-info -o yaml | grep "kubeconfig:" -A11 | grep "apiVersion" -A10 | sed "s/ //" | tee cluster-info.yaml ``` - + 输出类似于: ``` @@ -457,9 +478,9 @@ users: [] * 关闭 `cluster-info` ConfigMap 的公开访问: -```shell -kubectl -n kube-public delete rolebinding kubeadm:bootstrap-signer-clusterinfo -``` + ```shell + kubectl -n kube-public delete rolebinding kubeadm:bootstrap-signer-clusterinfo + ``` -* [kubeadm init](/zh/docs/reference/setup-tools/kubeadm/kubeadm-init/) 初始化 Kubernetes 主节点 -* [kubeadm token](/zh/docs/reference/setup-tools/kubeadm/kubeadm-token/) 管理 `kubeadm join` 的令牌 -* [kubeadm reset](/zh/docs/reference/setup-tools/kubeadm/kubeadm-reset/) 将 `kubeadm init` 或 `kubeadm join` 对主机的更改恢复到之前状态 +* [kubeadm init](/zh/docs/reference/setup-tools/kubeadm/kubeadm-init/) + 初始化 Kubernetes 主节点 +* [kubeadm token](/zh/docs/reference/setup-tools/kubeadm/kubeadm-token/) + 管理 `kubeadm join` 的令牌 +* [kubeadm reset](/zh/docs/reference/setup-tools/kubeadm/kubeadm-reset/) + 将 `kubeadm init` 或 `kubeadm join` 对主机的更改恢复到之前状态 diff --git a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-upgrade.md b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-upgrade.md index 4388edcfe4..0faea8865c 100644 --- a/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-upgrade.md +++ b/content/zh/docs/reference/setup-tools/kubeadm/kubeadm-upgrade.md @@ -3,7 +3,7 @@ title: kubeadm upgrade content_type: concept weight: 40 --- - +--> `kubeadm upgrade` 是一个对用户友好的命令,它将复杂的升级逻辑包装在一个命令后面,支持升级的规划和实际执行。 - -## kubeadm 升级指南 +## kubeadm upgrade 指南 -[本文档](/zh/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/)概述了使用 kubeadm 执行升级的步骤。 -有关 kubeadm 旧版本,请参阅 Kubernetes 网站的旧版文档。 +[本文档](/zh/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/)概述 +使用 kubeadm 执行升级的步骤。 +与 kubeadm 旧版本相关的文档,请参阅 Kubernetes 网站的旧版文档。 -你可以使用 `kubeadm upgrade diff` 来查看将应用于静态 pod 清单的更改。 - - -要在 Kubernetes v1.13.0 及更高版本中使用 kube-dns 进行升级,请遵循[本指南](/zh/docs/reference/setup-tools/kubeadm/kubeadm-init-phase/#cmd-phase-addon)。 +你可以使用 `kubeadm upgrade diff` 来查看将应用于静态 Pod 清单的更改。 -在 Kubernetes v1.15.0 和更高版本中,`kubeadm upgrade apply` 和 `kubeadm upgrade node` 也将自动续订该节点上的 kubeadm 托管证书,包括存储在 kubeconfig 文件中的证书。 -要选择退出,可以传递参数 `--certificate-renewal=false`。有关证书续订的更多详细信息请参见[证书管理文档](/zh/docs/tasks/administer-cluster/kubeadm/kubeadm-certs)。 +在 Kubernetes v1.15.0 和更高版本中,`kubeadm upgrade apply` 和 `kubeadm upgrade node` +也将自动续订该节点上的 kubeadm 托管证书,包括存储在 kubeconfig 文件中的证书。 +要选择退出,可以传递参数 `--certificate-renewal=false`。 +有关证书续订的更多详细信息请参见[证书管理文档](/zh/docs/tasks/administer-cluster/kubeadm/kubeadm-certs)。 {{< note >}} @@ -78,11 +75,12 @@ reports of unexpected results. ## kubeadm upgrade node {#cmd-upgrade-node} {{< include "generated/kubeadm_upgrade_node.md" >}} - - ## {{% heading "whatsnext" %}} -* 如果你使用 kubeadm v1.7.x 或更低版本初始化集群,则可以参考[kubeadm 配置](/zh/docs/reference/setup-tools/kubeadm/kubeadm-config/)配置集群用于 `kubeadm upgrade`。 +* [kubeadm config](/docs/reference/setup-tools/kubeadm/kubeadm-config/) if you initialized your cluster using kubeadm v1.7.x or lower, to configure your cluster for `kubeadm upgrade` +--> +* 如果你使用 kubeadm v1.7.x 或更低版本初始化集群,则可以参考 + [kubeadm 配置](/zh/docs/reference/setup-tools/kubeadm/kubeadm-config/) + 配置集群用于 `kubeadm upgrade`。