diff --git a/.gitlab-ci/packet.yml b/.gitlab-ci/packet.yml
index 05a3feb030229232afb51f951f04345d109303af..b2b20b9adac2566027c5189d20309a2513de5e79 100644
--- a/.gitlab-ci/packet.yml
+++ b/.gitlab-ci/packet.yml
@@ -63,6 +63,11 @@ packet_ubuntu16-kube-router-sep:
   extends: .packet
   when: manual
 
+packet_ubuntu16-kube-router-svc-proxy:
+  stage: deploy-part2
+  extends: .packet
+  when: manual
+
 packet_debian10-containerd:
   stage: deploy-part2
   extends: .packet
diff --git a/roles/kubernetes/kubeadm/defaults/main.yml b/roles/kubernetes/kubeadm/defaults/main.yml
index 988cbc594adad49d2526bd0d4db8ec660a690772..9dc577edfda0f3a5268291afc7fbc46bbc335bfc 100644
--- a/roles/kubernetes/kubeadm/defaults/main.yml
+++ b/roles/kubernetes/kubeadm/defaults/main.yml
@@ -4,9 +4,6 @@
 discovery_timeout: 60s
 kubeadm_join_timeout: 120s
 
-# Optionally remove kube_proxy installed by kubeadm
-kube_proxy_remove: false
-
 # If non-empty, will use this string as identification instead of the actual hostname
 kube_override_hostname: >-
   {%- if cloud_provider is defined and cloud_provider in [ 'aws' ] -%}
diff --git a/roles/kubernetes/kubeadm/tasks/main.yml b/roles/kubernetes/kubeadm/tasks/main.yml
index 3b6fe89740bf503b2cd007cc05a84a685571bb9d..bf2c26879721984e3ab8b72666a02ca7978f415f 100644
--- a/roles/kubernetes/kubeadm/tasks/main.yml
+++ b/roles/kubernetes/kubeadm/tasks/main.yml
@@ -163,7 +163,6 @@
   delegate_to: "{{ groups['kube-master']|first }}"
   when:
     - kube_proxy_remove
-    - kubeadm_discovery_address != kube_apiserver_endpoint | replace("https://", "")
   # When scaling/adding nodes in the existing k8s cluster, kube-proxy wouldn't be created, as `kubeadm init` wouldn't run.
   ignore_errors: true
   tags:
diff --git a/roles/kubernetes/node/defaults/main.yml b/roles/kubernetes/node/defaults/main.yml
index a529327b1fb067492a8aba0d291f4681829d8dfc..1bd363acc0f4ded812a04bc4258c8b30aad4809d 100644
--- a/roles/kubernetes/node/defaults/main.yml
+++ b/roles/kubernetes/node/defaults/main.yml
@@ -22,9 +22,6 @@ kubelet_kubelet_cgroups: "/systemd/system.slice"
 ### fail with swap on (default true)
 kubelet_fail_swap_on: true
 
-# Optionally remove kube_proxy installed by kubeadm
-kube_proxy_remove: false
-
 # Reserve this space for kube resources
 kube_memory_reserved: 256M
 kube_cpu_reserved: 100m
diff --git a/roles/win_nodes/kubernetes_patch/defaults/main.yml b/roles/win_nodes/kubernetes_patch/defaults/main.yml
index ab979d4c8b2f7e4f78464b1075e657a1b5b05f73..ad59888307355b6392637c6f5e5a93d1abb0fef1 100644
--- a/roles/win_nodes/kubernetes_patch/defaults/main.yml
+++ b/roles/win_nodes/kubernetes_patch/defaults/main.yml
@@ -1,7 +1,5 @@
 ---
 
 kubernetes_user_manifests_path: "{{ ansible_env.HOME }}/kube-manifests"
-# Optionally remove kube_proxy installed by kubeadm
-kube_proxy_remove: false
 # nodeselector for kube-proxy ds is beta until 1.18
 kube_proxy_nodeselector: "{{ 'kubernetes.io/os' if kube_version is version('v1.18.0', '>=') else 'beta.kubernetes.io/os' }}"
diff --git a/tests/files/packet_ubuntu16-kube-router-svc-proxy.yml b/tests/files/packet_ubuntu16-kube-router-svc-proxy.yml
new file mode 100644
index 0000000000000000000000000000000000000000..8be6ef3f5371dce2c3b66a419dc047bd0b49dfa4
--- /dev/null
+++ b/tests/files/packet_ubuntu16-kube-router-svc-proxy.yml
@@ -0,0 +1,12 @@
+---
+# Instance settings
+cloud_image: ubuntu-1604
+mode: separate
+
+# Kubespray settings
+bootstrap_os: ubuntu
+kube_network_plugin: kube-router
+deploy_netchecker: true
+dns_min_replicas: 1
+
+kube_router_run_service_proxy: true