diff --git a/roles/kubernetes/kubeadm/handler/main.yml b/roles/kubernetes/kubeadm/handler/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..2160900705f12a8a43e4b76dcbcc0d8d38da2e22
--- /dev/null
+++ b/roles/kubernetes/kubeadm/handler/main.yml
@@ -0,0 +1,5 @@
+---
+- name: restart kubelet
+  service:
+    name: kubelet
+    state: restarted
diff --git a/roles/kubernetes/kubeadm/tasks/main.yml b/roles/kubernetes/kubeadm/tasks/main.yml
index ad902b4f03258cca4c83c2ab3a7359fab40ab5b4..14a57710653403c34e552894eb2f712fc1e1125c 100644
--- a/roles/kubernetes/kubeadm/tasks/main.yml
+++ b/roles/kubernetes/kubeadm/tasks/main.yml
@@ -38,10 +38,11 @@
 - name: Update server field in kubelet kubeconfig
   replace:
     path: "{{ kube_config_dir }}/kubelet.conf"
-    regexp: '(\s+){{ first_kube_master }}:{{ kube_apiserver_port }}(\s+.*)?$'
+    regexp: '(\s+)https://{{ first_kube_master }}:{{ kube_apiserver_port }}(\s+.*)?$'
     replace: '\1{{ kube_apiserver_endpoint }}\2'
     backup: yes
   when: not is_kube_master and kubeadm_discovery_address != kube_apiserver_endpoint
+  notify: restart kubelet
 
 # FIXME(mattymo): Reconcile kubelet kubeconfig filename for both deploy modes
 - name: Symlink kubelet kubeconfig for calico/canal
diff --git a/scale.yml b/scale.yml
index 6a6096bb1fd7e11abd08d06e4e7e0ad3fe863ef1..0bd7e7d23515f0f309eaaed1324fccdc71320475 100644
--- a/scale.yml
+++ b/scale.yml
@@ -27,7 +27,9 @@
     - role: rkt
       tags: rkt
       when: "'rkt' in [etcd_deployment_type, kubelet_deployment_type, vault_deployment_type]"
+    - { role: download, tags: download, skip_downloads: false }
     - { role: etcd, tags: etcd, etcd_cluster_setup: false }
     - { role: vault, tags: vault, when: "cert_management == 'vault'"}
     - { role: kubernetes/node, tags: node }
+    - { role: kubernetes/kubeadm, tags: kubeadm, when: "kubeadm_enabled" }
     - { role: network_plugin, tags: network }