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