kubeadm init phase [page]deterministic
`kubeadm init phase` enables you to invoke atomic steps of the bootstrap process. Hence, you can let kubeadm do some of the work and you can fill in the gaps if you wish to apply customization.
`kubeadm init phase` is consistent with the [kubeadm init workflow](/docs/reference/setup-tools/kubeadm/kubeadm-init/#init-workflow), and behind the scene both use the same code.
## kubeadm init phase preflight {#cmd-phase-preflight}
Using this command you can execute preflight checks on a control-plane node.
## kubeadm init phase certs {#cmd-phase-certs}
Can be used to create all required certificates by kubeadm.
## kubeadm init phase kubeconfig {#cmd-phase-kubeconfig}
You can create all required kubeconfig files by calling the `all` subcommand or call them individually.
## kubeadm init phase etcd {#cmd-phase-etcd}
Use the following phase to create a local etcd instance based on a static Pod file.
## kubeadm init phase control-plane {#cmd-phase-control-plane}
Using this phase you can create all required static Pod files for the control plane components.
## kubeadm init phase kubelet-start {#cmd-phase-kubelet-start}
This phase will write the kubelet configuration file and environment file and then start the kubelet.
## kubeadm init phase wait-control-plane {#cmd-phase-wait-control-plane}
In this phase kubeadm will wait until the control plane components start.
## kubeadm init phase upload-config {#cmd-phase-upload-config}
You can use this command to upload the kubeadm configuration to your cluster. Alternatively, you can use [kubeadm config](/docs/reference/setup-tools/kubeadm/kubeadm-config/).
## kubeadm init phase upload-certs {#cmd-phase-upload-certs}
Use the following phase to upload control-plane certificates to the cluster. By default the certs and encryption key expire after two hours.
## kubeadm init phase mark-control-plane {#cmd-phase-mark-control-plane}
Use the following phase to label and taint the node as a control plane node.
## kubeadm init phase bootstrap-token {#cmd-phase-bootstrap-token}
Use the following phase to configure bootstrap tokens.
## kubeadm init phase kubelet-finalize {#cmd-phase-kubelet-finalize-all}
Use the following phase to update settings relevant to the kubelet after TLS bootstrap. You can use the `all` subcommand to run all `kubelet-finalize` phases.
## kubeadm init phase bootstrap-token {#cmd-phase-bootstrap-token}
Use the following phase to configure bootstrap tokens.
## kubeadm init phase addon {#cmd-phase-addon}
You can install all the available addons with the `all` subcommand, or install them selectively.
## kubeadm init phase show-join-command {#cmd-phase-show-join-command}
Shows a command that can be used with `kubeadm join`.
For more details on each field in the `v1beta4` configuration you can navigate to our [API reference pages.](/docs/reference/config-api/kubeadm-config.v1beta4/)
##
* [kubeadm init](/docs/reference/setup-tools/kubeadm/kubeadm-init/) to bootstrap a Kubernetes control-plane node * [kubeadm join](/docs/reference/setup-tools/kubeadm/kubeadm-join/) to connect a node to the cluster * [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