diff --git a/.vuepress/components/HomePage.vue b/.vuepress/components/HomePage.vue
index 85cf8e6..4ef592d 100644
--- a/.vuepress/components/HomePage.vue
+++ b/.vuepress/components/HomePage.vue
@@ -167,8 +167,7 @@ export default {
justify-content space-between
.feature
flex-grow 1
- flex-basis 30%
- max-width 32%
+ width 32%
height calc(240px + 2rem)
cursor pointer
h2
@@ -212,8 +211,10 @@ export default {
.features
flex-direction column
.feature
- max-width 100%
- padding 0 2.5rem
+ width calc(100%)
+ height calc(240px + 2rem)
+ margin-bottom 2rem
+
@media (max-width: $MQMobileNarrow)
.home
diff --git a/.vuepress/config.js b/.vuepress/config.js
index fad00bd..6e52eaf 100644
--- a/.vuepress/config.js
+++ b/.vuepress/config.js
@@ -171,6 +171,7 @@ module.exports = {
children: [
// ['install-k8s-upgrade', '升级Kubernetes集群'],
'upgrade-k8s/1.15.x-1.15.4',
+ 'upgrade-k8s/1.15.x-1.16.x',
]
},
{
diff --git a/install/install-k8s.md b/install/install-k8s.md
index b995199..62abe2e 100644
--- a/install/install-k8s.md
+++ b/install/install-k8s.md
@@ -167,8 +167,8 @@ export default {
安装后的拓扑图如下:下载拓扑图源文件 使用Axure RP 9.0可打开该文件
-
-
+
+
::: tip
diff --git a/install/upgrade-k8s/1.15.x-1.15.4.md b/install/upgrade-k8s/1.15.x-1.15.4.md
index bd00a6f..97a72e3 100644
--- a/install/upgrade-k8s/1.15.x-1.15.4.md
+++ b/install/upgrade-k8s/1.15.x-1.15.4.md
@@ -6,7 +6,7 @@ meta:
content: Kubernetes升级,K8S升级,升级Kuberentes1.15.4
---
-# Kubernetes从1.15.x升级到 1.15.4
+# K8S从1.15.x升级到 1.15.4
参考文档: kubernetes 官网文档 [kubeadm upgrade](https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-upgrade/)
diff --git a/install/upgrade-k8s/1.15.x-1.16.x.md b/install/upgrade-k8s/1.15.x-1.16.x.md
new file mode 100644
index 0000000..e5fff59
--- /dev/null
+++ b/install/upgrade-k8s/1.15.x-1.16.x.md
@@ -0,0 +1,258 @@
+---
+vssueId: 107
+description: Kubernetes升级1.16.x。本文描述了如何从 kubernetes v1.15.x(或1.16.x)升级到 Kubernetes v1.16.y,前提是,您的 Kubernetes 集群是使用 kubeadm 安装的。
+meta:
+ - name: keywords
+ content: Kubernetes升级,K8S升级,升级Kuberentes1.16.x,Kubernetes升级到1.16
+---
+
+# K8S从1.15.x(1.16.x)升级到 1.16.x
+
+参考文档: kubernetes 官网文档 [kubeadm upgrade](https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-upgrade/)
+
+本文描述了如何从 kubernetes v1.15.x(或1.16.x)升级到 Kubernetes v1.16.y,前提是,您的 Kubernetes 集群是使用 kubeadm 安装的。
+
+升级的高阶过程如下所示:
+
+1. 升级主 master 节点
+2. 升级从 master 节点
+3. 升级 worker 节点
+
+## 预备工作
+
+* 请确保您的 Kubernetes 集群是通过 kubeadm 安装的,且版本号不低于 1.15.0
+* swap 已禁用(如果您参考 www.kuboard.cn 上的文档安装,swap已禁用)
+* 集群使用静态Pod(apiserver、etcd)或者使用外部 etcd(如果您参考 www.kuboard.cn 上的文档安装,则您的集群符合此条件)
+* 确保您备份了重要的信息,例如应用程序的数据库,部署配置信息等。`kubeadm upgrade` 在升级过程中并不涉及到部署在 Kubernetes 上应用程序,而是只升级 Kubernetes 的内部组件,尽管如此,备份始终是推荐的
+
+::: tip
+* 升级后,所有的容器都会重启,因为升级改变了容器定义的 hash 值
+* 只能从一个小版本升级到下一个小版本,或者在小版本内部升级补丁版本,不能跳过小版本升级。例如,您可以从 1.15.0 升级到 1.15.4,也可以从 1.15.0 升级到 1.16.1,但是您不能从 1.14.9 升级到 1.16.0
+:::
+
+## 确定当前版本
+
+在 CentOS 上执行:
+``` sh
+yum list --showduplicates kubeadm --disableexcludes=kubernetes
+# 在列表中找到最新的 1.16 版本号
+# 该版本号格式为 1.16.x-0,其中 x 是最新的补丁
+```
+
+## 升级 master 节点
+
+### 升级第一个 master 节点
+
+假设所有命令都以 root 身份执行
+
+* 在第一个 master 节点上执行如下命令,升级 kubeadm
+ ``` sh
+ # 将 1.16.x-0 中的 x 替换为最新的补丁版本
+ yum install -y kubeadm-1.16.x-0 --disableexcludes=kubernetes
+ ```
+ 执行命令 `kubeadm version`,以验证升级结果
+
+* 在第一个 master 节点上执行命令 `kubeadm upgrade plan`,输出结果如下所示:
+
+ ``` {9,24,25,26,27,28,29}
+ [upgrade/config] Making sure the configuration is correct:
+ [upgrade/config] Reading configuration from the cluster...
+ [upgrade/config] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
+ [preflight] Running pre-flight checks.
+ [upgrade] Making sure the cluster is healthy:
+ [upgrade] Fetching available versions to upgrade to
+ [upgrade/versions] Cluster version: v1.15.4
+ [upgrade/versions] kubeadm version: v1.16.0
+ W1002 21:49:38.572516 14315 version.go:101] could not fetch a Kubernetes version from the internet: unable to get URL "https://dl.k8s.io/release/stable.txt": Get https://dl.k8s.io/release/stable.txt: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
+ W1002 21:49:38.572555 14315 version.go:102] falling back to the local client version: v1.16.0
+ [upgrade/versions] Latest stable version: v1.16.0
+ W1002 21:49:48.655494 14315 version.go:101] could not fetch a Kubernetes version from the internet: unable to get URL "https://dl.k8s.io/release/stable-1.15.txt": Get https://dl.k8s.io/release/stable-1.15.txt: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
+ W1002 21:49:48.655532 14315 version.go:102] falling back to the local client version: v1.16.0
+ [upgrade/versions] Latest version in the v1.15 series: v1.16.0
+
+ Components that must be upgraded manually after you have upgraded the control plane with 'kubeadm upgrade apply':
+ COMPONENT CURRENT AVAILABLE
+ Kubelet 1 x v1.15.3 v1.16.0
+ 3 x v1.15.4 v1.16.0
+
+ Upgrade to the latest version in the v1.15 series:
+
+ COMPONENT CURRENT AVAILABLE
+ API Server v1.15.4 v1.16.0
+ Controller Manager v1.15.4 v1.16.0
+ Scheduler v1.15.4 v1.16.0
+ Kube Proxy v1.15.4 v1.16.0
+ CoreDNS 1.3.1 1.6.2
+ Etcd 3.3.10 3.3.15-0
+
+ You can now apply the upgrade by executing the following command:
+
+ kubeadm upgrade apply v1.16.0
+
+ _____________________________________________________________________
+ ```
+
+ ::: tip
+ * 请忽略错误 `could not fetch a Kubernetes version from the internet: unable to get URL "https://dl.k8s.io/release/stable.txt"`,在不能获得最新 kubernetes 版本列表的情况下,将使用 kubeadm 的版本作为升级的目标版本(在前面的步骤中,已经从 yum 仓库找到了最新 kubeadm 的版本)
+ :::
+
+* 执行如下命令以升级:
+
+ ``` sh
+ # 替换 x 为最新补丁的版本号
+ kubeadm upgrade apply v1.16.x
+ ```
+ ::: tip
+ * `kubeadm upgrade` 同时会自动更新节点上的证书。如果不想更新证书,请使用参数 `--certificate-renewal=false`
+ :::
+
+ 输出信息如下所示:
+ ``` {11}
+ [upgrade/config] Making sure the configuration is correct:
+ [upgrade/config] Reading configuration from the cluster...
+ [upgrade/config] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
+ [preflight] Running pre-flight checks.
+ [upgrade] Making sure the cluster is healthy:
+ [upgrade/version] You have chosen to change the cluster version to "v1.16.0"
+ [upgrade/versions] Cluster version: v1.15.4
+ [upgrade/versions] kubeadm version: v1.16.0
+ [upgrade/confirm] Are you sure you want to proceed with the upgrade? [y/N]: y
+ [upgrade/prepull] Will prepull images for components [kube-apiserver kube-controller-manager kube-scheduler etcd]
+ ...省略部分内容以节省篇幅...
+ [bootstrap-token] configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token
+ [bootstrap-token] configured RBAC rules to allow certificate rotation for all node client certificates in the cluster
+ [addons] Applied essential addon: CoreDNS
+ [addons] Applied essential addon: kube-proxy
+
+ [upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.16.0". Enjoy!
+
+ [upgrade/kubelet] Now that your control plane is upgraded, please proceed with upgrading your kubelets if you haven't already done so.
+ ```
+
+* 手动升级CNI插件
+
+### 升级其他 master 节点
+
+* 在其他 master 节点上执行命令
+
+ ``` sh
+ kubeadm upgrade node
+ ```
+ ::: tip
+ * 不需要执行 `kubeadm upgrade plan`
+ * 第一个 master 节点上执行的是 `kubeadm upgrade apply v1.16.x`,此时执行的是 `kubeadm upgrade node`
+ :::
+
+### 升级 kbuelet 和 kubectl
+
+* 在所有的 master 节点上执行如下命令以升级 kubelet 和 kubectl
+
+ ``` sh
+ # 替换 x 为最新补丁的版本号
+ yum install -y kubelet-1.16.x-0 kubectl-1.16.x-0 --disableexcludes=kubernetes
+ ```
+
+* 执行如下命令,以重启 kubelet
+
+ ``` sh
+ systemctl daemon-reload
+ systemctl restart kubelet
+ ```
+
+## 升级 worker 节点
+
+建议逐个升级 worker 节点,或者同一时间点只升级少量的 worker 节点,以避免集群出现资源紧缺的状况。
+
+### 升级 kubeadm
+
+* 在所有的 worker 节点上执行如下命令,升级 kubeadm
+ ``` sh
+ # 将 1.16.x-0 中的 x 替换为最新的补丁版本
+ yum install -y kubeadm-1.16.x-0 --disableexcludes=kubernetes
+ ```
+
+### 排空(drain)节点
+
+* 执行以下命令,将节点标记为 `不可调度的` 并驱逐节点上所有的 Pod,
+
+ ``` sh
+ kubectl drain $NODE --ignore-daemonsets
+ ```
+
+ 输出结果如下所示:
+
+ ```
+ node/ip-172-31-85-18 cordoned
+ WARNING: ignoring DaemonSet-managed Pods: kube-system/kube-proxy-dj7d7, kube-system/weave-net-z65qx
+ node/ip-172-31-85-18 drained
+ ```
+
+### 升级 kubelet 的配置
+
+* 执行命令
+ ``` sh
+ kubeadm upgrade node
+ ```
+
+### 升级 kubelet 和 kubectl
+
+* 在所有的 worker 节点执行命令
+
+ ``` sh
+ # 替换 x 为最新补丁的版本号
+ yum install -y kubelet-1.16.x-0 kubectl-1.16.x-0 --disableexcludes=kubernetes
+ ```
+
+* 执行如下命令,以重启 kubelet
+
+ ``` sh
+ systemctl daemon-reload
+ systemctl restart kubelet
+ ```
+
+### 恢复(uncordon)节点
+
+* 执行如下命令,使节点重新接受调度并投入使用:
+
+ ``` sh
+ kubectl uncordon $NODE
+ ```
+
+## 检查集群的状态
+
+在所有节点的 kubelet 本升级以后,执行如下命令以验证所有节点都可用:
+
+``` sh
+kubectl get nodes -o wide
+```
+
+`STATUS` 字段应该为 `Ready`,版本号也应该显示目标版本号。
+
+## 从错误状态中恢复
+
+如果 `kubeadm upgrade` 执行过程中出现错误且未曾回滚,例如执行过程中意外关机,您可以再次执行 `kubeadm upgrade`。该命令是 [幂等](glossary/idempotent.html) 的,并将最终保证您能够达到最终期望的升级结果。
+
+从失败状态中恢复时,请执行 `kubeadm upgrade --force` 命令,注意要使用集群的当前版本号。
+
+## 工作过程
+
+在第一个 master 节点上,`kubeadm upgrade apply` 执行了如下操作:
+* 检查集群是否处于可升级的状态:
+ * API Server 可以调用
+ * 所有的节点处于 `Ready` 装填
+ * master 节点处于 `healthy` 状态
+* 检验是否可以从当前版本升级到目标版本
+* 确保 master 节点所需要的镜像可以被抓取到节点上
+* 升级 master 节点的组件,(如果碰到问题,则回滚)
+* 应用新的 `kube-dns` 和 `kube-proxy` 的 manifests 文件,并确保需要的 RBAC 规则被创建
+* 如果证书在 180 天内将要过期,则为 API Server 创建新的证书文件,并备份旧的文件
+
+在其他 master 节点上,`kubeadm upgrade node` 执行了如下操作:
+* 从集群中抓取 kubeadm 的配置信息 `ClusterConfiguration`
+* 备份 kube-apiserver 的证书
+* 升级 master 节点上静态组件的 manifest 信息
+* 升级 master 节点上 kubelet 的配置信息
+
+在所有的 worker 节点上,`kubeadm upgrade node` 执行了如下操作:
+* 从集群中抓取 kubeadm 的配置信息 `ClusterConfiguration`
+* 升级 worker 节点上 kubelet 的配置信息
diff --git a/learning/k8s-intermediate/persistent/volume.md b/learning/k8s-intermediate/persistent/volume.md
index 0b87cbd..f585d48 100644
--- a/learning/k8s-intermediate/persistent/volume.md
+++ b/learning/k8s-intermediate/persistent/volume.md
@@ -165,7 +165,7 @@ Kubernetes 目前支持多达 28 种数据卷类型(其中大部分特定于
* 使用 ConfigMap 中的某一 key 作为文件名,对应 value 作为文件内容,替换 nginx 容器中的 /etc/nginx/conf.d/default.conf 配置文件。请参考 [使用 ConfigMap 配置您的应用程序](/learning/k8s-intermediate/config/config-map.html#configmap-数据卷)
-### secret
+### secret
* **描述**
diff --git a/overview/README.md b/overview/README.md
index 23b5d01..8113593 100644
--- a/overview/README.md
+++ b/overview/README.md
@@ -20,7 +20,7 @@ meta:
align-items: flex-start;
align-content: stretch;
justify-content: space-between;">
-
+
Kubernetes安装文档
@@ -35,7 +35,7 @@ meta:
-
+
Kubernetes免费教程
@@ -47,7 +47,7 @@ meta:
-
+
Kubernetes+SpringCloud实战
diff --git a/support/change-log/change-log-on-the-way.md b/support/change-log/change-log-on-the-way.md
index 02fc7b4..9e2843a 100644
--- a/support/change-log/change-log-on-the-way.md
+++ b/support/change-log/change-log-on-the-way.md
@@ -1,21 +1,5 @@
Kuboard v1.0.x 的更新说明
-## v1.0.4-beta.1
-
-**发布日期**
-
-2019年9月2x日
-
-**新特性**
-
-* 工作负载编辑器 --> 容器组 --> terminationGracePeriodSeconds
-* 工作负载编辑器 --> 容器组 --> 容器 --> 挂载点 --> 增加 mountPropagation 选项
-
-**优化**
-
-
-**BUG 修复**
-* Secret 表单验证
diff --git a/support/change-log/v1.0.x.md b/support/change-log/v1.0.x.md
index b18c33b..ee56d2d 100644
--- a/support/change-log/v1.0.x.md
+++ b/support/change-log/v1.0.x.md
@@ -7,6 +7,24 @@ description: 本文描述了Kuboard_v1.0.x的版本变更说明
Kuboard v1.0.x 的更新说明
+## v1.0.4-beta.1
+
+**发布日期**
+
+2019年10月2日
+
+**新特性**
+
+* 工作负载编辑器 --> 容器组 --> terminationGracePeriodSeconds
+* 工作负载编辑器 --> 容器组 --> 容器 --> 挂载点 --> 增加 mountPropagation 选项
+* 工作负载编辑器 --> 数据卷 --> 增加对 secret 类型数据卷的支持
+
+**BUG 修复**
+* Secret 表单验证
+* 导入工作负载时,调整节点端口字段应为数字类型
+* 工作负载编辑器 --> 容器组 --> 容器 --> 资源限制中,如果只填写内存不填写CPU,能够保存保存成功,但是重新进入编辑界面时失败
+
+
## v1.0.3
**发布日期**