diff --git a/inventory/sample/group_vars/k8s_cluster/k8s-cluster.yml b/inventory/sample/group_vars/k8s_cluster/k8s-cluster.yml
index 064082246cb000a4ad086eb39ec4beb873de6be9..e1208fc546eaa2d783a85f1635fca84208046c56 100644
--- a/inventory/sample/group_vars/k8s_cluster/k8s-cluster.yml
+++ b/inventory/sample/group_vars/k8s_cluster/k8s-cluster.yml
@@ -211,6 +211,9 @@ k8s_image_pull_policy: IfNotPresent
 kubernetes_audit: false
 
 # dynamic kubelet configuration
+# Note: Feature DynamicKubeletConfig is deprecated in 1.22 and will not move to GA.
+# It is planned to be removed from Kubernetes in the version 1.23.
+# Please use alternative ways to update kubelet configuration.
 dynamic_kubelet_configuration: false
 
 # define kubelet config dir for dynamic kubelet
diff --git a/roles/kubernetes/node/tasks/kubelet.yml b/roles/kubernetes/node/tasks/kubelet.yml
index 6e0052db9897314ce8fdc582b3e903d77ab323f2..3dc747c8c39c519119af2a35afb4c5e01cd0f8a3 100644
--- a/roles/kubernetes/node/tasks/kubelet.yml
+++ b/roles/kubernetes/node/tasks/kubelet.yml
@@ -4,7 +4,9 @@
     path: "{{ dynamic_kubelet_configuration_dir }}"
     mode: 0600
     state: directory
-  when: dynamic_kubelet_configuration
+  when:
+    - dynamic_kubelet_configuration
+    - kube_version is version('v1.22.0', '<')
 
 - name: Set kubelet api version to v1beta1
   set_fact:
diff --git a/roles/kubernetes/node/templates/kubelet.env.v1beta1.j2 b/roles/kubernetes/node/templates/kubelet.env.v1beta1.j2
index 3ca1ffdd79f9148ad00cc083f3327b40858e197c..d190b1f3aabbf0eb742e508c46ff81eabe0629df 100644
--- a/roles/kubernetes/node/templates/kubelet.env.v1beta1.j2
+++ b/roles/kubernetes/node/templates/kubelet.env.v1beta1.j2
@@ -18,7 +18,7 @@ KUBELET_HOSTNAME="--hostname-override={{ kube_override_hostname }}"
 --container-runtime=remote \
 --container-runtime-endpoint=unix://{{ cri_socket }} \
 {% endif %}
-{% if dynamic_kubelet_configuration %}
+{% if dynamic_kubelet_configuration and kube_version is version('v1.22.0', '<') %}
 --dynamic-config-dir={{ dynamic_kubelet_configuration_dir }} \
 {% endif %}
 --runtime-cgroups={{ kubelet_runtime_cgroups }} \
diff --git a/roles/kubernetes/preinstall/tasks/0020-verify-settings.yml b/roles/kubernetes/preinstall/tasks/0020-verify-settings.yml
index 72d1fbf7315b76ac82fc478fa08805da9c7dbbed..3a059c00fec00c55d03f084bfee41814d336e4d1 100644
--- a/roles/kubernetes/preinstall/tasks/0020-verify-settings.yml
+++ b/roles/kubernetes/preinstall/tasks/0020-verify-settings.yml
@@ -114,6 +114,16 @@
   when:
     - kube_version is version('v1.21.0', '>=')
 
+- name: Stop when dynamic_kubelet_configuration enabled for kubernetes >= 1.22
+  assert:
+    that: not dynamic_kubelet_configuration
+    msg: >
+      Feature DynamicKubeletConfig is deprecated in 1.22 and will not move to GA.
+      It is planned to be removed from Kubernetes in the version 1.23.
+      Please use alternative ways to update kubelet configuration.
+  when:
+    - kube_version is version('v1.22.0', '>=')
+
 # This assertion will fail on the safe side: One can indeed schedule more pods
 # on a node than the CIDR-range has space for when additional pods use the host
 # network namespace. It is impossible to ascertain the number of such pods at
diff --git a/tests/files/packet_oracle7-canal-ha.yml b/tests/files/packet_oracle7-canal-ha.yml
index 993bcf3dd6ba4edd162a9a8d348ac3914b7f5f03..9369e1c4ad5fda087dfe0b1c8824f5216c959176 100644
--- a/tests/files/packet_oracle7-canal-ha.yml
+++ b/tests/files/packet_oracle7-canal-ha.yml
@@ -6,7 +6,6 @@ mode: ha
 # Kubespray settings
 calico_datastore: etcd
 kube_network_plugin: canal
-dynamic_kubelet_configuration: true
 deploy_netchecker: true
 dns_min_replicas: 1
 
diff --git a/tests/files/packet_ubuntu16-canal-kubeadm-ha.yml b/tests/files/packet_ubuntu16-canal-kubeadm-ha.yml
index 7b27b4baedc0dbc0b7bfd4db7ca34b8c1eb75692..2e359ee5bc21f54825cc8bc2a40a920073a4559c 100644
--- a/tests/files/packet_ubuntu16-canal-kubeadm-ha.yml
+++ b/tests/files/packet_ubuntu16-canal-kubeadm-ha.yml
@@ -6,6 +6,5 @@ mode: ha
 # Kubespray settings
 calico_datastore: etcd
 kube_network_plugin: canal
-dynamic_kubelet_configuration: true
 deploy_netchecker: true
 dns_min_replicas: 1