diff --git a/content/en/docs/reference/_index.md b/content/en/docs/reference/_index.md
index 23f57aa420..7a61443525 100644
--- a/content/en/docs/reference/_index.md
+++ b/content/en/docs/reference/_index.md
@@ -81,7 +81,7 @@ operator to use or manage a cluster.
## Config API for kubeadm
-* [v1beta3](/docs/reference/config-api/kubeadm-config.v1beta3/)
+* [v1beta2](/docs/reference/config-api/kubeadm-config.v1beta2/)
## Design Docs
diff --git a/content/en/docs/reference/config-api/kubeadm-config.v1beta3.md b/content/en/docs/reference/config-api/kubeadm-config.v1beta2.md
similarity index 65%
rename from content/en/docs/reference/config-api/kubeadm-config.v1beta3.md
rename to content/en/docs/reference/config-api/kubeadm-config.v1beta2.md
index cb2060750d..293c7dc779 100644
--- a/content/en/docs/reference/config-api/kubeadm-config.v1beta3.md
+++ b/content/en/docs/reference/config-api/kubeadm-config.v1beta2.md
@@ -1,38 +1,29 @@
---
-title: kubeadm Configuration (v1beta3)
+title: kubeadm Configuration (v1beta2)
content_type: tool-reference
-package: kubeadm.k8s.io/v1beta3
+package: kubeadm.k8s.io/v1beta2
auto_generated: true
---
-Package v1beta3 defines the v1beta3 version of the kubeadm configuration file format.
-This version improves on the v1beta2 format by fixing some minor issues and adding a few new fields.
+Package v1beta2 defines the v1beta2 version of the kubeadm configuration file format.
+This version improves on the v1beta1 format by fixing some minor issues and adding a few new fields.
-A list of changes since v1beta2:
+A list of changes since v1beta1:
-- The deprecated `ClusterConfiguration.useHyperKubeImage` field has been removed.
- Kubeadm no longer supports the hyperkube image.
-- The `ClusterConfiguration.dns.type` field has been removed since CoreDNS is the only supported
- DNS server type by kubeadm.
-- Include "datapolicy" tags on the fields that hold secrets.
- This would result in the field values to be omitted when API structures are printed with klog.
-- Add `InitConfiguration.skipPhases`, `JoinConfiguration.skipPhases` to allow skipping
- a list of phases during kubeadm init/join command execution.
-- Add `InitConfiguration.nodeRegistration.imagePullPolicy" and
- `JoinConfiguration.nodeRegistration.imagePullPolicy` to allow specifying
- the images pull policy during kubeadm "init" and "join". The value must be
- one of "Always", "Never" or "IfNotPresent". "IfNotPresent" is the default,
- which has been the existing behavior prior to this addition.
-- Add `InitConfiguration.patches.directory`, `JoinConfiguration.patches.directory`
- to allow the user to configure a directory from which to take patches for
- components deployed by kubeadm.
-- Move the `BootstrapToken∗` API and related utilities out of the "kubeadm" API group
- to a new group "bootstraptoken". The kubeadm API version v1beta3 no longer contains
- the `BootstrapToken∗` structures.
+- `certificateKey" field is added to InitConfiguration and JoinConfiguration.
+- "ignorePreflightErrors" field is added to the NodeRegistrationOptions.
+- The JSON "omitempty" tag is used in a more places where appropriate.
+- The JSON "omitempty" tag of the "taints" field (inside NodeRegistrationOptions) is removed.
+See the Kubernetes 1.15 changelog for further details.
## Migration from old kubeadm config versions
-- kubeadm v1.15.x and newer can be used to migrate from the v1beta1 to v1beta2.
-- kubeadm v1.22.x no longer supports v1beta1 and older APIs, but can be used to migrate v1beta2 to v1beta3.
+Please convert your v1beta1 configuration files to v1beta2 using the "kubeadm config migrate" command of kubeadm v1.15.x
+(conversion from older releases of kubeadm config files requires older release of kubeadm as well e.g.
+
+- kubeadm v1.11 should be used to migrate v1alpha1 to v1alpha2; kubeadm v1.12 should be used to translate v1alpha2 to v1alpha3;
+- kubeadm v1.13 or v1.14 should be used to translate v1alpha3 to v1beta1)
+
+Nevertheless, kubeadm v1.15.x will support reading from v1beta1 version of the kubeadm config file format.
## Basics
@@ -45,19 +36,19 @@ A kubeadm config file could contain multiple configuration types separated using
kubeadm supports the following configuration types:
```yaml
-apiVersion: kubeadm.k8s.io/v1beta3
+apiVersion: kubeadm.k8s.io/v1beta2
kind: InitConfiguration
----
-apiVersion: kubeadm.k8s.io/v1beta3
+
+apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
----
+
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
----
+
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
----
-apiVersion: kubeadm.k8s.io/v1beta3
+
+apiVersion: kubeadm.k8s.io/v1beta2
kind: JoinConfiguration
```
@@ -88,12 +79,12 @@ InitConfiguration, ClusterConfiguration, KubeProxyConfiguration, KubeletConfigur
between InitConfiguration and ClusterConfiguration is mandatory.
```yaml
-apiVersion: kubeadm.k8s.io/v1beta3
+apiVersion: kubeadm.k8s.io/v1beta2
kind: InitConfiguration
bootstrapTokens:
- ...
+ ...
nodeRegistration:
- ...
+ ...
```
The InitConfiguration type should be used to configure runtime settings, that in case of kubeadm init
@@ -108,7 +99,7 @@ is executed, including:
use it e.g. to customize the API server advertise address.
```yaml
- apiVersion: kubeadm.k8s.io/v1beta3
+ apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
networking:
...
@@ -119,14 +110,13 @@ is executed, including:
...
extraVolumes:
...
- ...
```
The ClusterConfiguration type should be used to configure cluster-wide settings,
including settings for:
- Networking, that holds configuration for the networking topology of the cluster; use it e.g. to customize
- pod subnet or services subnet.
+ node subnet or services subnet.
- Etcd configurations; use it e.g. 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; use it to customize control-plane
@@ -135,7 +125,7 @@ including settings for:
```yaml
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
- ...
+ ...
```
The KubeProxyConfiguration type should be used to change the configuration passed to kube-proxy instances deployed
@@ -160,7 +150,7 @@ Here is a fully populated example of a single YAML file containing multiple
configuration types to be used during a `kubeadm init` run.
```yaml
-apiVersion: kubeadm.k8s.io/v1beta3
+apiVersion: kubeadm.k8s.io/v1beta2
kind: InitConfiguration
bootstrapTokens:
- token: "9a08jv.c0izixklcxtmnze7"
@@ -174,84 +164,82 @@ bootstrapTokens:
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:
- v: 4
- ignorePreflightErrors:
- - IsPrivilegedUser
- imagePullPolicy: "IfNotPresent"
+ name: "ec2-10-100-0-1"
+ criSocket: "/var/run/dockershim.sock"
+ taints:
+ - key: "kubeadmNode"
+ value: "master"
+ effect: "NoSchedule"
+ kubeletExtraArgs:
+ cgroup-driver: "cgroupfs"
+ ignorePreflightErrors:
+ - IsPrivilegedUser
localAPIEndpoint:
- advertiseAddress: "10.100.0.1"
- bindPort: 6443
+ advertiseAddress: "10.100.0.1"
+ bindPort: 6443
certificateKey: "e6a2eb8581237ab72a4f494f30285ec12a9694d750b9785706a83bfcbbbd2204"
-skipPhases:
- - add/kube-proxy
---
-apiVersion: kubeadm.k8s.io/v1beta3
+apiVersion: kubeadm.k8s.io/v1beta2
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
+ 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
@@ -268,7 +256,7 @@ kind: KubeProxyConfiguration
When executing kubeadm join with the `--config` option, the JoinConfiguration type should be provided.
```yaml
-apiVersion: kubeadm.k8s.io/v1beta3
+apiVersion: kubeadm.k8s.io/v1beta2
kind: JoinConfiguration
...
```
@@ -280,20 +268,21 @@ to the node where kubeadm is executed, including:
- NodeRegistration, that holds fields that relate to registering the new node to the cluster;
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, that represents the endpoint of the instance of the API server to be eventually
- deployed on this node.
+
+- APIEndpoint, that represents the endpoint of the instance of the API server to be eventually deployed on this node.
## Resource Types
-- [ClusterConfiguration](#kubeadm-k8s-io-v1beta3-ClusterConfiguration)
-- [InitConfiguration](#kubeadm-k8s-io-v1beta3-InitConfiguration)
-- [JoinConfiguration](#kubeadm-k8s-io-v1beta3-JoinConfiguration)
+- [ClusterConfiguration](#kubeadm-k8s-io-v1beta2-ClusterConfiguration)
+- [ClusterStatus](#kubeadm-k8s-io-v1beta2-ClusterStatus)
+- [InitConfiguration](#kubeadm-k8s-io-v1beta2-InitConfiguration)
+- [JoinConfiguration](#kubeadm-k8s-io-v1beta2-JoinConfiguration)
-## `ClusterConfiguration` {#kubeadm-k8s-io-v1beta3-ClusterConfiguration}
+## `ClusterConfiguration` {#kubeadm-k8s-io-v1beta2-ClusterConfiguration}
@@ -305,29 +294,29 @@ ClusterConfiguration contains cluster-wide configuration for a kubeadm cluster
Field Description
apiVersion
kubeadm.k8s.io/v1beta3
apiVersion
kubeadm.k8s.io/v1beta2
kind
ClusterConfiguration
etcd
Etcd
+etcd
[Required]Etcd
networking
Networking
+networking
[Required]Networking
kubernetesVersion
kubernetesVersion
[Required]string
controlPlaneEndpoint
controlPlaneEndpoint
[Required]string
apiServer
APIServer
+apiServer
[Required]APIServer
controllerManager
ControlPlaneComponent
+controllerManager
[Required]ControlPlaneComponent
scheduler
ControlPlaneComponent
+scheduler
[Required]ControlPlaneComponent
dns
DNS
+dns
[Required]DNS
certificatesDir
certificatesDir
[Required]string
imageRepository
imageRepository
[Required]string
featureGates
useHyperKubeImage
[Required]bool
+featureGates
[Required]map[string]bool
clusterName
clusterName
[Required]string
Field | Description |
---|---|
apiVersion string | kubeadm.k8s.io/v1beta2 |
kind string | ClusterStatus |
apiEndpoints [Required]+ map[string]github.com/tengqm/kubeconfig/config/kubeadm/v1beta2.APIEndpoint
+ |
++ `apiEndpoints` currently available in the cluster, one for each control +plane/API server instance. The key of the map is the IP of the host's default interface | +
apiVersion
kubeadm.k8s.io/v1beta3
apiVersion
kubeadm.k8s.io/v1beta2
kind
InitConfiguration
bootstrapTokens
[]BootstrapToken
+bootstrapTokens
[Required][]BootstrapToken
nodeRegistration
NodeRegistrationOptions
+nodeRegistration
[Required]NodeRegistrationOptions
localAPIEndpoint
APIEndpoint
+localAPIEndpoint
[Required]APIEndpoint
certificateKey
certificateKey
[Required]string
skipPhases
[]string
-patches
Patches
-apiVersion
kubeadm.k8s.io/v1beta3
apiVersion
kubeadm.k8s.io/v1beta2
kind
JoinConfiguration
nodeRegistration
NodeRegistrationOptions
+nodeRegistration
[Required]NodeRegistrationOptions
caCertPath
caCertPath
[Required]string
discovery
[Required]Discovery
+Discovery
controlPlane
JoinControlPlane
+controlPlane
[Required]JoinControlPlane
skipPhases
[]string
-patches
Patches
-advertiseAddress
advertiseAddress
[Required]string
bindPort
bindPort
[Required]int32
ControlPlaneComponent
[Required]ControlPlaneComponent
+ControlPlaneComponent
ControlPlaneComponent
are embedded into this type.)
No description provided.
@@ -655,7 +654,7 @@ APIServer holds settings necessary for API server deployments in the cluster
certSANs
certSANs
[Required][]string
timeoutForControlPlane
timeoutForControlPlane
[Required]invalid type
Field | Description |
---|---|
token [Required]+ BootstrapTokenString
+ |
++ `token` used for establishing bidirectional trust between nodes and control-planes. +Used for joining nodes in the cluster. | +
description [Required]+ string
+ |
++ `description` sets a human-friendly message why this token exists and what it's used +for, so other administrators can know its purpose. | +
ttl [Required]+ invalid type
+ |
++ `ttl` defines the time to live for this token. Defaults to "24h". +`expires` and `ttl` are mutually exclusive. | +
expires [Required]+ invalid type
+ |
++ `expires` specifies the timestamp when this token expires. Defaults to being set +dynamically at runtime based on the `ttl`. `expires` and `ttl` are mutually exclusive. | +
usages [Required]+ []string
+ |
++ `usages` describes the ways in which this token can be used. Can by default be used +for establishing bidirectional trust, but that can be changed here. | +
groups [Required]+ []string
+ |
++ `groups` specifies the extra groups that this token will authenticate as when/if +used for authentication | +
apiServerEndpoint
apiServerEndpoint
[Required]string
caCertHashes
caCertHashes
[Required][]string
unsafeSkipCAVerification
unsafeSkipCAVerification
[Required]bool
Field | Description |
---|---|
- [Required]+ string
+ |
++ No description provided. + | +
- [Required]+ string
+ |
++ No description provided. + | +
extraArgs
extraArgs
[Required]map[string]string
extraVolumes
[]HostPathMount
+extraVolumes
[Required][]HostPathMount
type
[Required]DNSAddOnType
+ImageMeta
[Required]ImageMeta
+ImageMeta
ImageMeta
are embedded into this type.)
- `imageMeta` allows to customize the image used for the DNS component.bootstrapToken
BootstrapTokenDiscovery
+bootstrapToken
[Required]BootstrapTokenDiscovery
file
FileDiscovery
+file
[Required]FileDiscovery
tlsBootstrapToken
tlsBootstrapToken
[Required]string
timeout
timeout
[Required]invalid type
local
LocalEtcd
+local
[Required]LocalEtcd
external
ExternalEtcd
+external
[Required]ExternalEtcd
readOnly
readOnly
[Required]bool
pathType
pathType
[Required]invalid type
imageRepository
imageRepository
[Required]string
imageTag
imageTag
[Required]string
localAPIEndpoint
APIEndpoint
+localAPIEndpoint
[Required]APIEndpoint
certificateKey
certificateKey
[Required]string
ImageMeta
[Required]ImageMeta
+ImageMeta
ImageMeta
are embedded into this type.)
`ImageMeta` allows to customize the container used for etcd.extraArgs
extraArgs
[Required]map[string]string
serverCertSANs
serverCertSANs
[Required][]string
peerCertSANs
peerCertSANs
[Required][]string
serviceSubnet
serviceSubnet
[Required]string
podSubnet
podSubnet
[Required]string
dnsDomain
dnsDomain
[Required]string
name
name
[Required]string
criSocket
criSocket
[Required]string
kubeletExtraArgs
kubeletExtraArgs
[Required]map[string]string
ignorePreflightErrors
ignorePreflightErrors
[Required][]string
imagePullPolicy
invalid type
-Field | Description |
---|---|
directory - string
- |
-- `directory` is a path to a directory that contains files named -`target[suffix][+patchtype].extension`. -For example, `kube-apiserver0+merge.yaml` or just `etcd.json`. `target` can be one of -"kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd". `patchtype` can be one -of "strategic", "merge" or "json" and they match the patch formats supported by kubectl. -The default `patchtype` is "strategic". `extension` must be either "json" or "yaml". -`suffix` is an optional string that can be used to determine which patches are applied -first alpha-numerically. | -
Field | Description |
---|---|
token [Required]- BootstrapTokenString
- |
-- `token` is used for establishing bidirectional trust between nodes and control-planes. -Used for joining nodes in the cluster. | -
description - string
- |
-- `description` sets a human-friendly message why this token exists and what it's used -for, so other administrators can know its purpose. | -
ttl - invalid type
- |
-- `ttl` defines the time to live for this token. Defaults to `24h`. -`expires` and `ttl` are mutually exclusive. | -
expires - invalid type
- |
-- `expires` specifies the timestamp when this token expires. Defaults to being set -dynamically at runtime based on the `ttl`. `expires` and `ttl` are mutually exclusive. | -
usages - []string
- |
-- `usages` describes the ways in which this token can be used. Can by default be used -for establishing bidirectional trust, but that can be changed here. | -
groups - []string
- |
-- `groups` specifies the extra groups that this token will authenticate as when/if -used for authentication | -
Field | Description |
---|---|
- [Required]- string
- |
-- No description provided. - | -
- [Required]- string
- |
-- No description provided. - | -