前面的安装文档中我们安装的版本为`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可视化监控