diff --git a/README.md b/README.md
index 22dde5d..4e16f3e 100644
--- a/README.md
+++ b/README.md
@@ -13,31 +13,33 @@
**[news]** 群里大佬上新一套免费[kubernetes架构师课程](https://www.toutiao.com/c/user/token/MS4wLjABAAAA0YFomuMNm87NNysXeUsQdI0Tt3gOgz8WG_0B3MzxsmI/?tab=article),强烈推荐!
-## 快速指南
-
-单机快速体验k8s集群的测试环境--[AllinOne部署](docs/setup/quickStart.md)
+推荐版本对照
- Kubernetes version |
- 1.19 |
- 1.20 |
- 1.21 |
- 1.22 |
+ Kubernetes version |
+ 1.19 |
+ 1.20 |
+ 1.21 |
+ 1.22 |
- kubeasz suggestion |
+ kubeasz version |
2.2.2 |
3.0.1 |
3.1.0 |
- 3.2.0 |
+ 3.1.1 |
+## 快速指南
+
+单机快速体验k8s集群的测试环境--[AllinOne部署](docs/setup/quickStart.md)
+
- 命令行工具 [ezctl介绍](docs/setup/ezctl.md)
## 安装指南
diff --git a/docs/release-notes/kubeasz-3.1.1.md b/docs/release-notes/kubeasz-3.1.1.md
new file mode 100644
index 0000000..31cd8d9
--- /dev/null
+++ b/docs/release-notes/kubeasz-3.1.1.md
@@ -0,0 +1,24 @@
+## kubeasz-3.1.1 (Autumnal Equinox)
+
+昼夜均,寒暑平,中秋祭月。kubeasz 3.1.1 小版本更新。
+
+### 正式通过k8s一致性认证
+
+kubeasz 用户可以确认集群各项功能符合预期,既符合k8s设计标准;
+
+- v1.20 [已完成](https://github.com/cncf/k8s-conformance/pull/1326)
+- v1.21 [已完成](https://github.com/cncf/k8s-conformance/pull/1398)
+- v1.22 [进行中]
+
+### 组件更新
+
+- k8s: v1.22.2, v1.21.5, v.1.20.11, v1.19.15
+- etcd: v3.5.0
+- docker: 20.10.8
+- calico: v3.19.2
+- coredns: 1.8.4
+- pause: 3.5
+
+### 其他
+
+- fix:增加/删除节点时ansible hosts文件更新错误
diff --git a/ezdown b/ezdown
index eb602a0..062a5d6 100755
--- a/ezdown
+++ b/ezdown
@@ -14,8 +14,8 @@ set -o errexit
# default settings, can be overridden by cmd line options, see usage
DOCKER_VER=20.10.8
-KUBEASZ_VER=3.2.0
-K8S_BIN_VER=v1.22.1
+KUBEASZ_VER=3.1.1
+K8S_BIN_VER=v1.22.2
EXT_BIN_VER=0.9.5
SYS_PKG_VER=0.4.1
HARBOR_VER=v2.1.3
diff --git a/roles/cluster-addon/tasks/dashboard.yml b/roles/cluster-addon/tasks/dashboard.yml
index 9e4cba3..9d1d42b 100644
--- a/roles/cluster-addon/tasks/dashboard.yml
+++ b/roles/cluster-addon/tasks/dashboard.yml
@@ -23,7 +23,12 @@
- "{{ metricsscraper_offline }}"
when: "item in image_info.stdout and CONTAINER_RUNTIME == 'containerd'"
-- name: 创建 dashboard部署
- shell: "{{ base_dir }}/bin/kubectl apply -f {{ base_dir }}/roles/cluster-addon/templates/dashboard"
+- name: 准备 dashboard的部署文件
+ template: src=dashboard/kubernetes-dashboard.yaml.j2 dest={{ cluster_dir }}/yml/kubernetes-dashboard.yaml
+ run_once: true
+ connection: local
+
+- name: 创建 dashboard部署
+ shell: "{{ base_dir }}/bin/kubectl apply -f {{ cluster_dir }}/yml/kubernetes-dashboard.yaml"
run_once: true
connection: local
diff --git a/roles/cluster-addon/tasks/metrics-server.yml b/roles/cluster-addon/tasks/metrics-server.yml
index 17c5a24..8cfae20 100644
--- a/roles/cluster-addon/tasks/metrics-server.yml
+++ b/roles/cluster-addon/tasks/metrics-server.yml
@@ -14,7 +14,13 @@
shell: "{{ bin_dir }}/ctr -n=k8s.io images import /opt/kube/images/{{ metricsserver_offline }}"
when: 'metricsserver_offline in image_info.stdout and CONTAINER_RUNTIME == "containerd"'
-- name: 创建 metrics-server部署
- shell: "{{ base_dir }}/bin/kubectl apply -f {{ base_dir }}/roles/cluster-addon/templates/metrics-server"
+- name: 准备 metrics-server的部署文件
+ template: src=metrics-server/components.yaml.j2 dest={{ cluster_dir }}/yml/metrics-server.yaml
+ run_once: true
+ connection: local
+
+
+- name: 创建 metrics-server部署
+ shell: "{{ base_dir }}/bin/kubectl apply -f {{ cluster_dir }}/yml/metrics-server.yaml"
run_once: true
connection: local
diff --git a/roles/cluster-addon/templates/dashboard/kubernetes-dashboard.yaml b/roles/cluster-addon/templates/dashboard/kubernetes-dashboard.yaml.j2
similarity index 100%
rename from roles/cluster-addon/templates/dashboard/kubernetes-dashboard.yaml
rename to roles/cluster-addon/templates/dashboard/kubernetes-dashboard.yaml.j2
diff --git a/roles/cluster-addon/templates/metrics-server/components.yaml b/roles/cluster-addon/templates/metrics-server/components.yaml.j2
similarity index 100%
rename from roles/cluster-addon/templates/metrics-server/components.yaml
rename to roles/cluster-addon/templates/metrics-server/components.yaml.j2