Kubernetes 1.16 - 如何在不破坏任何内容的情况下升级

Kubernetes 1.16 - 如何在不破坏任何内容的情况下升级

今天,18 月 1.16 日,Kubernetes 的下一个版本发布了 - XNUMX。 一如既往,许多改进和新产品等待着我们。 但我想提请您注意该文件的“所需操作”部分 变更日志-1.16.md。 这些部分发布的更改可能会破坏您的应用程序、集群维护工具或需要更改配置文件。

一般来说,它们需要手动干预......

让我们立即开始一项更改,该更改很可能会影响每个长期使用 kubernetes 的人。 Kubernetes API 不再支持旧资源 API 版本。

如果有人不知道或者忘记了...资源的 API 版本在清单中的字段中指示 apiVersion: apps/v1

这些是:

资源类型
旧版
应该用什么代替

所有资源
应用程序/v1beta1
应用程序/v1beta2
应用程序/ v1

部署
守护进程集
复制集
扩展/v1beta1
应用程序/ v1

网络政策
扩展/v1beta1
网络.k8s.io/v1

Pod 安全策略
扩展/v1beta1
政策/v1beta1

我还想提请您注意以下事实:类型的对象 Ingress 也改变了 apiVersionnetworking.k8s.io/v1beta1。 旧义 extensions/v1beta1 仍然受支持,但有充分的理由在清单中同时更新此版本。

节点上安装的各种系统标签(节点标签)有相当多的变化。

Kubelet 被禁止设置任意标签(以前可以通过启动键设置 kubelet --node-labels),他们只留下了这个列表 允许的:

kubernetes.io/hostname
kubernetes.io/instance-type
kubernetes.io/os
kubernetes.io/arch

beta.kubernetes.io/instance-type
beta.kubernetes.io/os
beta.kubernetes.io/arch

failure-domain.beta.kubernetes.io/zone
failure-domain.beta.kubernetes.io/region

failure-domain.kubernetes.io/zone
failure-domain.kubernetes.io/region

[*.]kubelet.kubernetes.io/*
[*.]node.kubernetes.io/*

标签 beta.kubernetes.io/metadata-proxy-ready, beta.kubernetes.io/metadata-proxy-ready 和 beta.kubernetes.io/kube-proxy-ds-ready 不再添加到新节点中,并且各种附加组件已开始使用略有不同的标签作为节点选择器:

部件
旧标签
当前标签

kube-代理
beta.kubernetes.io/kube-proxy-ds-ready
node.kubernetes.io/kube-proxy-ds-ready

IP 掩码代理
beta.kubernetes.io/masq-agent-ds-ready
node.kubernetes.io/masq-agent-ds-ready

元数据代理
beta.kubernetes.io/元数据代理就绪
cloud.google.com/metadata-proxy-ready

kubeadm 现在删除其后面的初始 kublet 配置文件 bootstrap-kubelet.conf。 如果您的工具正在访问此文件,则切换到使用 kubelet.conf,它存储当前的访问设置。

Cadvisor 不再提供指标 pod_name и container_name如果您在 Prometheus 中使用过它们,请转到指标 pod и container 分别

使用 line 命令删除键:

部件
缩回钥匙

超级库贝
--make-符号链接

kube-代理
--资源容器

调度程序开始使用事件 API v1beta1 版本。 如果您使用第三方工具与Event API交互,请切换到最新版本。

幽默的一刻。 在 1.16 版本的准备过程中,进行了以下更改:

  • 删除了注释 scheduler.alpha.kubernetes.io/critical-pod 在版本 v1.16.0-alpha.1 中
  • 返回了注释 scheduler.alpha.kubernetes.io/critical-pod 在版本 v1.16.0-alpha.2 中
  • 删除了注释 scheduler.alpha.kubernetes.io/critical-pod 在版本 v1.16.0-beta.1 中

使用字段 spec.priorityClassName 来表明 pod 的重要性。

来源: habr.com

添加评论