作者 | 王思宇、陈洁、敖小剑
业界要闻
- Falco 进入 CNCF Incubator 项目
原于 2018 年 8 月进入 sandbox,旨在 Kubernetes 运行时环境下支持配置规则来加强应用安全性、降低风险。
- Kubernetes v1.17.1 发布
解决部分 cloud provider 和 kubelet 相关问题,比如:
- kubelet 更新 Pod ready status 失败
- kubelet 清理 Pod volumes 发生 panic
- CFP 2020 K8s Contributor Summit Amsterdam 开始征集 talk
将与 KubeCon 2020 EU 同期进行,欢迎 K8s contributor 参会。
- Istio 1.14.3 发布
Istio 发布 1.4.3 版本,此版本修复看一些 bug 以提高系统鲁棒性和用户体验。
上游重要进展
Kubenetes
- LoadBalancer Service 支持多种不同 protocol 类型的 port
目前一个 LoadBalancer Service 可以写多个 port,但是这些 port 的类型必须相同,比如都是 tcp 或 udp。这个 PR 允许在一个 LoadBalancer Service 中定义多种不同类型的 port,以支持不同云厂商提供的 service 服务。(对应的 PR)
- 解决组件特定 ComponentConfig 的配置问题
ComponentConfig 是支持编写 Kubernetes-style 的配置文件,来给各种 Kubernetes 核心组件作为启动配置,而不是直接通过命令行参数的方式配置,这个 KEP 是为了解决在编写 ComponentConfig 的时候不同组件的特定配置问题。
- device manager 中增加 release api 接口
在 Kubelet devicemanager 中增加 release 接口,支持 device plugin 释放已经分配给 Pod 的设备。
type Manager interface {// ...// Release release devices allocated to pods.Release(pod *v1.Pod) error
}
- PDB status 中新增 conditions
conditions 用于上报当前 PDB 的一些状态信息,比如 PodDisruptionBudgetFailure(Failure),用于 disruption controller 在 failSafe 阶段上报状态标识。
type PodDisruptionBudgetStatus struct {// ...// Conditions represents the latest available observations of a PDB's current state.// +patchMergeKey=type// +patchStrategy=mergeConditions []PodDisruptionBudgetCondition
}
Istio
- 为Telemetry V2 开启 TCP 元数据交换
Telemetry V2 依靠对等代理之间的元数据交换,以便它们可以在不依赖于 side lookup 的情况下产生丰富的遥测信息。 Istio 1.4 使用 "x-envoy-peer-metadata" http header 来支持 http 流量的元数据交换。Istio 1.5 将支持 TCP 流量的元数据交换,该提案目前已经得到批准。
- 在 AuthorizationPolicy 实现 deny 和 exclude
Istioi 社区提出更改 AuthorizationPolicy 的 API,以支持拒绝 (deny) 和排除 (exclude) 语义。目标包括支持通过使用 AuthorizationPolicy 来拒绝请求,并支持在 AuthorizationPolicy 中使用否定匹配 (not_XXX)。用户无需复制或修改其现有策略即可使用新功能。
- 可验证的自定义属性
在 SPIFFE 标识(service account 和 namespace)之外,允许客户在 Istio 授权中创建和使用可验证的自定义属性。当前这个提案还处于早期阶段,讨论动机和用例,收集反馈,尚未开始设计。
开源项目推荐
- Flux
一个面向 GitOps 流程的 operator(CNCF sandbox 项目),支持监听 Git 变化并自动触发一系列打包部署等操作。
- Kubeless
符合原生 Kubernetes 模式的 serverless framework。安装部署之后,只需要提交自己写的 code 以及依赖给 kubeless cli,由 kubeless 负责部署运行。
本周阅读推荐
- 《Manage Thousands of Clusters with GitOps and the Cluster API》
Weaveworks 团队如何通过 GitOps 和 Cluster API 来管理数千个 Kubernetes 集群。其中 GitOps 正是使用了上面开源项目推荐中介绍的 Flux 工具,来把 GitOps 链路打通,并结合 Cluster API 组成了 GitOps 模式的多集群管理。
- 《Vault replication across multiple datacenters on Kubernetes》
本文介绍了基于 Kubernetes 之上,如何管理跨多个数据中心的 Vault 集群。
- 《Kubernetes Networking Demystified - A Brief Guide》
本文从一次网络连接开始,介绍了 Kubernetes 中各类网络链路和配置,包括 Service、Load balancer、kube-proxy、Pod 网络等,推荐对 Kubernetes 网络机制感兴趣的同学阅读。
- 《从零开始入门 K8s | GPU 管理和 Device Plugin 工作机制》
本文主要介绍 K8s 中 GPU 管理方式、如何为容器配置 GPU,以及对应的 Extended Resource 和 Device Plugin的工作原理。
- 《K8s 实践 | 如何解决多租户集群的安全隔离问题?》
如何解决多租户集群的安全隔离问题是企业上云的一个关键问题,本文主要介绍了 Kubernetes 多租户集群的基本概念和常见应用形态,以及在企业内部共享集群的业务场景下,基于 Kubernetes 原生和 ACK 集群现有安全管理能力快速实现多租户集群的相关方案。