Kubernetes 从1.10到1.11升级记录

栏目: 编程工具 · 发布时间: 5年前

内容简介: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升级记录》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

UNIX系统编程: 通信、并发与线程

UNIX系统编程: 通信、并发与线程

【美】Kay Robbins、Steve Robbins / 师蓉 / 电子工业出版社 / 2018-5 / 198

《UNIX系统编程: 通信、并发与线程》是一本基于最新UNIX标准的完备的参考书,对UNIX编程的要点进行了清晰易懂的介绍,从一些用于说明如何使用系统调用的短小代码段开始,逐渐过渡到能帮助读者扩展自己技能水平的实际项目中。《UNIX系统编程: 通信、并发与线程》中对通信、并发和线程问题进行了深入探讨,对复杂的概念(如信号和并发)进行了全面且清晰的解释,还覆盖了与文件、信号、信号量、POSIX线程和......一起来看看 《UNIX系统编程: 通信、并发与线程》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具