diff --git a/content/en/docs/reference/_index.md b/content/en/docs/reference/_index.md index 7a61443525..7926083bc3 100644 --- a/content/en/docs/reference/_index.md +++ b/content/en/docs/reference/_index.md @@ -82,6 +82,7 @@ operator to use or manage a cluster. ## Config API for kubeadm * [v1beta2](/docs/reference/config-api/kubeadm-config.v1beta2/) +* [v1beta3](/docs/reference/config-api/kubeadm-config.v1beta3/) ## Design Docs diff --git a/content/en/docs/reference/config-api/kubeadm-config.v1beta2.md b/content/en/docs/reference/config-api/kubeadm-config.v1beta2.md index 293c7dc779..95cc3161e0 100644 --- a/content/en/docs/reference/config-api/kubeadm-config.v1beta2.md +++ b/content/en/docs/reference/config-api/kubeadm-config.v1beta2.md @@ -116,7 +116,7 @@ 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 - node subnet or services subnet. + pod 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 @@ -164,19 +164,19 @@ 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: - cgroup-driver: "cgroupfs" - ignorePreflightErrors: - - IsPrivilegedUser + 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" --- apiVersion: kubeadm.k8s.io/v1beta2 @@ -184,59 +184,59 @@ 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 @@ -663,7 +663,7 @@ APIServer holds settings necessary for API server deployments in the cluster
timeoutForControlPlane
[Required]invalid type
+meta/v1.Duration
ttl
[Required]invalid type
+meta/v1.Duration
expires
[Required]invalid type
+meta/v1.Time
timeout
[Required]invalid type
+meta/v1.Duration
pathType
[Required]invalid type
+core/v1.HostPathType
taints
[Required][]invalid type
+[]core/v1.Taint
Field | Description |
---|---|
apiVersion string | kubeadm.k8s.io/v1beta3 |
kind string | ClusterConfiguration |
etcd + Etcd
+ |
++ `etcd` holds configuration for etcd. | +
networking + Networking
+ |
++ `networking` holds configuration for the networking topology of the cluster. | +
kubernetesVersion + string
+ |
++ `kubernetesVersion` is the target version of the control plane. | +
controlPlaneEndpoint + string
+ |
++ `controlPlaneEndpoint` sets a stable IP address or DNS name for the control plane; it +can be a valid IP address or a RFC-1123 DNS subdomain, both with optional TCP port. +In case the `controlPlaneEndpoint` is not specified, the `advertiseAddress` + `bindPort` +are used; in case the `controlPlaneEndpoint` is specified but without a TCP port, +the `bindPort` of the `localAPIEndpoint` is used. +Possible usages are: + +- In a cluster with more than one control plane instances, this field should be + assigned the address of the external load balancer in front of the + control plane instances. +- In environments with enforced node recycling, the ControlPlaneEndpoint + could be used for assigning a stable DNS to the control plane. | +
apiServer + APIServer
+ |
++ `apiServer` contains extra settings for the API server. | +
controllerManager + ControlPlaneComponent
+ |
++ `controllerManager` contains extra settings for the controller manager. | +
scheduler + ControlPlaneComponent
+ |
++ `scheduler` contains extra settings for the scheduler. | +
dns + DNS
+ |
++ `dns` defines the options for the DNS add-on. | +
certificatesDir + string
+ |
++ `certificatesDir` specifies where to store or look for all required certificates. | +
imageRepository + string
+ |
++ `imageRepository` sets the container registry to pull images from. +If empty, `k8s.gcr.io` will be used by default; in case of kubernetes version is +a CI build (kubernetes version starts with `ci/` or `ci-cross/`) +`gcr.io/k8s-staging-ci-images` will be used as a default for control plane +components and for kube-proxy, while `k8s.gcr.io` will be used for all the other images. | +
featureGates + map[string]bool
+ |
++ Feature gates enabled by the user. | +
clusterName + string
+ |
++ The cluster name. | +
Field | Description |
---|---|
apiVersion string | kubeadm.k8s.io/v1beta3 |
kind string | InitConfiguration |
bootstrapTokens + []github.com/tengqm/kubeconfig/config/bootstraptoken/v1.BootstrapToken
+ |
++ `bootstrapTokens` is respected at `kubeadm init` time and describes a set of Bootstrap Tokens to create. +This information IS NOT uploaded to the kubeadm cluster configmap, partly because of its sensitive nature. | +
nodeRegistration + NodeRegistrationOptions
+ |
++ `nodeRegistration` holds fields that relate to registering the new control-plane node to the cluster | +
localAPIEndpoint + APIEndpoint
+ |
++ `localAPIEndpoint` represents the endpoint of the API server instance that's deployed on this control plane node +In HA setups, this differs from ClusterConfiguration.ControlPlaneEndpoint in the sense that ControlPlaneEndpoint +is the global endpoint for the cluster, which then loadbalances the requests to each individual API server. This +configuration object lets you customize what IP/DNS name and port the local API server advertises it's accessible +on. By default, kubeadm tries to auto-detect the IP of the default interface and use that, but in case that process +fails you may set the desired value here. | +
certificateKey + string
+ |
++ `certificateKey` sets the key with which certificates and keys are encrypted prior to being uploaded in +a Secret in the cluster during the "uploadcerts" init phase. | +
skipPhases + []string
+ |
++ `skipPhases` is a list of phases to skip during command execution. +The list of phases can be obtained with the `kubeadm init --help` command. +The flag `--skip-phases` takes precedence over this field. | +
patches + Patches
+ |
++ `patches` contains options related to applying patches to components deployed by kubeadm during +"kubeadm init". | +
Field | Description |
---|---|
apiVersion string | kubeadm.k8s.io/v1beta3 |
kind string | JoinConfiguration |
nodeRegistration + NodeRegistrationOptions
+ |
++ `nodeRegistration` holds fields that relate to registering the new control-plane +node to the cluster | +
caCertPath + string
+ |
++ `caCertPath` is the path to the SSL certificate authority used to +secure comunications between node and control-plane. +Defaults to "/etc/kubernetes/pki/ca.crt". | +
discovery [Required]+ Discovery
+ |
++ `discovery` specifies the options for the kubelet to use during the TLS Bootstrap process. | +
controlPlane + JoinControlPlane
+ |
++ `controlPlane` defines the additional control plane instance to be deployed on the +joining node. If nil, no additional control plane instance will be deployed. | +
skipPhases + []string
+ |
++ `skipPhases` is a list of phases to skip during command execution. +The list of phases can be obtained with the `kubeadm join --help` command. +The flag `--skip-phases` takes precedence over this field. | +
patches + Patches
+ |
++ `patches` contains options related to applying patches to components deployed by kubeadm during +`kubeadm join`. | +
Field | Description |
---|---|
advertiseAddress + string
+ |
++ `advertiseAddress` sets the IP address for the API server to advertise. | +
bindPort + int32
+ |
++ `bindPort` sets the secure port for the API Server to bind to. Defaults to 6443. | +
Field | Description |
---|---|
ControlPlaneComponent [Required]+ ControlPlaneComponent
+ |
+(Members of ControlPlaneComponent are embedded into this type.)
+ No description provided.
+ |
+
certSANs + []string
+ |
++ `certSANs` sets extra Subject Alternative Names for the API Server signing cert. | +
timeoutForControlPlane + meta/v1.Duration
+ |
++ `timeoutForControlPlane` controls the timeout that we use for API server to appear | +
Field | Description |
---|---|
token [Required]+ string
+ |
++ `token` is a token used to validate cluster information fetched from the control-plane. | +
apiServerEndpoint + string
+ |
++ `apiServerEndpoint` is an IP or domain name to the API server from which +information will be fetched. | +
caCertHashes + []string
+ |
+
+ CACertHashes specifies a set of public key pins to verify when token-based
+discovery is used. The root CA found during discovery must match one of these
+values. Specifying an empty set disables root CA pinning, which can be unsafe.
+Each hash is specified as ` |
+
unsafeSkipCAVerification + bool
+ |
++ `unsafeSkipCAVerification` allows token-based discovery without CA verification +via `caCertHashes`. This can weaken the security of kubeadm since other nodes +can impersonate the control-plane. | +
Field | Description |
---|---|
extraArgs + map[string]string
+ |
++ `extraArgs` is an extra set of flags to pass to the control plane component. +A key in this map is the flag name as it appears on the +command line except without leading dash(es). | +
extraVolumes + []HostPathMount
+ |
++ `extraVolumes` is an extra set of host volumes, mounted to the control plane component. | +
Field | Description |
---|---|
ImageMeta [Required]+ ImageMeta
+ |
+(Members of ImageMeta are embedded into this type.)
+ `imageMeta` allows to customize the image used for the DNS component. |
+
Field | Description |
---|---|
bootstrapToken + BootstrapTokenDiscovery
+ |
++ `bootstrapToken` is used to set the options for bootstrap token based discovery. +`bootstrapToken` and `file` are mutually exclusive. | +
file + FileDiscovery
+ |
++ `file` specifies a file or URL to a kubeconfig file from which to load cluster information. +`bootstrapToken` and `file` are mutually exclusive. | +
tlsBootstrapToken + string
+ |
++ `tlsBootstrapToken` is a token used for TLS bootstrapping. +If `bootstrapToken` is set, this field is defaulted to `bootstrapToken.token`, +but can be overridden. +If `file` is set, this field ∗∗must be set∗∗ in case the KubeConfigFile does +not contain any other authentication information | +
timeout + meta/v1.Duration
+ |
++ `timeout` modifies the discovery timeout. | +
Field | Description |
---|---|
local + LocalEtcd
+ |
++ `local` provides configuration knobs for configuring the local etcd instance. +`local` and `external` are mutually exclusive. | +
external + ExternalEtcd
+ |
++ `external` describes how to connect to an external etcd cluster. +`local` and `external` are mutually exclusive. | +
Field | Description |
---|---|
endpoints [Required]+ []string
+ |
++ `endpoints` are endpoints of etcd members. This field is required. | +
caFile [Required]+ string
+ |
++ `caFile` is an SSL Certificate Authority file used to secure etcd communication. +Required if using a TLS connection. | +
certFile [Required]+ string
+ |
++ `certFile` is an SSL certification file used to secure etcd communication. +Required if using a TLS connection. | +
keyFile [Required]+ string
+ |
++ `keyFile` is an SSL key file used to secure etcd communication. +Required if using a TLS connection. | +
Field | Description |
---|---|
kubeConfigPath [Required]+ string
+ |
++ `kubeConfigPath` specifies the actual file path or URL to the kubeconfig file +from which to load cluster information | +
Field | Description |
---|---|
name [Required]+ string
+ |
++ `name` is the volume name inside the Pod template. | +
hostPath [Required]+ string
+ |
++ `hostPath` is the path in the host that will be mounted inside the Pod. | +
mountPath [Required]+ string
+ |
++ `mountPath` is the path inside the Pod where the `hostPath` volume is mounted. | +
readOnly + bool
+ |
++ `readOnly` controls write access to the volume. | +
pathType + core/v1.HostPathType
+ |
++ `pathType` is the type of the `hostPath` volume. | +
Field | Description |
---|---|
imageRepository + string
+ |
++ `imageRepository` sets the container registry to pull images from. +If not set, the ImageRepository defined in ClusterConfiguration will be used instead. | +
imageTag + string
+ |
++ `imageTag` allows to specify a tag for the image. +In case this value is set, kubeadm does not change automatically the +version of the above components during upgrades. | +
Field | Description |
---|---|
localAPIEndpoint + APIEndpoint
+ |
++ `localAPIEndpoint` represents the endpoint of the API server instance to be deployed +on this node. | +
certificateKey + string
+ |
++ `certificateKey` is the key that is used for decryption of certificates after they +are downloaded from the secret upon joining a new control plane node. The +corresponding encryption key is in the InitConfiguration. | +
Field | Description |
---|---|
ImageMeta [Required]+ ImageMeta
+ |
+(Members of ImageMeta are embedded into this type.)
+ `ImageMeta` allows to customize the container used for etcd. |
+
dataDir [Required]+ string
+ |
++ `dataDir` is the directory etcd will place its data. +Defaults to "/var/lib/etcd". | +
extraArgs + map[string]string
+ |
++ `extraArgs` are extra arguments provided to the etcd binary +when run inside a static pod. +A key in this map is the flag name as it appears on the command line except +without leading dash(es). | +
serverCertSANs + []string
+ |
++ `serverCertSANs` sets extra Subject Alternative Names for the etcd server signing cert. | +
peerCertSANs + []string
+ |
++ `peerCertSANs` sets extra Subject Alternative Names for the etcd peer signing cert. | +
Field | Description |
---|---|
serviceSubnet + string
+ |
++ `serviceSubnet` is the subnet used by k8s services. Defaults to "10.96.0.0/12". | +
podSubnet + string
+ |
++ `podSubnet` is the subnet used by Pods. | +
dnsDomain + string
+ |
++ `dnsDomain` is the DNS domain used by k8s services. Defaults to "cluster.local". | +
Field | Description |
---|---|
name + string
+ |
++ `name` is the `.metadata.name` field of the Node API object that will be created in this +`kubeadm init` or `kubeadm join` operation. +This field is also used in the `CommonName` field of the kubelet's client certificate to the +API server. Defaults to the hostname of the node if not provided. | +
criSocket + string
+ |
++ `criSocket` is used to retrieve container runtime info. This information will be +annotated to the Node API object, for later re-use. | +
taints [Required]+ []core/v1.Taint
+ |
++ `taints` specifies the taints the Node API object should be registered with. If +this field is unset, i.e. nil, in the `kubeadm init` process, it will be defaulted +to `['"node-role.kubernetes.io/master"=""']`. If you don't want to taint your +control-plane node, set this field to an empty list, i.e. `taints: []` in the YAML +file. This field is solely used for Node registration. | +
kubeletExtraArgs + map[string]string
+ |
++ `kubeletExtraArgs` passes through extra arguments to the kubelet. The arguments here +are passed to the kubelet command line via the environment file kubeadm writes at +runtime for the kubelet to source. This overrides the generic base-level +configuration in the "kubelet-config-1.X" ConfigMap. Flags have higher priority when +parsing. These values are local and specific to the node kubeadm is executing on. +A key in this map is the flag name as it appears on the command line except without +leading dash(es). | +
ignorePreflightErrors + []string
+ |
++ `ignorePreflightErrors` provides a slice of pre-flight errors to be ignored when +the current node is registered. | +
imagePullPolicy + core/v1.PullPolicy
+ |
++ `imagePullPolicy` specifies the policy for image pulling during `kubeadm init` and +`kubeadm join` operations. +The value of this field must be one of "Always", "IfNotPresent" or "Never". +If this field is unset kubeadm will default it to "IfNotPresent", or pull the required +images if not present on the host. | +
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. | +