「K8S 生态周报」内容次要蕴含我所接触到的 K8S 生态相干的每周值得举荐的一些信息。欢送订阅知乎专栏「k8s生态」。

Kubernetes v1.22 曾经在明天正式公布了,这是 2021 年的第二个正式公布的版本。此版本中共蕴含 53 项加强更新,其中 13 项达到 stable,24 项达到 beta 还有 16 项为 alpha。当然,也有 3 项个性被标记为废除。

从往年的 4 月份,Kubernetes 的公布节奏由原来的每 3 个月一个版本批改成了每 4 个月一个版本,这也是第一个利用了此节奏的长周期版本。咱们一起来看看有哪些值得注意的变更吧!

Server-side Apply 个性达到 GA

Server-side Apply 这个个性次要指标是把逻辑从 kubectl apply 挪动到 kube-apiserver 中,这能够修复以后遇到的很多无关所有权抵触的问题。

还记得在之前的『K8S生态周报』中我曾为你介绍过 Kubernetes 新增的 .meta.managedFields 吗?Server-side Apply 以后就是通过此个性来跟踪对象字段的更改的。

同时此个性的益处在与你能够间接通过 API 实现申明式配置的操作,而无需依赖于特定的 kubectl apply 命令,比方间接通过 curl 即可实现。

此性能的用法如下:

kubectl apply --server-side [--dry-run=server]

Pod Security Policy 的替代品

PodSecurity admission controller 是在 Kubernets v1.21 中被废除的 Pod Security Policies 的替代品。

这个 admission controller 能够按 namespace 级别启用 Pod Security Standards ,能够有以下三种模式:

  • enforce: 违反策略的 Pod 将被回绝;
  • audit:违反策略的 Pod 将会增加审计正文,但其余状况下都容许;
  • warn:违反策略的 Pod 将会触发面向用户的正告;

可通过如下配置文件进行管制:

apiVersion: apiserver.config.k8s.io/v1kind: AdmissionConfigurationplugins:- name: PodSecurity  configuration:    defaults:  # Defaults applied when a mode label is not set.      enforce:         <default enforce policy level>      enforce-version: <default enforce policy version>      audit:         <default audit policy level>      audit-version: <default audit policy version>      warn:          <default warn policy level>      warn-version:  <default warn policy version>    exemptions:      usernames:         [ <array of authenticated usernames to exempt> ]      runtimeClassNames: [ <array of runtime class names to exempt> ]      namespaces:        [ <array of namespaces to exempt> ]

Node swap 反对

此个性当初是 Alpha 阶段。

尽管 swap 并不够快,然而当初有很多场景都是须要用到它的,尤其是一些 Java 和 Node 利用。

在 Kubernetes 的 issue 列表中有一个存在了 5 年左右的探讨,就是针对于是否开启 swap 反对的。以后这个个性一旦开启就是针对于整个 Node 的,并不能准确到某个 Pod 中。

你能够通过如下步骤启用此个性:

  • 在 Node 中启用 swap;
  • 开启 kubelet 的 NodeMemorySwap 个性;
  • 设置 --fail-on-swap=false
  • 可选在 Kubelet 的配置中减少 MemorySwap.SwapBehavior=UnlimitedSwap

更多内容可参考:https://github.com/kubernetes...

内部客户端凭证提供工具

这个性能容许 client-go 应用内部工具进行身份验证,比方 LDAP、Kerberos、OAuth2、SAML 等。这个个性是从 v1.10 开始引入的。

应用此个性的话,须要你在 kubeconfig 配置文件中作为 user 字段下的字段进行配置。比方:

apiVersion: v1kind: Configusers:- name: my-user  user:    exec:      command: "example-client-go-exec-plugin"      apiVersion: "client.authentication.k8s.io/v1beta1"      env:      - name: "FOO"        value: "bar"      args:      - "arg1"      - "arg2"            provideClusterInfo: trueclusters:...

user.exec字段下配置可用的 client-go-exec plugin 即可。当初也有一个示例我的项目可供参考 https://github.com/ankeesler/...

可索引的 Job API

在 Kubernetes v1.21 中新增的可索引 Job API 能够更加不便的调度并行化的 Job。你能够应用如下的形式通过环境变量让 Job 中的 Pod 晓得本人的索引:

[...]    spec:      subdomain: my-job-svc      containers:      - name: task        image: registry.example.com/processing-image        command: ["./process",  "--index", "$JOB_COMPLETION_INDEX", "--hosts-pattern", "my-job-{{.id}}.my-job-svc"]

为 Job API 减少 suspend 字段

自 v1.21 起,Job 能够通过设置 .spec.suspend=true 字段来长期的挂起。能够比拟不便的去进行管制,相似 Argo workflow 中,也能够对某个 workflow 进行挂起操作。

CSR 的有效期

通过在 CertificateSigningRequestSpec 中减少的 ExpirationSeconds 能够承受的最小值是 600(10分钟),这样就能够很好的管制其有效期了。当初默认的是 1 年。

内存资源的 QoS

之前 Kubernetes 在应用 cgroups v1 ,对于 Pod 的 QoS 其实只实用于 CPU 资源。Kubernetes v1.22 中通过引入 cgroups v2 来提供了一个 alpha 个性,容许对内存资源也提供 QoS。(如果没记错,貌似是腾讯云团队提交的 KEP 吧)

其余值得注意的变更,请参考之前公布的每期『K8S生态周报』及 《K8S 生态周报| Kubernetes v1.22.0-beta.0 公布》

当然,你也能够通过KIND 应用如下命令来疾速的体验 Kubernetes v1.22 :

kind create cluster --image=kindest/node:v1.22.0@sha256:b8bda84bb3a190e6e028b1760d277454a72267a5454b57db34437c34a588d047

欢送订阅我的文章公众号【MoeLove】