diff --git a/README.md b/README.md
index 5fb7d7b7..af809997 100644
--- a/README.md
+++ b/README.md
@@ -35,12 +35,12 @@ There are three scenarios to use KubeKey.
### Kubernetes Versions
-* **v1.15**: *v1.15.12*
-* **v1.16**: *v1.16.13*
* **v1.17**: *v1.17.9*
* **v1.18**: *v1.18.6*
* **v1.19**: *v1.19.8* (default)
-* **v1.20**: *v1.20.4*
+* **v1.20**: *v1.20.6*
+* **v1.21**: *v1.21.4*
+* **v1.22**: *v1.22.1*
> Looking for more supported versions [Click here](./docs/kubernetes-versions.md)
## Requirements and Recommendations
diff --git a/README_zh-CN.md b/README_zh-CN.md
index 196d7171..f8586a9c 100644
--- a/README_zh-CN.md
+++ b/README_zh-CN.md
@@ -35,12 +35,12 @@
### Kubernetes 版本
-* **v1.15**: *v1.15.12*
-* **v1.16**: *v1.16.13*
* **v1.17**: *v1.17.9*
* **v1.18**: *v1.18.6*
* **v1.19**: *v1.19.8* (default)
-* **v1.20**: *v1.20.4*
+* **v1.20**: *v1.20.6*
+* **v1.21**: *v1.21.4*
+* **v1.22**: *v1.22.1*
> 查看更多支持的版本[点击这里](./docs/kubernetes-versions.md)
## 要求和建议
diff --git a/apis/kubekey/v1alpha1/default.go b/apis/kubekey/v1alpha1/default.go
index 2a82e332..a995711a 100644
--- a/apis/kubekey/v1alpha1/default.go
+++ b/apis/kubekey/v1alpha1/default.go
@@ -216,6 +216,7 @@ func SetDefaultNetworkCfg(cfg *ClusterSpec) NetworkConfig {
}
func SetDefaultClusterCfg(cfg *ClusterSpec) Kubernetes {
+ cfg.Kubernetes.Nodelocaldns = true
if cfg.Kubernetes.Version == "" {
cfg.Kubernetes.Version = DefaultKubeVersion
} else {
diff --git a/docs/kubernetes-versions.md b/docs/kubernetes-versions.md
index 3bddebff..596179b1 100644
--- a/docs/kubernetes-versions.md
+++ b/docs/kubernetes-versions.md
@@ -22,6 +22,8 @@
| v1.19.9 | :white_check_mark: |
| v1.20.4 | :white_check_mark: |
| v1.20.6 | :white_check_mark: |
+| v1.21.4 | :white_check_mark: |
+| v1.22.1 | :white_check_mark: |
## Kubernetes Versions(arm64)
| Version | Supported |
@@ -42,3 +44,5 @@
| v1.19.9 | :white_check_mark: |
| v1.20.4 | :white_check_mark: |
| v1.20.6 | :white_check_mark: |
+| v1.21.4 | :white_check_mark: |
+| v1.22.1 | :white_check_mark: |
diff --git a/pkg/util/executor/executor.go b/pkg/util/executor/executor.go
index 0f2cca07..393c5283 100644
--- a/pkg/util/executor/executor.go
+++ b/pkg/util/executor/executor.go
@@ -91,6 +91,7 @@ func (executor *Executor) CreateManager() (*manager.Manager, error) {
mgr.ClientSet = executor.ClientSet
mgr.DownloadCommand = executor.DownloadCommand
mgr.EtcdContainer = false
+ // Description: Since docker is no the default container runtime of kubernetes, kubekey no longer uses docker to start etcd.
//if (executor.Cluster.Kubernetes.ContainerManager == "" || executor.Cluster.Kubernetes.ContainerManager == "docker") && executor.Cluster.Kubernetes.Type != "k3s" {
// mgr.EtcdContainer = true
//}