Kubernetes指南
Linux性能优化实战eBPF 核心技术与实战SDN指南个人博客
中文
中文
  • 序言
  • 基础入门
    • Kubernetes 简介
    • Kubernetes 基本概念
    • Kubernetes 101
    • Kubernetes 201
    • Kubernetes 集群
  • 核心原理
    • 核心原理
    • 架构原理
    • 设计理念
    • 核心组件
      • etcd
      • kube-apiserver
      • kube-scheduler
      • kube-controller-manager
      • kubelet
      • kube-proxy
      • kube-dns
      • Federation
      • kubeadm
      • hyperkube
      • kubectl
    • 资源对象
      • Autoscaling
      • ConfigMap
      • CronJob
      • CustomResourceDefinition
      • DaemonSet
      • Deployment
      • Ingress
      • Job
      • LocalVolume
      • Namespace
      • NetworkPolicy
      • Node
      • PersistentVolume
      • Pod
      • PodPreset
      • ReplicaSet
      • Resource Quota
      • Secret
      • SecurityContext
      • Service
      • ServiceAccount
      • StatefulSet
      • Volume
  • 部署配置
    • 部署指南
    • kubectl 安装
    • 单机部署
    • 特性开关
    • 最佳配置
    • 版本支持
    • 集群部署
      • kubeadm
      • kops
      • Kubespray
      • Azure
      • Windows
      • LinuxKit
      • kubeasz
    • 附加组件
      • Addon-manager
      • DNS
      • Dashboard
      • 监控
      • 日志
      • Metrics
      • GPU
      • Cluster Autoscaler
      • ip-masq-agent
    • Kubernetes-The-Hard-Way
      • 准备部署环境
      • 安装必要工具
      • 创建计算资源
      • 配置创建证书
      • 配置生成配置
      • 配置生成密钥
      • 部署 Etcd 群集
      • 部署控制节点
      • 部署计算节点
      • 配置 Kubectl
      • 配置网络路由
      • 部署 DNS 扩展
      • 烟雾测试
      • 删除集群
  • 插件扩展
    • API 扩展
      • Aggregation
      • CustomResourceDefinition
    • 访问控制
      • 认证
      • RBAC 授权
      • 准入控制
    • Scheduler 扩展
    • 网络插件
      • CNI
      • Flannel
      • Calico
      • Weave
      • Cilium
      • OVN
      • Contiv
      • SR-IOV
      • Romana
      • OpenContrail
      • Kuryr
    • 运行时插件 CRI
      • CRI-tools
      • Frakti
    • 存储插件
      • 容器存储接口 CSI
      • FlexVolume
      • glusterfs
    • 网络策略
    • Ingress Controller
      • Ingress + Letsencrypt
      • minikube Ingress
      • Traefik Ingress
      • Keepalived-VIP
    • Cloud Provider 扩展
    • Device 插件
  • 服务治理
    • 服务治理
      • 一般准则
      • 滚动升级
      • Helm
      • Operator
      • Service Mesh
      • Linkerd
      • Linkerd2
    • Istio
      • 安装
      • 流量管理
      • 安全管理
      • 策略管理
      • 度量管理
      • 排错
      • 社区
    • Devops
      • Draft
      • Jenkins X
      • Spinnaker
      • Kompose
      • Skaffold
      • Argo
      • Flux GitOps
  • 实践案例
    • 实践概览
    • 资源控制
    • 集群高可用
    • 应用高可用
    • 调试
    • 端口映射
    • 端口转发
    • 用户管理
    • GPU
    • HugePage
    • 安全
    • 审计
    • 备份恢复
    • 证书轮换
    • 大规模集群
    • 大数据与机器学习
      • Spark
      • Tensorflow
    • Serverless
  • 排错指南
    • 排错概览
    • 集群排错
    • Pod 排错
    • 网络排错
    • PV 排错
      • AzureDisk
      • AzureFile
    • Windows 排错
    • 云平台排错
      • Azure
    • 排错工具
  • 社区贡献
    • 开发指南
    • 单元测试和集成测试
    • 社区贡献
  • 附录
    • 生态圈
    • 学习资源
    • 国内镜像
    • 如何贡献
    • 参考文档
由 GitBook 提供支持
在本页
  • Kubernetes 版本支持
  • kube-controller-manager, kube-scheduler, and cloud-controller-manager
  • kubelet
  • 参考文档
  1. 部署配置

版本支持

上一页最佳配置下一页集群部署

最后更新于2年前

Kubernetes 版本支持

Kubernetes 版本的格式为 x.y.z,其中 x 是主版本号,y 是次版本号,而 z 则是修订版本。版本的格式遵循 ,即

  • 主版本号:当你做了不兼容的 API 修改,

  • 次版本号:当你做了向下兼容的功能性新增,

  • 修订号:当你做了向下兼容的问题修正。

    Kubernetes 项目只维护最新的三个次版本,每个版本都会放到不同的发布分支中维护。上游版本发现的严重缺陷以及安全修复等都会移植到这些发布分支中,这些分支由 来维护。

    次版本一般是每三个月发布一次,所以每个发布分支一般会维护 9 个月。

不同组件的版本支持情况

在 Kubernetes 中,不同组件的版本并不要求完全一致,但不同版本的组件混合部署时也有一些最基本的限制。

kube-apiserver

在 集群中,kube-apiserver 的版本差不能超过一个次版本号。比如最新的 kube-apiserver 版本号为 1.13 时,其他 kube-apiserver 的版本只能是 1.13 或者 1.12。

kubelet

Kubelet 的版本不能高于 kube-apiserver 的版本,并且跟 kube-apiserver 相比,最多可以相差两个次版本号。比如:

  • kube-apiserver 的版本是 1.13

  • 相应的 kubelet 的版本为 1.13, 1.12, and 1.11

    再比如,一个高可用的集群中:

  • kube-apiserver 版本号为 1.13 and 1.12

  • 相应的 kubelet 版本为 1.12, and 1.11 (1.13 不支持,因为它比 kube-apiserver 的 1.12 高 )

    kube-controller-manager, kube-scheduler, and cloud-controller-manager

    kube-controller-manager, kube-scheduler, 和 cloud-controller-manager 不能高于 kube-apiserver 的版本。通常它们的版本应该跟 kube-apiserver 一致,不过也支持相差一个次版本号同时运行。比如:

  • kube-apiserver 版本为 1.13

  • 相应的 kube-controller-manager, kube-scheduler, 和 cloud-controller-manager 版本为 1.13 and 1.12

    再比如,一个高可用的集群中:

  • kube-apiserver 版本为 1.13 and 1.12

  • 相应的 kube-controller-manager, kube-scheduler, 和 cloud-controller-manager 版本为 1.12 (1.13 不支持,因为它比 apiserver 的 1.12 高 )

    kubectl

    kubectl 可以跟 kube-apiserver 相差一个次版本号,比如:

  • kube-apiserver 版本为 1.13

  • 相应的 kubectl 版本为 1.14, 1.13 和 1.12

    版本升级顺序

    当从 1.n 版本升级到 1.(n+1) 版本时,必须要遵循以下的升级顺序。

    kube-apiserver

    前提条件:

  • 单节点集群中, kube-apiserver 的版本为 1.n;HA 集群中,kube-apiserver 版本为 1.n 或者 1.(n+1)。

  • kube-controller-manager, kube-scheduler 以及 cloud-controller-manager 的版本都是 1.n。

  • kubelet 的版本是 1.n 或者 1.(n-1)

  • 已注册的注入控制 webhook 可以处理新版本的请求,比如 ValidatingWebhookConfiguration 和 MutatingWebhookConfiguration 已经更新为支持 1.(n+1) 版本中新引入的特性。

接下来就可以把 kube-apiserver 升级到 1.(n+1) 了,不过要注意 版本升级时不可跳过次版本号。

kube-controller-manager, kube-scheduler, and cloud-controller-manager

前提条件:

  • kube-apiserver 已经升级到 1.(n+1) 版本。

接下来就可以把 kube-controller-manager, kube-scheduler 和 cloud-controller-manager 都升级到 1.(n+1) 版本了。

kubelet

前提条件:

  • kube-apiserver 已经升级到 1.(n+1) 版本。

  • 升级过程中需要保证 kubelet 跟 kube-apiserver 最多只相差一个次版本号。

接下来就可以把 kubelet 升级到 1.(n+1) 了。

参考文档

Semantic Versioning
Patch Releases
highly-availabile (HA) clusters
Kubernetes Version and Version Skew Support Policy - Kubernetes