---
vssueId: 92
description: Kubernete升级_使用kubeadm升级K8S集群到v1.15.5
meta:
  - name: keywords
    content: Kubernetes升级,K8S升级,升级Kuberentes1.15.5
---

# K8S从1.15.x升级到 1.15.5

<AdSenseTitle/>

参考文档： kubernetes 官网文档 [kubeadm upgrade](https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-upgrade/)


## 前提条件

* 您使用 kubeadm 安装了 kubernetes v1.15.0 / v1.15.1 / v1.15.2 / v1.15.3 / v1.15.4 集群
* 您想要将其升级到最新的版本 kubernetes v1.15.5

::: tip
www.kuboard.cn 是一款免费的基于 Kubernetes 的微服务管理界面，目前只能提供 kubernetes v1.15.0 / v1.15.1 / v1.15.2 / v1.15.3 到 kubernetes v1.15.5 的升级文档，其他版本的集群，请参考 kubernetes 官网文档 [kubeadm upgrade](https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-upgrade/)
:::

## 升级 kubeadm/kubelet/kubectl

在所有节点（包括 master、worker 节点）执行命令

``` sh
# 在所有节点执行（包括 master 和 worker 节点）
yum install -y kubelet-1.15.5 kubeadm-1.15.5 kubectl-1.15.5
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.5
``` 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.5
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
```

## 升级 worker 节点

针对所有的 worker 节点，执行

``` sh
# 只在 worker 节点执行（所有的 worker 节点）
kubeadm upgrade node
```

## 检查升级结果

在第一个 master 节点执行

``` sh
# 只在第一个 master 节点执行
kubectl get nodes -o wide
kubectl version
kubeadm config view
```
