Kubernetes
  • 序言
  • 基礎入門
    • 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
    • 排錯工具
  • 社區貢獻
    • 開發指南
    • 單元測試和集成測試
    • 社區貢獻
  • 附錄
    • 生態圈
    • 學習資源
    • 國內鏡像
    • 如何貢獻
    • 參考文檔
Powered by GitBook
On this page
  • Kubernetes 版本支持
  • kube-controller-manager, kube-scheduler, and cloud-controller-manager
  • kubelet
  • 參考文檔
  1. 部署配置

版本支持

Previous最佳配置Next集群部署

Last updated 1 year ago

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