Kubernetes 从1.10到1.11升级记录

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

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

查看所有标签

猜你喜欢:

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

老二非死不可

老二非死不可

方三文 / 机械工业出版社 / 2013-12 / 39.00

关于投资 价值投资者为啥都买茅台? 怎样识别好公司与坏公司? 做空者真的罪大恶极吗? 国际板对A股会有什么影响? 波段操作,止损割肉到底靠不靠谱? IPO真的是A股萎靡不振的罪魁祸首吗? 关于商业 搜狐的再造战略有戏吗? 新浪如何焕发第二春? 百度的敌人为什么是它自己? 我为什么比巴菲特早两年投资比亚迪? 民族品牌这张牌还靠谱......一起来看看 《老二非死不可》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具