diff --git a/inventory/sample/group_vars/k8s-cluster/k8s-cluster.yml b/inventory/sample/group_vars/k8s-cluster/k8s-cluster.yml
index 79e432511d6397654b7d037909a47d0b7053418d..bb9480c84753deca91e761d49248b34f44727a7b 100644
--- a/inventory/sample/group_vars/k8s-cluster/k8s-cluster.yml
+++ b/inventory/sample/group_vars/k8s-cluster/k8s-cluster.yml
@@ -21,6 +21,9 @@ kube_api_anonymous_auth: true
 ## Change this to use another Kubernetes version, e.g. a current beta release
 kube_version: v1.12.1
 
+# kubernetes image repo define
+kube_image_repo: "gcr.io/google-containers"
+
 # Where the binaries will be downloaded.
 # Note: ensure that you've enough disk space (about 1G)
 local_release_dir: "/tmp/releases"
diff --git a/roles/download/defaults/main.yml b/roles/download/defaults/main.yml
index 918f3eab69f08961431ac26db1f3dd1dc45ce554..4edf4d2296b1750d12762da50e611cb2c1085e54 100644
--- a/roles/download/defaults/main.yml
+++ b/roles/download/defaults/main.yml
@@ -39,6 +39,9 @@ kube_version: v1.12.1
 kubeadm_version: "{{ kube_version }}"
 etcd_version: v3.2.24
 
+# kubernetes image repo define
+kube_image_repo: "gcr.io/google-containers"
+
 # TODO(mattymo): Move calico versions to roles/network_plugins/calico/defaults
 # after migration to container download
 calico_version: "v3.1.3"
@@ -126,7 +129,7 @@ calico_policy_image_repo: "quay.io/calico/kube-controllers"
 calico_policy_image_tag: "{{ calico_policy_version }}"
 calico_rr_image_repo: "quay.io/calico/routereflector"
 calico_rr_image_tag: "{{ calico_rr_version }}"
-hyperkube_image_repo: "gcr.io/google-containers/hyperkube-{{ image_arch }}"
+hyperkube_image_repo: "{{ kube_image_repo }}/hyperkube-{{ image_arch }}"
 hyperkube_image_tag: "{{ kube_version }}"
 pod_infra_image_repo: "gcr.io/google_containers/pause-{{ image_arch }}"
 pod_infra_image_tag: "{{ pod_infra_version }}"
@@ -257,7 +260,7 @@ downloads:
       - k8s-cluster
 
   hyperkube:
-    enabled: true
+    enabled: "{{ kubeadm_enabled == false }}"
     container: true
     repo: "{{ hyperkube_image_repo }}"
     tag: "{{ hyperkube_image_tag }}"
diff --git a/roles/kubernetes/master/templates/kubeadm-config.v1alpha1.yaml.j2 b/roles/kubernetes/master/templates/kubeadm-config.v1alpha1.yaml.j2
index 425b29f27e67210ecf28b2d50e1b299fb58ce253..2a9b8582d3c6ed2ee113db74c9f180faa7a42b64 100644
--- a/roles/kubernetes/master/templates/kubeadm-config.v1alpha1.yaml.j2
+++ b/roles/kubernetes/master/templates/kubeadm-config.v1alpha1.yaml.j2
@@ -154,7 +154,8 @@ apiServerCertSANs:
   - {{ san }}
 {% endfor %}
 certificatesDir: {{ kube_config_dir }}/ssl
-unifiedControlPlaneImage: "{{ hyperkube_image_repo }}:{{ hyperkube_image_tag }}"
+imageRepository: {{ kube_image_repo }}
+unifiedControlPlaneImage: ""
 {% if kube_override_hostname|default('') %}
 nodeName: {{ kube_override_hostname }}
 {% endif %}
diff --git a/roles/kubernetes/master/templates/kubeadm-config.v1alpha2.yaml.j2 b/roles/kubernetes/master/templates/kubeadm-config.v1alpha2.yaml.j2
index 46f77dc1d4f91a7abc8bae99628e7915ffc497db..61e62a43ee5559bd9a70b48d7f7b5639faca5176 100644
--- a/roles/kubernetes/master/templates/kubeadm-config.v1alpha2.yaml.j2
+++ b/roles/kubernetes/master/templates/kubeadm-config.v1alpha2.yaml.j2
@@ -164,7 +164,8 @@ apiServerCertSANs:
   - {{ san }}
 {% endfor %}
 certificatesDir: {{ kube_config_dir }}/ssl
-unifiedControlPlaneImage: "{{ hyperkube_image_repo }}:{{ hyperkube_image_tag }}"
+imageRepository: {{ kube_image_repo }}
+unifiedControlPlaneImage: ""
 nodeRegistration:
 {% if kube_override_hostname|default('') %}
   name: {{ kube_override_hostname }}
diff --git a/roles/kubernetes/master/templates/kubeadm-config.v1alpha3.yaml.j2 b/roles/kubernetes/master/templates/kubeadm-config.v1alpha3.yaml.j2
index b2f5aee9a1d2dc36f152ba23951397eada776ce5..92990a137e6053b2cc984c946ead8621011a4004 100644
--- a/roles/kubernetes/master/templates/kubeadm-config.v1alpha3.yaml.j2
+++ b/roles/kubernetes/master/templates/kubeadm-config.v1alpha3.yaml.j2
@@ -142,7 +142,8 @@ apiServerCertSANs:
   - {{ san }}
 {% endfor %}
 certificatesDir: {{ kube_config_dir }}/ssl
-unifiedControlPlaneImage: "{{ hyperkube_image_repo }}:{{ hyperkube_image_tag }}"
+imageRepository: {{ kube_image_repo }}
+unifiedControlPlaneImage: ""
 ---
 apiVersion: kubeproxy.config.k8s.io/v1alpha1
 kind: KubeProxyConfiguration