--- title: kubeadm join phase weight: 90 --- In v1.14.0, kubeadm introduces the `kubeadm join phase` command with the aim of making kubeadm more modular. This modularity enables you to invoke atomic sub-steps of the join process. Hence, you can let kubeadm do some parts and fill in yourself where you need customizations. `kubeadm join phase` is consistent with the [kubeadm join workflow](/docs/reference/setup-tools/kubeadm/kubeadm-join/#join-workflow), and behind the scene both use the same code. ## kubeadm join phase {#cmd-join-phase} {{< tabs name="tab-phase" >}} {{< tab name="phase" include="generated/kubeadm_join_phase.md" />}} {{< /tabs >}} ## kubeadm join phase preflight {#cmd-join-phase-preflight} Using this phase you can execute preflight checks on a joining node. {{< tabs name="tab-preflight" >}} {{< tab name="preflight" include="generated/kubeadm_join_phase_preflight.md" />}} {{< /tabs >}} ## kubeadm join phase control-plane-prepare {#cmd-join-phase-control-plane-prepare} Using this phase you can prepare a node for serving a control-plane. {{< tabs name="tab-control-plane-prepare" >}} {{< tab name="control-plane-prepare" include="generated/kubeadm_join_phase_control-plane-prepare.md" />}} {{< tab name="all" include="generated/kubeadm_join_phase_control-plane-prepare_all.md" />}} {{< tab name="download-certs" include="generated/kubeadm_join_phase_control-plane-prepare_download-certs.md" />}} {{< tab name="certs" include="generated/kubeadm_join_phase_control-plane-prepare_certs.md" />}} {{< tab name="kubeconfig" include="generated/kubeadm_join_phase_control-plane-prepare_kubeconfig.md" />}} {{< tab name="control-plane" include="generated/kubeadm_join_phase_control-plane-prepare_control-plane.md" />}} {{< /tabs >}} ## kubeadm join phase kubelet-start {#cmd-join-phase-kubelet-start} Using this phase you can write the kubelet settings, certificates and (re)start the kubelet. {{< tabs name="tab-kubelet-start" >}} {{< tab name="kubelet-start" include="generated/kubeadm_join_phase_kubelet-start.md" />}} {{< /tabs >}} ## kubeadm join phase control-plane-join {#cmd-join-phase-control-plane-join} Using this phase you can join a node as a control-plane instance. {{< tabs name="tab-control-plane-join" >}} {{< tab name="control-plane-join" include="generated/kubeadm_join_phase_control-plane-join.md" />}} {{< tab name="all" include="generated/kubeadm_join_phase_control-plane-join_all.md" />}} {{< tab name="etcd" include="generated/kubeadm_join_phase_control-plane-join_etcd.md" />}} {{< tab name="update-status" include="generated/kubeadm_join_phase_control-plane-join_update-status.md" />}} {{< tab name="mark-control-plane" include="generated/kubeadm_join_phase_control-plane-join_mark-control-plane.md" />}} {{< /tabs >}} ## What's next * [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