内容简介:Kubernetes 1.12已经发布。我们线上的版本升级都是按照比官方低一个版本的节奏。 因此可以开始考虑将团队线上环境的Kubernetes集群从1.10升级到1.11了。 本文记录了在测试环境中的演练过程。当前Kubernetes 1.11的小版本是1.11.3。 在升级之前一定要多读几遍官方的升级须知其中针对我们对Kubernetes的使用情况,有几个需要我们注意的地方:
Kubernetes 1.12已经发布。我们线上的版本升级都是按照比官方低一个版本的节奏。 因此可以开始考虑将团队线上环境的Kubernetes集群从1.10升级到1.11了。 本文记录了在测试环境中的演练过程。
1.准备
当前Kubernetes 1.11的小版本是1.11.3。 在升级之前一定要多读几遍官方的升级须知 Kubernetes 1.11 - Action Required Before Upgrading 。
其中针对我们对Kubernetes的使用情况,有几个需要我们注意的地方:
- 基于IPVS的负载均衡进入GA,当不满足IPVS的条件时,kube-proxy会使用iptables Proxier。(本次升级演练将不开启IPVS。)
- 可使用CoreDNS作为Kubernetes的DNS插件进入GA。(本次升级演练将不做从kube-dns到CoreDNS的切换)
- heapster已经废弃,推荐使用metrics-server
Kubernetes 1.11所需的外部依赖和一些组件的版本:
- etcd 3.2.18
- 以下 docker 版本在Kubernetes 1.11(和Kubernetes 1.10一样)上进行过验证:docker 1.11.2, 1.13.1, 17.03.x (支持的最小docker版本是1.11.2)
- CNI 0.6.0和Kubernetes 1.10依赖的版本相同
- CSI 0.3.0
- dashboard 1.8.3
- kube-dns 1.14.10
- flannel 0.10.0
- kube-state-metrics 1.4.0
- metrics-server 0.3.1
2.使用ansible升级Kubernetes
2.1 master节点
我们的集群有3个master节点,在使用ansible升级master节点( kube-apiserver
, kube-scheduler
, kube-controller-manager
)时,通过修改ansible role的inventory文件,只先升级第一个master节点,当测试没有问题后再升级剩余两个master节点。
master节点升级完成后, kube-controller-manager
启动后出现访问API Server权限问题:
error retrieving resource lock kube-system/kube-controller-manager: endpoints "kube-controller-manager" is forbidden: User "system:kube-controller-manager" cannot get endpoints in the namespace "kube-system"
应该是新版本需要 system:kube-controller-manager
这个ClusterRole需要更多的权限,因为这个ClusterRole是系统默认的。 所以这里怀疑某处除了问题, Annotations: rbac.authorization.kubernetes.io/autoupdate=true
表明每次重启API Server时是可以被 Auto-reconciliation
,详见这里 Default Roles and Role Bindings Auto-reconciliation
。 所以尝试删掉它,重启apiserver让其重新创建新的,之后重启kube-controller-manager问题解决。
kubectl delete clusterrole system:kube-controller-manager systemctl restart kube-apiserver kubectl get clusterrole | grep controller-manager system:kube-controller-manager 1m systemctl restart kube-controller-manager kubectl describe clusterrole system:kube-controller-manager Name: system:kube-controller-manager Labels: kubernetes.io/bootstrapping=rbac-defaults Annotations: rbac.authorization.kubernetes.io/autoupdate=true PolicyRule: Resources Non-Resource URLs Resource Names Verbs --------- ----------------- -------------- ----- secrets [] [] [create delete get update] endpoints [] [] [create get update] serviceaccounts [] [] [create get update] events [] [] [create patch update] tokenreviews.authentication.k8s.io [] [] [create] namespaces [] [] [get] *.* [] [] [list watch]
2.2 node节点
同样也是先选择一个node节点升级做测试,如果这个节点上有业务Pod正在运行,可以先将这个节点排干(drain),将业务容器转移到其他的node节点上。 测试环境中的升级十分顺利,各个核心组件成功升级到了1.11.3。
注意提前准备–pod-infra-container-image到k8s.gcr.io/pause:3.1
从kube-proxy的启动日志来看,因为本次演练没有开启ipvs proxyier,所以还是使用的iptables Proxier。
Flag proxy-mode="" unknown, assuming iptables proxy Using iptables Proxier.
3.其他组件
3.1 移除Heapster
heapster已经废弃,需要将heapster及其相关内容从Kubernetes集群中移除:
kubectl delete ClusterRoleBinding heapster kubectl delete ServiceAccount heapster -n kube-system kubectl delete Deployment heapster -n kube-system kubectl delete Service heapster -n kube-system kubectl delete Deployment monitoring-influxdb -n kube-system kubectl delete Service monitoring-influxdb -n kube-system kubectl delete Deployment monitoring-grafana -n kube-system kubectl delete Service monitoring-grafana -n kube-system
3.2 部署metrics-server
heapster已经废弃,推荐使用metrics-server。 metrics-server的部署可以使用helm,[官方的chart在这里](https://github.com/helm/charts/tree/master/stable/metrics-server;也可以参考和定制官方给的yaml deploy metrics-server
以上所述就是小编给大家介绍的《Kubernetes 从1.10到1.11升级记录》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 升级PHP7过程记录
- 升级vue全家桶过程记录
- JDK 8 升级 JDK 11 过程记录
- JDK 8 升级 JDK 11 过程记录
- 服务端升级 Ubuntu 20.04 LTS 记录
- Webpack 从 v4 升级至 v5 遇到问题记录
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Learning Vue.js 2
Olga Filipova / Packt Publishing / 2017-1-5 / USD 41.99
About This Book Learn how to propagate DOM changes across the website without writing extensive jQuery callbacks code.Learn how to achieve reactivity and easily compose views with Vue.js and unders......一起来看看 《Learning Vue.js 2》 这本书的介绍吧!