从 2016 年 6 月发布 v1.0-rc1 版本开始,至今已整整 5 年时间,runc 历经多个 rc 版本终于发布了 v1.0 版本。整个过程及其思考请参考我之前的文章 《开源项目的 5 年长跑,runc v1.0 终于正式发布!》 。这里我们来看看 v1.0 新版本中带来了哪些值得注意的变更。
#2999 删除了 libcontainer/configs.Device* 标识,请使用 libcontainer/devices.* 来替代(是自 v1.0-rc94 开始废弃的);
#2999 删除了 libcontainer/system.RunningInUserNS 函数,请使用 libcontainer/userns.RunningInUserNS 函数代替(同样是自 v1.0-rc94 开始废弃的);
改进
- #2994 在 runc update 的时候设置了 SkipDevices ,所以在此期间我们就不会更新 cgroups 了;
- #3010 cgroup1 相关的 blkio 支持 BFQ weight 了,这里需要注意的是 2018 年 CFQ 已经从 Linux 删除,22019 年发布的 RHEL 8.0 和 Ubuntu 19.01 等发行版中也均使用 BFQ 替代了 CFQ 。关于 Linux 内核的 BFQ 和 CFQ 这里就不再展开了,只需要知道 BFQ 相比 CFQ 做到了低延迟和吞吐即可;
更多关于此版本的变更,请参考其 ReleaseNote ,现在 Docker/containerd 等项目已将 runc 依赖升级到了 v1.0 ,K8S 项目尚未合并。
Prometheus v2.28 正式发布
Prometheus v2.28 在使用体验上有了重大提升,我们来看看有哪些值得关注的内容:
- PromQL 编辑器默认将会开启, 这个编辑器我在之前的 k8s生态中介绍过了,这里贴个图,看看它的自动补齐, 除此之外还有高亮和 linting 的能力。
- 还有 metrics 的浏览窗口,为什么会再次提这个功能呢?因为我觉得它很实用。在之前的版本,我要么是需要提前记住有哪些 metrics,要么就是直接去 curl 请求下 metrics 接口,看看有哪些 metrics 可用。现在的话,直接浏览即可。
- 可以展示 trace exemplar 了,效果如下:这个功能还是蛮方便的,有空了我可以详细介绍下。(flag+1)
- 新增了一个基于 HTTP 的 service discovery ,这个功能比较实用,不再要求非要特定于使用某个组件,只要 HTTP 接口返回的内容符合其要求的格式,即可注册到 Prometheus 中。
- 在 Kubernetes SD 中,增加了一个 ingress class name 的字段,比如你在使用 Apache APISIX Ingress controller 的时候,通过新版的 Prometheus 采集,就会看到一个 {__meta_kubernetes_ingress_class_name: apisix} 的字段了;
更多关于此版本的变更,请查看其 ReleaseNote
Kubernetes v1.22.0-beta.0 发布
Kubernetes v1.22 正在持续的进行迭代和发布,我们来看看 v1.22.0-beta.0 中有哪些值得关注的变更吧!
废弃
- --hard-pod-affinity-symmetric-weight 和 --scheduler-name 已经从 kube-scheduler 中移除(自 v1.18 废弃);
API 变更
- #99597 kube-scheduler component config 现在开始用 v1beta2 API ,这意味着三个插件被废弃,分别是 NodeLabel, ServiceAffinity, NodePreferAvoidPods;
- #102834 Network Policy EndPort 已达到 beta 级别,并将默认开启使用;
特性
- #101316 为 StatefulSet 增加了一个 minReadySeconds 参数,通过此参数可以设置 sts 的最小就绪时间,不会过早的在 Pod 就绪前就把流量引入;
- #102722 为 kubeadm 在 kubeadm init 增加了 --dry-run 的选项;
- #102466 将 kubeadm 部署用的 CoreDNS 升级到了 v1.8.4 同时也授予了其 EndpointSlice 的 list 和 watch 权限;
bugfix
- 102840 更改了 Graceful Node Shutdown Pod 的 Reason 和 Message,变更如下:
- nodeShutdownReason = "Shutdown"
- nodeShutdownMessage = "Node is shutting, evicting pods"
- nodeShutdownNotAdmitMessage = "Node is in progress of shutting down, not admitting any new pods"
+ nodeShutdownReason = "Terminated"
+ nodeShutdownMessage = "Pod was terminated in response to imminent node shutdown."
+ nodeShutdownNotAdmittedReason = "NodeShutdown"
+ nodeShutdownNotAdmittedMessage = "Pod was rejected as the node is shutting down."