前面的安装文档中我们安装的版本为`1.13.5`,但是最新的版本为`1.14.2`想要升级为最新的版本又不影响业务的访问。
## 检查群集
检查群集可用于升级的版本和当前群集是否可升级
```
kubeadm upgrade plan
```
这里需要先升级`kubeadm` `kubelet` `kubectl`
## 升级kubelet kubeadm kubectl
```
yum install -y kubelet kubeadm kubectl
```
> 其他节点也需要执行
## 升级群集组件
过程会稍微有点慢,因需要下载新版本的镜像
```
kubeadm upgrade apply v1.14.2
```
其他master节点
```
kubeadm upgrade node experimental-control-plane
```
## 升级flannel (可选)
这个根据实际情况升级,如不是使用的`flannel`请参考官网
```
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
```
## 验证群集升级
```
$ kubectl get nodes
NAME     STATUS   ROLES    AGE   VERSION
k8s-11   Ready    master   29d   v1.13.5
k8s-12   Ready    master   29d   v1.13.5
k8s-13   Ready    master   29d   v1.13.5
k8s-14   Ready    <none>   29d   v1.13.5
k8s-15   Ready    <none>   29d   v1.13.5
```
```
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.2", GitCommit:"66049e3b21efe110454d67df4fa62b08ea79a19b", GitTreeState:"clean", BuildDate:"2019-05-16T16:23:09Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.5", GitCommit:"66049e3b21efe110454d67df4fa62b08ea79a19b", GitTreeState:"clean", BuildDate:"2019-05-16T16:14:56Z", GoVersion:"go1.11.2", Compiler:"gc", Platform:"linux/amd64"}
```
这里发现`version`还是`1.13.5`, kubectl的server还是`1.13.5`,只需要重启一下kubelet即可
```
systemctl daemon-reload;systemctl restart kubelet.service
```
> 所有节点都需要执行
```
$ kubeadm upgrade plan
[preflight] Running pre-flight checks.
[upgrade] Making sure the cluster is healthy:
[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'
[upgrade] Fetching available versions to upgrade to
[upgrade/versions] Cluster version: v1.14.2
[upgrade/versions] kubeadm version: v1.14.2
I0522 10:21:11.020699    6597 version.go:96] 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)
I0522 10:21:11.020790    6597 version.go:97] falling back to the local client version: v1.14.2
[upgrade/versions] Latest stable version: v1.14.2
I0522 10:21:21.096887    6597 version.go:96] could not fetch a Kubernetes version from the internet: unable to get URL "https://dl.k8s.io/release/stable-1.14.txt": Get https://dl.k8s.io/release/stable-1.14.txt: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
I0522 10:21:21.097013    6597 version.go:97] falling back to the local client version: v1.14.2
[upgrade/versions] Latest version in the v1.14 series: v1.14.2
Awesome, you're up-to-date! Enjoy!
```
最后发现群集已经为最新版本
## 更新群集证书
- 更新所有证书
```
kubeadm alpha certs renew all --config=kubeadm-config.yaml
```
- 更新其他单个证书请参考官方文档[https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-alpha/#cmd-certs-renew](https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-alpha/#cmd-certs-renew)
--- 
参考文档:[https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade-1-14/#](https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade-1-14/#)
                    
        - kubernetes基础
 - 安装kubernetes
 - kubeadm平滑升级群集
 - Taint和Toleration
 - 使用HostAliases向Pod /etc/hosts 文件添加条目
 - ConfigMap
 - 插件
 - 支持外部dns
 - 安装helm
 - HPA
 - 存储
 - 本地存储
 - 网络存储
 - Secret
 - ConfigMap
 - QA
 - k8s使用时需要注意的坑点
 - 容器中的JVM资源该如何被安全的限制
 - 项目实践
 - eureka集群
 - Traefik ingress服务发现与负载均衡
 - etcd数据备份与恢复
 - deployment滚动升级与回滚
 - 监控
 - prometheus operator初体验
 - prometheus-operator监控
 - metrics-server监控kubernetes资源
 - weave scope可视化监控
 
