作者 | 陈洁、高相林、陈有坤、敖小剑
业界要闻
Argo 项目是一组 Kubernetes 原生工具,用于运行和管理 Kubernetes 上的作业和应用程序。目前由 Argo Workflows,Argo Events,Argo CD 和 Argo Rollouts 四个子项目组成。4 月 8 日,CNCF 技术监督委员会(Technical Oversight Committee,TOC)投票决定接受 Argo 作为孵化级别的托管项目。
Argo CD 发布 v1.5 版本,v1.5 在性能上进行了大幅度的优化,同时降低了对 APIServer 的压力;此外,v1.5 还对 Helm 3 charts 进行了支持。
4 月 7 日,CloudNative 峰会在 youtube 上通过直播形式召开,峰会主要介绍了 CNCF 毕业项目(包括 Kubernetes,Prometheus,Envoy,Jaeger 等)的最新进展以及讨论未来在云原生技术上的一些新的动向。
受 COVID-19 疫情影响,大多数人开启了居家办公模式,社交关系拉远,不管是对身体健康还是心理健康都有所影响。CNCF Well-Being Working Group 提供了一份疫情期间工作指导,包括一些常见问题的解答以及建议。
因 COVID-19,Helm 维护人员决定延长 Helm v2 的 Bug 修复服务时间。
上游重要进展
优化了 kubectl apply 的逻辑,尽可能多的 apply YAML 中的有效资源。
支持在 cgroup v2 unified mode 的机器上跑 kubelet。同时做了 cpu.shares(阈值为 2-262144 )到 cpu.weight(阈值为 1-10000)的转换。
在 apiserver 端暴露了一个 etcd db size 使用量的 metric。
解决了一个没有对 Selector 结果进行校验的 Bug。目前使用 labels.SelectorFromSet,如果解析失败(例如 label value 误填了一个很长的值),会返回一个空的 Selector,从而导致所有的资源被筛选出。
调度器优化了计算亲和性分数时的性能,将循环内部的一个读写锁移到了 goroutine 最外层(优化了锁粒度)。
使用 discovery endpoint 时会等待 CRD 同步状态完毕后再上报 readiness,解决了 discovery enxpoint 启动后会短暂不可用的问题。
Kubelet 进行 out-of-pid eviction 时,目前仅利用 PodPriority 来进行排序,这个 KEP 计划加入更多进程级别数据(例如 Pod 内进程数)来进行 eviction。
支持基于容器级别资源来进行 autoscaling,原因是目前单个 Pod 中可能存在以下特殊场景:
- 多个容器有不同的资源阈值;
- 有多个容器,但是 autoscaling 只基于单个容器的资源阈值。
这个设计文档主要是考虑如何实现,列出了四种方法以及他们的优缺点,四种方法分别是直接使用 K8s 的定义,直接放到环境变量,使用 annotation描述,使用 Knative 自定义的描述。
Istio Networking 工作组的最新讨论结果,决定从 Istio1.6 之后移除 Galley:Galley 原有的职责验证(validation)和状态控制器(status controllers)已经合并到 Istiod,而 Galley 剩余的职责 MCP Source 将被直接删除。备注:MCP 功能还存在,Istiod 保留有 MCP sync 的角色。
开源项目推荐
BotKube 是一个监控 Kubernetes 集群并提供告警服务的应用,支持推送消息至 Slack,Mattermost 以及ElasticSearch。它通过规则过滤 Kubernetes 事件并进行定向报警。另外还提供对当前集群中的资源做一些固定的 YAML 检查。
PrometheusAlert 是一个运维告警中心消息转发系统,支持主流的监控系统 Prometheus , Zabbix , 日志系统 Graylog 和数据可视化系统 Grafana 发出的预警消息,支持钉钉等各种主流告警方式。
一个高性能、云原生的分布式 SQL 数据库,适用于云原生 OLTP 应用,具有较高的拓展性、容错性以及支持异地容灾。
本周阅读推荐
随着 Kubernetes 版本迭代,有一部分 API 被逐渐 deprecate 。这篇文章介绍了如何用 Deprek8 ,一个基于 Open Policy Agent 规则的工具,对你仓库中的 YAML 是否引用 deprecated API 进行检测。
文章详细介绍了 Kubernetes 中的 QoS 机制,并介绍了 OOM 发生后,Linux Kill 进程的过程以及 Kubernetes 如何 evict Pod。
文章深入探讨了 CI/CD 的关键点,包括版本控制、开发分支与模式、发布流水线以及自动化测试等。
介绍了 Kubernetes 1.18 中在 Server-side Apply 上新增的特性。1.18 中增加了 managedFields,所有 server-side apply 都被记录在 mangedFields 中,包括修改的字段、修改时间以及修改人。
云原生网络研讨会邀您参加
“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的公众号。”