diff --git a/roles/kubernetes/control-plane/tasks/kubeadm-setup.yml b/roles/kubernetes/control-plane/tasks/kubeadm-setup.yml
index d9f7304efb2cd918d0f790ebde4c7bb4c48e13f7..3bfd8e27d2a83d5904fe91857bf7602dc8bf76f0 100644
--- a/roles/kubernetes/control-plane/tasks/kubeadm-setup.yml
+++ b/roles/kubernetes/control-plane/tasks/kubeadm-setup.yml
@@ -167,7 +167,7 @@
 
 - name: kubeadm | Initialize first master
   command: >-
-    timeout -k 300s 300s
+    timeout -k {{ kubeadm_init_timeout }} {{ kubeadm_init_timeout }}
     {{ bin_dir }}/kubeadm init
     --config={{ kube_config_dir }}/kubeadm-config.yaml
     --ignore-preflight-errors=all
diff --git a/roles/kubespray-defaults/defaults/main.yaml b/roles/kubespray-defaults/defaults/main.yaml
index 00b738803e09321f9cf77be6b60a84506e4b5206..6d91768bd61545150548362d117039dafc901cdf 100644
--- a/roles/kubespray-defaults/defaults/main.yaml
+++ b/roles/kubespray-defaults/defaults/main.yaml
@@ -23,6 +23,9 @@ kube_version_min_required: v1.23.0
 ## Kube Proxy mode One of ['iptables','ipvs']
 kube_proxy_mode: ipvs
 
+## The timeout for init first control-plane
+kubeadm_init_timeout: 300s
+
 ## List of kubeadm init phases that should be skipped during control plane setup
 ## By default 'addon/coredns' is skipped
 ## 'addon/kube-proxy' gets skipped for some network plugins