9

K8S 生态周报| Kubernetes v1.19 正式发布

 3 years ago
source link: https://zhuanlan.zhihu.com/p/208173540
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

K8S 生态周报| Kubernetes v1.19 正式发布

网易有道 资深运维开发

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」[1]

Kubernetes v1.19 正式发布

本周 Kubernetes v1.19 正式发布,这是今年发布的第二个版本,也是耗时最长的一个版本。

在此版本中有 34 个增强功能,其中 10 个GA,15 个 beta 以及 9 个 alpha。并且从 v1.19 开始,Kubernetes 每个版本的支持周期延长至 1 年。(感谢[ Long Term Support (LTS) working group ](https://github.com/kubernetes/community/tree/master/wg-lts#readme "LTS WG"))

关于此版本中重要的变更,可参考我每期周报中 “上游进展” 的部分。或者直接参考 官方博客中 v1.19 的介绍文章[2]

这里我来单独介绍一个更具体且实用的特性。

API 弃用规则

Kubernetes 是一个庞大的系统,当讨论它的 API 时,我们不得不提到常用的 4 个术语,即:group(组), version(版本), kind(类型)和 resource(资源)。

一个 API group 是一组相关功能的集合,group + version 是确保 API 可随着时间推移,进行版本升级或功能更新的基础。

这里我来介绍下 自 Kubernetes v1.19 开始 针对 REST 资源(aka API 对象)在弃用策略相关的变更。

当请求一个已标记为废弃的 REST API endpoint 时,会有如下行为:

  • 根据 RFC7234 [3] 会返回一个 Warning header;
  • 添加一个 "k8s.io/deprecated":"true" annotation 到记录此次请求的 audit event 中;
  • kube-apiserver 进程设置一个类型为 Gauge 的 metric apiserver_requested_deprecated_apis 的值为 1。这个 metrics 有 group, version, resource, subresource 等标签。例如:
apiserver_requested_deprecated_apis{group="extensions",removed_release="1.22",resource="ingresses",subresource="",version="v1beta1"} 1

这表示 extensionsv1beta1 版本的 ingresses 资源将在 1.22 版本移除。

我们可以将这个指标和 apiserver_request_total 这个指标进行组合查询,即可看到当前集群中有多少请求是在访问已废弃 API 的。

例如使用如下查询条件,用来查询当前有多少请求将在 1.22 中移除的 API:

apiserver_requested_deprecated_apis{removed_release="1.22"} * on(group,version,resource,subresource) group_right() apiserver_request_total

使用场景 不知道你是否还记得 v1.18 中删除了很多已废弃的 API 版本,在集群版本升级时,我们需要确保已经更新/删除使用这些 API 版本的资源,以免在集群升级后,导致已部署资源的异常。

当我们使用上面介绍的方法,直接组合 apiserver_requested_deprecated_apis 指标和 apiserver_request_total 指标进行查询,即可看到当前集群内是否有会受此影响的请求。

关于此版本的详细变更请参考 v1.19 的 ReleaseNote[4]

Prometheus 2.21.0-rc.0 发布

此版本使用 Go v1.15 构建,在 TLS 证书验证时,弃用了 X.509 CommonName[5] 的支持。

我们一起来看看此版本中值得注意的变更吧:

  • 新增的 Service Discovery:Eureka SD[6]Hetzner SD[7];
  • Kubernetes SD 现在已支持 EndpointSlices[8]
  • 新增 target_limit 配置 ,表示每次抓取能接受的 instance 数量。在 target relabel 之后,如果超过了此配置,则 Prometheus 会将其标记为失败。这是一项实验性功能,后续行为可能会有调整;
  • #7713 在 PromQL 和 UI 中支持更易读的时间周期;
  • #7856 修复了 chunks.HeadReadWriter: maxt of the files are not set 的错误;

更多关于此版本的变更,请参考其 ReleaseNote[9]

jaeger v1.19 系列发布

本周连续发布了 v1.19.0 至 v1.19.2 版本,主要 bug 都集中在 UI 上。并且在 v1.19 中有一个已知的问题,#2297 是为 gRPC query 添加 TLS 支持,但未注册 flag ,所以此特性不能使用。计划是在 v1.20 中修复。

  • #2336 可配置的 UDP socket buffer size;
  • #2330 默认支持批量且队列化的重试;

上游进展

  • Kubernetes v1.16.15 将会是 Kubernetes v1.16 中的最后一个版本;

欢迎订阅我的文章公众号【MoeLove】

参考资料

k8s生态: https://zhuanlan.zhihu.com/container

v1.19 介绍: https://kubernetes.io/blog/2020/08/26/kubernetes-release-1.19-accentuate-the-paw-sitive/

RFC7234: https://tools.ietf.org/html/rfc7234#section-5.5

v1.19 ReleaseNote: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.19.md

X.509 CommonName: https://golang.org/doc/go1.15#commonname

Eureka SD: https://github.com/prometheus/prometheus/pull/3369

Hetzner SD: https://github.com/prometheus/prometheus/pull/7822

Kubernetes SD 支持 EndpointSlices: https://github.com/prometheus/prometheus/pull/6838

Prometheus v2.21.0-rc.0 ReleaseNote: https://github.com/prometheus/prometheus/releases/tag/v2.21.0-rc.0


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK