今天,星期三,
用于准备本材料的信息取自
节点数
K8s 集群节点(Kubelet)方面出现了真正大量值得注意的创新(处于 alpha 版本状态)。
首先,所谓的 «kubectl debug
,本质上类似于 kubectl exec
:仅代替在容器中运行进程(如 exec
)它在 pod 中启动一个容器。 例如,此命令会将新容器连接到 pod:
kubectl debug -c debug-shell --image=debian target-pod -- bash
有关临时容器(及其使用示例)的详细信息可以在
NB:从本质上讲,甚至从名称上看,该功能类似于现有的插件
另一项创新—— PodOverhead
PodSpec
添加字段 Overhead *ResourceList
(与中的数据比较 RuntimeClass
,如果使用的话)。
另一个值得注意的创新是 节点拓扑管理器 (节点拓扑管理器),旨在统一微调 Kubernetes 中各个组件的硬件资源分配的方法。 这一举措是由各种现代系统(来自电信、机器学习、金融服务等领域)对高性能并行计算和最大限度地减少操作执行延迟的日益增长的需求所推动的,为此它们使用先进的 CPU 和硬件加速能力。 到目前为止,Kubernetes 中的此类优化已经通过不同的组件(CPU 管理器、设备管理器、CNI)实现,现在它们将添加一个单一的内部接口,统一方法并简化新的类似(所谓的拓扑)的连接。感知 - Kubelet 端的组件。 详细信息 - 在
拓扑管理器组件图
下一个功能 - 在容器运行时检查容器 (StartupProbeEnabled
) 取消(或者更确切地说,推迟)任何其他检查的效果,直到 pod 完成运行为止。 因此,该功能最初被称为
此外,对 RuntimeClass 的改进在测试版状态中立即可用,增加了对“异构集群”的支持。 C
Сеть
Kubernetes 1.16 中首次(alpha 版本)出现的两个重要网络功能是:
-
Поддержка 双网络堆栈 - IPv4/IPv6 - 及其在 Pod、节点、服务层面的相应“理解”。 它包括 Pod 之间、从 Pod 到外部服务的 IPv4 到 IPv4 和 IPv6 到 IPv6 互操作性、参考实现(在 Bridge CNI、PTP CNI 和 Host-Local IPAM 插件内),以及与运行的 Kubernetes 集群反向兼容仅限 IPv4 或 IPv6。 实施细节在KEP .在 pod 列表中显示两种类型(IPv4 和 IPv6)的 IP 地址的示例:
kube-master# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE nginx-controller 1/1 Running 0 20m fd00:db8:1::2,192.168.1.3 kube-minion-1 kube-master#
- 端点的新 API -
端点切片 API 。 它解决了现有 Endpoint API 的性能/可扩展性问题,这些问题影响控制平面中的各种组件(apiserver、etcd、endpoints-controller、kube-proxy)。 新的 API 将添加到 Discovery API 组中,并将能够为由数千个节点组成的集群中每个服务上的数万个后端端点提供服务。 为此,每个服务都映射到 N 个对象EndpointSlice
,每个端点默认不超过100个(该值是可配置的)。 EndpointSlice API 还将为其未来的发展提供机会:支持每个 pod 的多个 IP 地址、端点的新状态(不仅Ready
иNotReady
),端点的动态子集化。
上一版本中提供的版本已达到测试版 service.kubernetes.io/load-balancer-cleanup
并附加到每个服务的类型 LoadBalancer
。 删除此类服务时,它会阻止实际删除资源,直到完成所有相关平衡器资源的“清理”。
API机械
真正的“稳定里程碑”是在 Kubernetes API 服务器及其交互领域。 这很大程度上归功于 转入稳定状态者,无需特殊介绍
-
“子资源” 同/status
и/scale
对于自定义资源; -
转型 CRD 版本,基于外部 webhook; -
最近提出的 (在 K8s 1.15 中)默认值 (默认) 和自动字段移除 (修剪) 对于自定义资源; -
机会 使用 OpenAPI v3 架构创建和发布用于在服务器端验证 CRD 资源的 OpenAPI 文档。
Kubernetes 管理员早已熟悉的另一种机制:
alpha 版本中唯一重大的创新是 SelfLink
— 表示指定对象并作为其一部分的特殊 URI ObjectMeta
и ListMeta
(即 Kubernetes 中任何对象的一部分)。 他们为什么要放弃它? 以简单的方式激励 SelfLink
将在 Kubernetes 版本 1.20 和最终版本 1.21 中实现。
数据存储
与之前的版本一样,存储区域的主要工作是在该区域中观察到的
- 第一次(alpha 版本)
出现 Windows 工作节点的 CSI 插件支持:当前的存储工作方式也将取代 Kubernetes 核心中的树内插件和 Microsoft 基于 Powershell 的 FlexVolume 插件;
在 Kubernetes for Windows 中实现 CSI 插件的方案 - 机会
调整 CSI 卷大小 ,早在 K8s 1.12 中就引入了,现已发展到 beta 版本; - 通过使用 CSI 创建本地临时卷的能力,实现了类似的“升级”(从 alpha 到 beta)(
CSI 内联卷支持 ).
在上一个版本的 Kubernetes 中引入 DataSource
创建新的 PVC)现在也已获得测试状态。
调度器
调度方面的两个显着变化(均为 alpha 版本):
-
- 机会 使用 Pod 而不是逻辑应用程序单元来“公平分配”负载 (如 Deployment 和 ReplicaSet)并调整此分布(作为硬要求或软条件,即优先级)。 该功能将扩展计划中的 Pod 的现有分发功能,目前该功能受到选项的限制EvenPodsSpreading
PodAffinity
иPodAntiAffinity
,让管理员在这方面有更精细的控制,这意味着更好的高可用性和优化的资源消耗。 详细信息 - 在KEP . - 使用 最佳适合政策 в RequestedToCapacityRatio 优先级函数 在 Pod 规划期间,这将允许 申请
装箱 (“打包在容器中”)适用于基本资源(处理器、内存)和扩展资源(例如 GPU)。 有关更多详细信息,请参阅KEP .
调度 Pod:在使用最佳匹配策略之前(直接通过默认调度程序)及其使用(通过调度程序扩展程序)
另外,
其他变化
另外,在 Kubernetes 1.16 版本中,您还可以注意到 倡议
此外,还可以注意到以下变化:
- Windows支持开发 с
的出现 适用于该操作系统的 Kubeadm 实用程序(alpha 版本),机会 RunAsUserName
对于 Windows 容器(alpha 版本),改进 组托管服务帐户 (gMSA) 支持最高测试版本,支持 挂载/附加 vSphere 卷。 -
回收 API响应中的数据压缩机制。 以前,HTTP 过滤器用于这些目的,这施加了许多限制,导致默认情况下无法启用它。 “透明请求压缩”现在有效:客户端发送Accept-Encoding: gzip
在标头中,如果其大小超过 128 KB,它们会收到 GZIP 压缩的响应。 Go 客户端自动支持压缩(发送所需的标头),因此它们会立即注意到流量的减少。 (其他语言可能需要稍作修改。) -
成为可能 根据外部指标将 HPA 从零 Pod 扩展到零。 如果您基于对象/外部指标进行扩展,那么当工作负载空闲时,您可以自动扩展到 0 个副本以节省资源。 对于工作线程请求 GPU 资源,并且不同类型的空闲工作线程的数量超过可用 GPU 数量的情况,此功能应该特别有用。 - 新客户-
— 用于对对象的“通用”访问。 它旨在轻松检索元数据(即小节k8s.io/client-go/metadata.Client
metadata
)从集群资源中获取并使用它们执行垃圾收集和配额操作。 - 构建 Kubernetes
现在你可以 没有传统(“内置”树内)云提供商(alpha 版本)。 - 转到 kubeadm 实用程序
添加 实验性(alpha 版本)能够在操作期间应用自定义补丁init
,join
иupgrade
。 了解有关如何使用该标志的更多信息--experimental-kustomize
,参见KEP . - apiserver 的新端点 -
, - 允许您导出有关其准备情况的信息。 API 服务器现在也有一个标志readyz
--maximum-startup-sequence-duration
,允许您调节其重新启动。 - 两 Azure 的功能 宣布稳定:支持
可用区 (可用区)和跨资源组 (RG)。 此外,Azure 还添加了: - AWS 现在有
支持 适用于 Windows 上的 EBS 和优化 EC2 API 调用DescribeInstances
. - Kubeadm 现已独立
迁移 升级CoreDNS版本时的CoreDNS配置。 - 二进制文件 等 在对应的Docker镜像中
已经完成了 world-executable,它允许您运行此映像而无需 root 权限。 另外,etcd 迁移镜像停止 etcd2 版本支持。 - В
集群自动缩放器 1.16.0 改用 Distroless 作为基础镜像,提高了性能,添加了新的云提供商(DigitalOcean、Magnum、Packet)。 - 使用/依赖软件的更新:Go 1.12.9、etcd 3.3.15、CoreDNS 1.6.2。
PS
另请阅读我们的博客:
- «
Kubernetes 1.15:主要创新概述 “; - «
Kubernetes 1.14:主要创新概述 “; - «
Kubernetes 1.13:主要创新概述 “; - «
Kubernetes 1.12:主要创新概述 “。
来源: habr.com