var kubeadmJoinFailMsg … // NewKubeletStartPhase creates a kubeadm workflow phase that start kubelet on a node. func NewKubeletStartPhase() workflow.Phase { … } // NewKubeletWaitBootstrapPhase creates a kubeadm workflow phase that start kubelet on a node. func NewKubeletWaitBootstrapPhase() workflow.Phase { … } func getKubeletStartJoinData(c workflow.RunData) (*kubeadmapi.JoinConfiguration, *kubeadmapi.InitConfiguration, *clientcmdapi.Config, error) { … } // runKubeletStartJoinPhase executes the kubelet TLS bootstrap process. // This process is executed by the kubelet and completes with the node joining the cluster // with a dedicates set of credentials as required by the node authorizer func runKubeletStartJoinPhase(c workflow.RunData) (returnErr error) { … } // runKubeletWaitBootstrapPhase waits for the kubelet to finish its TLS bootstrap process. // This process is executed by the kubelet and completes with the node joining the cluster // with a dedicates set of credentials as required by the node authorizer. func runKubeletWaitBootstrapPhase(c workflow.RunData) (returnErr error) { … } // waitForTLSBootstrappedClient waits for the /etc/kubernetes/kubelet.conf file to be available func waitForTLSBootstrappedClient(timeout time.Duration) error { … }