upgrade kubernetes

This commit is contained in:
huanqing.shao
2019-09-03 21:47:06 +08:00
parent 05e8c3f6fd
commit 6e94aeaba8
6 changed files with 146 additions and 7 deletions

View File

@ -2,17 +2,144 @@
description: 通过 kubeadm 升级 kubernetes 集群
---
# 升级 Kubernetes 集群
# Kubernetes 爆发严重漏洞:可能影响所有开源版本,请尽快升级
文档完善中
参考文档: kubernetes 官网文档 [kubeadm upgrade](https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-upgrade/)
参考文档Info Q 文章 [Kubernetes 爆发严重漏洞:可能影响所有开源版本](https://www.infoq.cn/article/2lxylPOCU4cf9MR2S5fp)
::: danger 严重漏洞
* CVE-2019-9512 Ping Flood攻击者向 HTTP/2 对等体 (peer) 发送连续 ping导致对等体建立内部响应队列。这可能消耗过多 CPU 和内存——这取决于该数据的队列多高效,从而可能导致拒绝服务攻击。
* CVE-2019-9514 Rest Flood攻击者打开多路数据流并在每路数据流上发送无效请求从而从对等体获得 RST_STREAM 帧数据流。这会消耗过多的内存、CPU 或 CPU 和内存——这取决于对等体如何将 RST_STREAM 帧列入队列,从而可能导致拒绝服务攻击。
:::
::: warning 请升级到补丁版本
Kubernetes 已经发布补丁以修复漏洞,建议所有管理员尽快升级到补丁版本,以帮助管理员应对漏洞:
* Kubernetes v1.15.3 - go1.12.9
* Kubernetes v1.14.6 - go1.12.9
* Kubernetes v1.13.10 - go1.11.13
:::
## 前提条件
* 您使用 kubeadm 安装了 kubernetes v1.15.0 / v1.15.1 / v1.15.2 集群
* 您想要将其升级到最新的版本 kubernetes v1.15.3
## 升级 kubeadm
::: tip
www.kuboard.cn 目前只能提供 kubernetes v1.15.0 / v1.15.1 / v1.15.2 到 kubernetes v1.15.3 的升级文档,其他版本的集群,请参考 kubernetes 官网文档 [kubeadm upgrade](https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-upgrade/)
:::
## 升级 kubeadm/kubelet/kubectl
在所有节点(包括 master、worker 节点)执行命令
``` sh
yum install kubeadm
# 在所有节点执行(包括 master 和 worker 节点)
yum install -y kubelet-1.15.3 kubeadm-1.15.3 kubectl-1.15.3
systemctl daemon-reload
systemctl restart kubelet
```
## 查看集群配置
在第一个 master 节点执行命令
``` sh
# 只在第一个 master 节点执行
kubeadm config view
```
输入结果如下所示:(根据集群配置不一样,您的结果可能不同)
``` yaml {15,17}
apiServer:
extraArgs:
authorization-mode: Node,RBAC
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controlPlaneEndpoint: apiserver.demo:6443
controllerManager: {}
dns:
type: CoreDNS
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: k8s.gcr.io
kind: ClusterConfiguration
kubernetesVersion: v1.15.0
networking:
dnsDomain: cluster.local
serviceSubnet: 10.96.0.0/12
scheduler: {}
```
## 创建升级用的配置文件
**创建文件 kubeadm-config-upgrade.yaml**
文件内容如下所示,根据前面 `kubeadm config view` 的执行结果,修改了如下字段:
* imageRepository 的值修改为registry.cn-hangzhou.aliyuncs.com/google_containers
* kubernetesVersion 的值修改为: v1.15.3
``` yaml {15,17}
apiServer:
extraArgs:
authorization-mode: Node,RBAC
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controlPlaneEndpoint: apiserver.demo:6443
controllerManager: {}
dns:
type: CoreDNS
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: v1.15.3
networking:
dnsDomain: cluster.local
serviceSubnet: 10.96.0.0/12
scheduler: {}
```
## 执行 kubeadm upgrade 命令
在第一个 master 节点上执行:
查看升级后的变化
``` sh
# 只在第一个 master 节点执行
kubeadm upgrade diff --config kubeadm-config-upgrade.yaml
```
执行升级 dry-run
``` sh
# 只在第一个 master 节点执行
kubeadm upgrade apply --config kubeadm-config-upgrade.yaml --dry-run
```
执行升级动作
``` sh
# 只在第一个 master 节点执行
kubeadm upgrade apply --config kubeadm-config-upgrade.yaml
```
## 检查升级结果
在第一个 master 节点执行
``` sh
# 只在第一个 master 节点执行
kubectl get nodes -o wide
kubectl version
kubeadm config view
```