Package v1beta1 has been deprecated by v1beta2
Package v1beta1 defines the v1beta1 version of the kubeadm configuration file format. This version graduates the configuration format to BETA and is a big step towards GA.
A list of changes since v1alpha3:
apiServerEndpoint in InitConfiguration was renamed to localAPIEndpoint for better clarity of what the field
represents.*extraArgs and *extraVolumes for control plane components are now moved
under component structs - i.e. apiServer, controllerManager, scheduler.auditPolicy was removed from ClusterConfiguration. Use extraArgs in apiServer to configure this feature instead.unifiedControlPlaneImage in ClusterConfiguration was changed to a boolean field called useHyperKubeImage.dns field which can be used to select and configure the cluster DNS addon.featureGates still exists under ClusterConfiguration, but there are no supported feature gates in 1.13.
See the Kubernetes 1.13 changelog for further details.localEtcd and dns configurations now support custom image repositories.controlPlane*-related fields in JoinConfiguration were refactored into a sub-structure.clusterName was removed from JoinConfiguration and the name is now fetched from the existing cluster.Migration from old kubeadm config versions
Please convert your v1alpha3 configuration files to v1beta1 using the kubeadm config migrate command of kubeadm v1.13.x
Basics
The preferred way to configure kubeadm is to pass an YAML configuration file with the --config option. Some of the
configuration options defined in the kubeadm config file are also available as command line flags, but only
the most common/simple use case are supported with this approach.
A kubeadm config file could contain multiple configuration types separated using three dashes (---).
kubeadm supports the following configuration types:
apiVersion: kubeadm.k8s.io/v1beta1 kind: InitConfiguration
apiVersion: kubeadm.k8s.io/v1beta1 kind: ClusterConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration
apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration
apiVersion: kubeadm.k8s.io/v1beta1 kind: JoinConfiguration
To print the defaults for init and join actions use the following commands:
kubeadm config print init-defaults kubeadm config print join-defaults
The list of configuration types that must be included in a configuration file depends by the action you are performing (init or join) and by the configuration options you are going to use (defaults or advanced customization).
If some configuration types are not provided, or provided only partially, kubeadm will use default values.
Defaults provided by kubeadm help enforce consistency of values across components when required (e.g.
--cluster-cidr flag on controller manager and clusterCIDR on kube-proxy).
Users are always allowed to override default values, with the exception of a small subset of setting related to security (e.g. enforce authorization-mode Node and RBAC on the API server) If the user provides a configuration types that is not expected for the action you are performing, kubeadm will ignore those types and print a warning.
Kubeadm init configuration types
When executing kubeadm init with the --config option, the following configuration types could be used:
InitConfiguration, ClusterConfiguration, KubeProxyConfiguration, KubeletConfiguration, but only one
between InitConfiguration and ClusterConfiguration is mandatory.
apiVersion: kubeadm.k8s.io/v1beta1 kind: InitConfiguration bootstrapTokens: # ... nodeRegistration: # ...
The InitConfiguration type is used to configure runtime settings. In the case of kubeadm init,
it contains the bootstrap token configuration and all the setting specific to the node where kubeadm
is executed, including:
NodeRegistration: fields related to registering the new node to the cluster.
You can use it to customize the node name, the CRI socket to use or any other
settings that should apply to this node only (for example. the node IP).
LocalAPIEndpoint: the endpoint of the API server instance to be deployed on this node.
You can use it to customize the API server advertise address, for example.
apiVersion: kubeadm.k8s.io/v1beta1 kind: ClusterConfiguration networking: # ... etcd: # ... apiServer: extraArgs: # ... extraVolumes: # ... # ...
The ClusterConfiguration type is used to configure cluster-wide settings, including:
Networking, holds configuration for the networking topology of the cluster. For example, you can use it to customize node subnet or services subnet.
Etcd configurations that can be used to customize the local etcd or to configure the API server for using an external etcd cluster.
kube-apiserver, kube-scheduler, kube-controller-manager configurations. You can use it to customize control-plane components by adding customized setting or overriding kubeadm default settings.
apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration # ...
The KubeProxyConfiguration type should be used to change the configuration passed to
kube-proxy instances deployed in the cluster. If this object is not provided or provided
only partially, kubeadm applies defaults.
See kube-proxy reference or
kube-proxy source code
for more information.
apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration # ...
The KubeletConfiguration type is used to change the configurations passed to all kubelet instances
deployed in the cluster. If this object is not provided or provided only partially, kubeadm applies defaults.
See kubelet reference or
kubelet source code
for more information.
Here is a fully populated example of a single YAML file containing multiple
configuration types to be used during a kubeadm init run.
apiVersion: kubeadm.k8s.io/v1beta1 kind: InitConfiguration bootstrapTokens: - token: "9a08jv.c0izixklcxtmnze7" description: "kubeadm bootstrap token" ttl: "24h" - token: "783bde.3f89s0fje9f38fhf" description: "another bootstrap token" usages: - authentication - signing groups: - system:bootstrappers:kubeadm:default-node-token nodeRegistration: name: "ec2-10-100-0-1" criSocket: "/var/run/dockershim.sock" taints: - key: "kubeadmNode" value: "master" effect: "NoSchedule" kubeletExtraArgs: cgroup-driver: "cgroupfs" localAPIEndpoint: advertiseAddress: "10.100.0.1" bindPort: 6443 --- apiVersion: kubeadm.k8s.io/v1beta1 kind: ClusterConfiguration etcd: # one of local or external local: imageRepository: "k8s.gcr.io" imageTag: "3.2.24" dataDir: "/var/lib/etcd" extraArgs: listen-client-urls: "http://10.100.0.1:2379" serverCertSANs: - "ec2-10-100-0-1.compute-1.amazonaws.com" peerCertSANs: - "10.100.0.1" # external: # endpoints: # - "10.100.0.1:2379" # - "10.100.0.2:2379" # caFile: "/etcd/kubernetes/pki/etcd/etcd-ca.crt" # certFile: "/etcd/kubernetes/pki/etcd/etcd.crt" # keyFile: "/etcd/kubernetes/pki/etcd/etcd.key" networking: serviceSubnet: "10.96.0.0/12" podSubnet: "10.100.0.1/24" dnsDomain: "cluster.local" kubernetesVersion: "v1.12.0" controlPlaneEndpoint: "10.100.0.1:6443" apiServer: extraArgs: authorization-mode: "Node,RBAC" extraVolumes: - name: "some-volume" hostPath: "/etc/some-path" mountPath: "/etc/some-pod-path" readOnly: false pathType: File certSANs: - "10.100.1.1" - "ec2-10-100-0-1.compute-1.amazonaws.com" timeoutForControlPlane: 4m0s controllerManager: extraArgs: "node-cidr-mask-size": "20" extraVolumes: - name: "some-volume" hostPath: "/etc/some-path" mountPath: "/etc/some-pod-path" readOnly: false pathType: File scheduler: extraArgs: address: "10.100.0.1" extraVolumes: - name: "some-volume" hostPath: "/etc/some-path" mountPath: "/etc/some-pod-path" readOnly: false pathType: File certificatesDir: "/etc/kubernetes/pki" imageRepository: "k8s.gcr.io" useHyperKubeImage: false clusterName: "example-cluster" --- apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration # kubelet specific options here --- apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration # kube-proxy specific options here
Kubeadm join configuration types
When executing kubeadm join with the --config option, the JoinConfiguration type should be provided.
apiVersion: kubeadm.k8s.io/v1beta1 kind: JoinConfiguration # ...
The JoinConfiguration type is used to configure runtime settings. In the case of kubeadm join,
it contains the discovery method used for accessing the cluster info and all the setting which are specific
to the node where kubeadm is executed, including:
NodeRegistration: fields related to registering the new node to the cluster.
You can use it to customize the node name, the CRI socket to use or any other
settings that should apply to this node only (e.g. the node ip).
APIEndpoint: the endpoint of the API server instance to be eventually deployed on this node.
(Appears in: InitConfiguration)
DEPRECATED - This group version of ClusterConfiguration is deprecated by apis/kubeadm/v1beta2.ClusterConfiguration. ClusterConfiguration contains cluster-wide configuration for a kubeadm cluster.
| Field | Description |
|---|---|
apiVersionstring |
kubeadm.k8s.io/v1beta1 |
kindstring |
ClusterConfiguration |
etcd
*
Etcd
|
|
networking
*
Networking
|
|
kubernetesVersion
*
string
|
|
controlPlaneEndpoint
*
string
|
|
apiServer
*
APIServer
|
|
controllerManager
*
ControlPlaneComponent
|
|
scheduler
*
ControlPlaneComponent
|
|
dns
*
DNS
|
|
certificatesDir
*
string
|
|
imageRepository
*
string
|
|
useHyperKubeImage
*
bool
|
|
featureGates
*
map[string]bool
|
|
clusterName
*
string
|
|
ClusterStatus contains the cluster status. The ClusterStatus will be stored in the kubeadm-config ConfigMap in the
cluster, and then updated by kubeadm when additional control plane nodes joins or leaves the cluster.
| Field | Description |
|---|---|
apiVersionstring |
kubeadm.k8s.io/v1beta1 |
kindstring |
ClusterStatus |
apiEndpoints
*
map[string]github.com/tengqm/kubeconfig/config/kubeadm/v1beta1.APIEndpoint
|
|
DEPRECATED - This group version of InitConfiguration is deprecated by apis/kubeadm/v1beta2.InitConfiguration. InitConfiguration contains runtime information that are specific to "kubeadm init".
| Field | Description |
|---|---|
apiVersionstring |
kubeadm.k8s.io/v1beta1 |
kindstring |
InitConfiguration |
-
*
ClusterConfiguration
|
This field holds the cluster-wide information, and embeds that struct (which can be (un)marshalled separately as well)
When InitConfiguration is marshalled to bytes in the external version, this information IS NOT preserved (which can be seen from
the |
bootstrapTokens
*
[]BootstrapToken
|
|
nodeRegistration
*
NodeRegistrationOptions
|
|
localAPIEndpoint
*
APIEndpoint
|
|
DEPRECATED - This group version of JoinConfiguration is deprecated by apis/kubeadm/v1beta2.JoinConfiguration. JoinConfiguration contains elements describing a particular node.
| Field | Description |
|---|---|
apiVersionstring |
kubeadm.k8s.io/v1beta1 |
kindstring |
JoinConfiguration |
nodeRegistration
*
NodeRegistrationOptions
|
|
caCertPath
*
string
|
|
discovery
*
Discovery
|
|
controlPlane
*
JoinControlPlane
|
|
(Appears in: ClusterStatus, InitConfiguration, JoinControlPlane)
APIEndpoint struct contains elements of API server instance deployed on a node.
| Field | Description |
|---|---|
advertiseAddress
*
string
|
|
bindPort
*
int32
|
|
(Appears in: ClusterConfiguration)
APIServer holds settings necessary for API server instances in the cluster
| Field | Description |
|---|---|
ControlPlaneComponent
*
ControlPlaneComponent
|
(Members of |
certSANs
*
[]string
|
|
timeoutForControlPlane
*
meta/v1.Duration
|
|
(Appears in: InitConfiguration)
BootstrapToken describes one bootstrap token, stored as a Secret in the cluster
| Field | Description |
|---|---|
token
*
BootstrapTokenString
|
|
description
*
string
|
|
ttl
*
meta/v1.Duration
|
|
expires
*
meta/v1.Time
|
|
usages
*
[]string
|
|
groups
*
[]string
|
|
(Appears in: Discovery)
BootstrapTokenDiscovery is used to set the options for bootstrap token based discovery.
| Field | Description |
|---|---|
token
*
string
|
|
apiServerEndpoint
*
string
|
|
caCertHashes
*
[]string
|
|
unsafeSkipCAVerification
*
bool
|
|
(Appears in: BootstrapToken)
DEPRECATED - This group version of BootstrapTokenString is deprecated by apis/kubeadm/v1beta2/BootstrapTokenString. BootstrapTokenString is a token of the format abcdef.abcdef0123456789 that is used for both validation of the practically of the API server from a joining node's point of view and as an authentication method for the node in the bootstrap phase of "kubeadm join". This token is and should be short-lived
| Field | Description |
|---|---|
-
*
string
|
|
-
*
string
|
(Appears in: ClusterConfiguration, APIServer)
ControlPlaneComponent holds settings common to control plane component of the cluster
| Field | Description |
|---|---|
extraArgs
*
map[string]string
|
|
extraVolumes
*
[]HostPathMount
|
|
(Appears in: ClusterConfiguration)
DNS defines the DNS add-on that should be used in the cluster
| Field | Description |
|---|---|
type
*
DNSAddOnType
|
|
ImageMeta
*
ImageMeta
|
(Members of
|
string alias)(Appears in: DNS)
DNSAddOnType defines string identifying DNS add-on types.
(Appears in: JoinConfiguration)
Discovery specifies the options for the kubelet to use during the TLS Bootstrap process
| Field | Description |
|---|---|
bootstrapToken
*
BootstrapTokenDiscovery
|
|
file
*
FileDiscovery
|
|
tlsBootstrapToken
*
string
|
|
timeout
*
meta/v1.Duration
|
|
(Appears in: ClusterConfiguration)
Etcd contains elements describing Etcd configuration.
| Field | Description |
|---|---|
local
*
LocalEtcd
|
|
external
*
ExternalEtcd
|
|
(Appears in: Etcd)
ExternalEtcd describes an external etcd cluster. Kubeadm has no knowledge of where certificate files live and they must be supplied.
| Field | Description |
|---|---|
endpoints
*
[]string
|
|
caFile
*
string
|
|
certFile
*
string
|
|
keyFile
*
string
|
|
(Appears in: Discovery)
FileDiscovery is used to specify a file or a URL to a kubeconfig file from which to load cluster information.
| Field | Description |
|---|---|
kubeConfigPath
*
string
|
|
(Appears in: ControlPlaneComponent)
HostPathMount contains elements describing volumes that are mounted from the host.
| Field | Description |
|---|---|
name
*
string
|
|
hostPath
*
string
|
|
mountPath
*
string
|
|
readOnly
*
bool
|
|
pathType
*
core/v1.HostPathType
|
|
ImageMeta allows to customize the image used for components that are not originated from the Kubernetes/Kubernetes release process
| Field | Description |
|---|---|
imageRepository
*
string
|
|
imageTag
*
string
|
|
(Appears in: JoinConfiguration)
JoinControlPlane contains elements describing an additional control plane instance to be deployed on the joining node.
| Field | Description |
|---|---|
localAPIEndpoint
*
APIEndpoint
|
|
(Appears in: Etcd)
LocalEtcd describes that kubeadm should run an etcd cluster locally
| Field | Description |
|---|---|
ImageMeta
*
ImageMeta
|
(Members of |
dataDir
*
string
|
|
extraArgs
*
map[string]string
|
|
serverCertSANs
*
[]string
|
|
peerCertSANs
*
[]string
|
|
(Appears in: ClusterConfiguration)
Networking contains elements describing cluster's networking configuration
| Field | Description |
|---|---|
serviceSubnet
*
string
|
|
podSubnet
*
string
|
|
dnsDomain
*
string
|
|
(Appears in: InitConfiguration, JoinConfiguration)
NodeRegistrationOptions holds fields that relate to registering a new control-plane or node to the cluster, either via "kubeadm init" or "kubeadm join"
| Field | Description |
|---|---|
name
*
string
|
|
criSocket
*
string
|
|
taints
*
[]core/v1.Taint
|
|
kubeletExtraArgs
*
map[string]string
|
|
Generated with gendoc on git commit 7231496