diff --git a/roles/kubernetes/master/templates/kubeadm-config.v1alpha2.yaml.j2 b/roles/kubernetes/master/templates/kubeadm-config.v1alpha2.yaml.j2
index 38053be6a2834bac22d5fbb30ec8fe4ebe252534..22422fb2e20b12e18d1fd729462d1f3300e6a9b9 100644
--- a/roles/kubernetes/master/templates/kubeadm-config.v1alpha2.yaml.j2
+++ b/roles/kubernetes/master/templates/kubeadm-config.v1alpha2.yaml.j2
@@ -28,7 +28,6 @@ cloudProvider: {{ cloud_provider }}
 kubeProxy:
   config:
     mode: {{ kube_proxy_mode }}
-    hostnameOverride: {{ inventory_hostname }}
 {% if kube_proxy_nodeport_addresses %}
     nodePortAddresses: [{{ kube_proxy_nodeport_addresses_cidr }}]
 {% endif %}
diff --git a/roles/kubernetes/master/templates/kubeadm-config.v1alpha3.yaml.j2 b/roles/kubernetes/master/templates/kubeadm-config.v1alpha3.yaml.j2
index 6e70227aafc4763a45e07921ea985b46b0863678..193f9cc3745bcddde7e0457477cb710b064f3529 100644
--- a/roles/kubernetes/master/templates/kubeadm-config.v1alpha3.yaml.j2
+++ b/roles/kubernetes/master/templates/kubeadm-config.v1alpha3.yaml.j2
@@ -180,7 +180,6 @@ conntrack:
  tcpEstablishedTimeout: 24h0m0s
 enableProfiling: false
 healthzBindAddress: 0.0.0.0:10256
-hostnameOverride: {{ inventory_hostname }}
 iptables:
  masqueradeAll: false
  masqueradeBit: 14
diff --git a/roles/win_nodes/kubernetes_patch/tasks/main.yml b/roles/win_nodes/kubernetes_patch/tasks/main.yml
index 5e08d88bf0bbb96d53049ecd6b795811acd118f7..ef4452c97ec0872dea8d548aaaf4854700e94f4f 100644
--- a/roles/win_nodes/kubernetes_patch/tasks/main.yml
+++ b/roles/win_nodes/kubernetes_patch/tasks/main.yml
@@ -7,6 +7,33 @@
     recurse: yes
   tags: [init, cni]
 
+- name: Apply kube-proxy hostnameOverride
+  block:
+    - name: Copy kube-proxy daemonset hostnameOverride patch
+      copy:
+        src: hostnameOverride-patch.json
+        dest: "{{ kubernetes_user_manifests_path }}/hostnameOverride-patch.json"
+
+    - name: Check current command for kube-proxy daemonset
+      shell: "{{bin_dir}}/kubectl get ds kube-proxy --namespace=kube-system -o jsonpath='{.spec.template.spec.containers[0].command}'"
+      register: current_kube_proxy_command
+
+    - name: Apply hostnameOverride patch for kube-proxy daemonset
+      shell: "{{bin_dir}}/kubectl patch ds kube-proxy --namespace=kube-system --type=strategic -p \"$(cat hostnameOverride-patch.json)\""
+      args:
+        chdir: "{{ kubernetes_user_manifests_path }}"
+      register: patch_kube_proxy_command
+      when: not current_kube_proxy_command.stdout is search("--hostname-override=${NODE_NAME}")
+
+    - debug: msg={{ patch_kube_proxy_command.stdout_lines }}
+      when: patch_kube_proxy_command is not skipped
+
+    - debug: msg={{ patch_kube_proxy_command.stderr_lines }}
+      when: patch_kube_proxy_command is not skipped
+  tags: init
+  when:
+    - not kube_proxy_remove
+
 - name: Apply kube-proxy nodeselector
   block:
     - name: Copy kube-proxy daemonset nodeselector patch