今夜
用于准备本材料的信息取自
我们先从 SIG cluster-lifecycle 的重要介绍开始: 动态故障转移集群 Kubernetes(或更准确地说,自托管 HA 部署)现在 kubeadm
(init
и join
)。 简而言之,为此:
- 集群使用的证书被转移为秘密;
- 可以在 K8s 集群内使用 etcd 集群(即摆脱之前存在的外部依赖)
etcd 操作符 ; - 记录提供容错配置的外部负载均衡器的建议设置(将来计划消除这种依赖性,但现阶段还没有)。
使用 kubeadm 创建的 Kubernetes HA 集群的架构
实施细节可以参见
API
团队 apply
一般而言 声明式对象管理 kubectl
在 api 服务器中。 开发商自己简短地解释了他们的决定: kubectl apply
- 在 Kubernetes 中使用配置的基本部分,然而,“它充满了错误并且难以修复”,因此需要将该功能恢复正常并转移到控制平面。 当今存在的问题的简单明了的例子:
有关实施的详细信息位于
提供 alpha 版本 kubectl
)在您这边执行验证(在 kubectl create
и kubectl apply
)并根据方案(kubectl explain
)。 详细信息 - 在
预先存在的日志 O_APPEND
(而不是 O_TRUNC
)以避免在某些情况下丢失日志,并方便使用外部实用程序截断日志以进行轮换。
同样在 Kubernetes API 的上下文中,可以注意到, PodSandbox
и PodSandboxStatus
runtime_handler
记录有关的信息 RuntimeClass
在 pod 中(在有关文本中了解更多信息) AdmissionReview
他们支持。 最后,Admission Webhooks 规则现在是
库
PersistentLocalVolumes
subPath
subPathExpr
,现在用于确定所需的目录名称。 该功能最初出现在 Kubernetes 1.11 中,但在 1.14 中仍处于 alpha 版本状态。
与之前的 Kubernetes 版本一样,针对积极开发的 CSI(容器存储接口)引入了许多重大更改:
CSI
可用(作为 alpha 版本的一部分) ExpandCSIVolumes
,以及特定 CSI 驱动程序中对此操作的支持。
alpha 版本中 CSI 的另一个功能 - CSIInlineVolume
功能门。
与 CSI 相关的 Kubernetes“内部”也取得了进展,这些进展对于最终用户(系统管理员)来说并不那么明显......目前,开发人员被迫支持每个存储插件的两个版本:一个 - “在老方法”,在 K8s 代码库内部(在 -tree 中),第二个 - 作为新 CSI 的一部分 (阅读更多相关信息,例如,
这一切导致了 alpha 版本达到了
此外,还支持具有 CSI 的块设备(CSIBlockVolume
)
节点/Kubelet
推出 Alpha 版本 /metrics/resource/v1alpha1
。 开发商的长期战略
一个非常有趣的细微差别:尽管与使用 Prometheus 格式的各种情况相比,gRPC 端点具有明显的性能优势 (请参阅下面的基准之一的结果),作者更喜欢 Prometheus 的文本格式,因为这个监控系统在社区中有明确的领导地位。
“gRPC 与主要监控管道不兼容。 Endpoint 仅适用于向 Metrics Server 传送指标或监控与其直接集成的组件。 在 Metrics Server 中使用缓存时 Prometheus 文本格式的性能 够好了 鉴于 Prometheus 在社区中的广泛采用,我们更喜欢 Prometheus 而不是 gRPC。 一旦 OpenMetrics 格式变得更加稳定,我们将能够使用基于原型的格式来接近 gRPC 性能。”
在新的 Kubelet 端点中使用 gRPC 和 Prometheus 格式进行指标比较的性能测试之一。 更多图表和其他详细信息可以在
其他变化包括:
- 现在的 Kubelet(一次)
试图阻止 在重新启动和删除操作之前容器处于未知状态。 - 当使用
现在到初始化容器PodPresets
添加 与常规集装箱的信息相同。 - 库贝莱特
开始使用 usageNanoCores
来自 CRI 统计提供程序,以及 Windows 上的节点和容器添加 网络统计。 - 操作系统和架构信息现在记录在标签中
kubernetes.io/os
иkubernetes.io/arch
节点对象(从 beta 转移到 GA)。 - 能够为 pod 中的容器指定特定的系统用户组(
RunAsGroup
,出现在K8s 1.11 )先进的 测试版之前(默认启用)。 - du 和 find 在 cAdvisor 中使用,
取而代之 关于 Go 的实现。
CLI
在 cli-runtime 和 kubectl 中
简单文件使用示例
另外:
-
添加者 新团队kubectl create cronjob
,其名字不言而喻。 - В
kubectl logs
现在你可以结合 旗-f
(--follow
用于流日志)和-l
(--selector
用于标签查询)。 - Kubectl
学到了 复制通配符选择的文件。 - 给团队
kubectl wait
添加 旗--all
选择指定资源类型的命名空间中的所有资源。
他人
以下功能已获得稳定 (GA) 状态:
-
,在 Pod 规范中用于定义 Pod 准备情况中考虑的附加条件;ReadinessGate
- 支持大页面(功能门称为
);HugePages
-
自定义PodDNS ; - 优先级API
Pod 优先级和抢占 .
Kubernetes 1.14 中引入的其他更改:
- 默认 RBAC 策略不再允许 API 访问
discovery
иaccess-review
未经身份验证的用户 (未经验证). - 官方 CoreDNS 支持
由...提供 仅限Linux,因此当使用kubeadm在集群中部署它(CoreDNS)时,节点必须只能在Linux上运行(使用nodeSelectors来解决此限制)。 - 现在默认 CoreDNS 配置
使用 转发插件 而不是代理。 另外,在 CoreDNS 中添加 readinessProbe,它会阻止适当的(未准备好服务)pod 上的负载平衡。 - 在 kubeadm 中,分阶段
init
илиupload-certs
,成为可能 加载将新控制平面连接到 kubeadm-certs 密钥所需的证书(使用标志--experimental-upload-certs
). - 适用于 Windows 安装的 alpha 版本已经出现
支持 gMSA(组托管服务帐户)- Active Directory 中也可以由容器使用的特殊帐户。 - 对于 G.C.E.
活性 etcd 和 kube-apiserver 之间的 mTLS 加密。 - 使用/依赖软件的更新:kubeadm 中支持 Go 1.12.1、CSI 1.1、CoreDNS 1.3.1、Docker 18.09,支持的最低 Docker API 版本现在为 1.26。
PS
另请阅读我们的博客:
- «
Kubernetes 1.13:主要创新概述 “; - «
Kubernetes 1.12:主要创新概述 “; - «
Kubernetes 1.11:主要创新概述 “; - «
Kubernetes 1.10:主要创新概述 “。
来源: habr.com