OpenKruise v1.0:云原生应用自动化达到新的高峰

云原生应用自动化管理套件、CNCF Sandbox 项目 — OpenKruise,近期发布了 v1.0 大版本。

OpenKruise [1] 是针对 Kuber优先级是什么意思netes 的增强能力套件,聚焦于云原生开源节流应用的部署、升级、运维、优先级反转稳定性apple防护等领域。所有的功能都通过 CRD 等apprecgitiiate标准方式扩展,可以适优先级是什么意思用于 1.16 以上版本的任意 Kubegithubhttps域名rnetes 集群。单条 helm 命令即可完成 Krgithub永久回家地址uise 的一键部署,无需更多配置。

OpenKruise v1.0:云原生应用自动化达到新的高峰

总得来appear看,目前 OpenK开源ruise 提供的能力分为几个领域:

  • 应用工作负载: 面向无状态、有状态、daemon 等多种类giti轮胎型应用的高级部署发布策略,例如原地升级、灰度流式发布等。
  • Sidecar 容器管理:gitlab 支持独立定义 sidecar 容器,完成动态注入、独立原地升级、热升级等功能。
  • 增强运维能力: 包括容器原地重启、镜像预拉取、容器启动顺序保障等优先级调度算法
  • 应用分区管理: 管理应用在多个分github是干什么的区(可用区、不同机appear型等)上的部署比例、顺序、优先级开源代码网站github
  • 应用安全防护: 帮助应用在 Kubernetes 之上获得更开源中国高的安全性保障与可用性防护。

版本解析

在 v1.0 大版本中,OpenKruisegithub中文官网网页 带来了多种新的特性,同时也开源阅读app下载安装对不少优先级c语appetite已有功能做了增强与优化。

首先要说的是,从 v1.0 开始 Ophttps和http的区别enKruise 将 CRD/WehhookConfiguration 等资源开源配置git命令的版本从v1beta1升级到v1 ,因此可以支持 Kubernetes v1.22 及以上版本的集群,但同时也要求 Kube优先级排序rnetes 的APP版本不能低于 v1.16开源阅读

以下对 v1.0 的部分功能做简要介绍,详细的 ChappetiteangeLog 列表请查看 Opengithub永久回家地址Kruise Github 上的 release 说明以及官网文档。

支持环境变量原地升级

Author: @FillZpp [2]

OpenKrui开源节流se 从早期版本开始就支持了 “原地升级”开源代码网站github 功能,主要应用于 CloneSet 与git教程 Adappstore优先级英文vanced StatefulSet 两种工作开源负载上。简单来说,原地升级使得应用在升级的过程中,不需要删除、新建 Pod 对象,而是通过开源节流对 Pod 中容器配置的修改来达APP到升级的目的。

OpenKruise v1.0:云原生应用自动化达到新的高峰

如上图所示,原地升级过程中只修github改了 Pod 中的字段,因此:

  1. 可以避免如github是干什么的调度、分配 IP、分配、挂载盘等额外的操作和代价。
  2. 更快的镜像拉取,因为优先级英文开源复用已有旧镜像的大部分 layer 层,只需要拉取开源矿工新镜像变化的一些 layegithub中文官网网页r。
  3. 当一个容器在原地升级时,Pod 的网络、挂载盘、以及 Papproachod 中的其他容器不会受到影响,仍然维持运行。

然而,OpenKruise 过去只能对 Pod 中 imagitlabg开源软件e 字段的更新appointment做原地升级,对于其https协议他字段仍然只能采用与 DepHTTPSloyment 相似的重建升级。一直以来,appearapple们收到很多用户反馈,希望支持对 env 等更多字段的原gitlab地升级 — 由于受到 kube-apisgithuberappstorever 的限制,这是很难做到的。

经过我们的不懈努力,OpenKruise 终于在appreciate v1.0 版本中,https安全问题支持了通过 Downward API 的开源节流方式支持了 env 环境变量的原地升级。例如对优先级英文以下 CloneSet YAML,用优先级英文户将配置定义在 annotation 中并关联到对应 env 中。后续在修改配置时,只需要更新 agithub中文官网网页nnotation value开源节流 中的值,Kruise 就会对 Pod 中所有 env 里引用了这个https认证 ann优先级调度算法otation 的容器触优先级开源众包发原地重建优先级越小越优先吗,从优先级反转而生效这个新的apple value 配置。

apiVersion: apps.kruise.io/v1alpha1
kind: CloneSet
metadata:
  ...
spec:
  replicas: 1
  template:
    metadata:
      annotations:
        app-config: "... the real env value ..."
    spec:
      containers:
      - name: app
        env:
        - name: APP_CONFIG
          valueFrom:
            fieldRef:
              fieldPath: metadata.annotations['app-config']
  updateStrategy:
    type: InPlaceIfPossible

与此同时,我们在这个版本中也去除了过去对镜开源阅读像原appearance地升级的imageID限制,即支持相同 ima开源github是干什么的阅读geID 的两个镜像替换升级。

具体使用方式请参考文优先级队列[3]

配置跨命名空间分发

Author:@veophi [4]

在对 SGitecret开源阅读app下载安装、ConfigMap 等 namespace-sco开源阅读app下载安装ped 资源进行跨 namespace 分发及同步的场景httpshttps认证域名中,原生 kuberngitietes 目前只支持appetite用户 one-by-o开源众包ne 地进行手动分发与同步,十分地不方便。

典型的案例有:

  • 当用户需要使开源是什么意思用 Sidecgithub永久回家地址arSet 的 imag开源中国ePullSecrets 能力时,要先重复开源阅读app下载安装地在相关 nhttps和http的区别amhgit教程ttps域名espappreciateaces 中创开源矿工建对应的 Secret,并且需要确保这些 Secret 配置的正确性和一致性。
  • 当用git教程户想要采用 CgitionfigMap 来配置一些通用的环境变量时,往往需要在多个 namespaces 做 ConfigMap 的下发,并且后续的修改往往也要求多 namespaces 之gihttps和http的区别t命令间保持同步。

因此,面对这些需要跨 namespaces 进行资源分发和多次同步的场景,开源矿工我们期望一种更便捷的分发和同步工具来自动化地去做这件事,为此我们设计开源矿工并实giti轮胎现了一个新的 CRD开源代码网站github优先级反转Re优先级是什么意思sourceDistribution

ResourceD优先级反转istribution 目前支持 SecapplicationretCo开源阅读app下载安装nfigMap 两类资源的分发appointment和同步。

apiVersion: apps.kruise.io/v1alpha1
kind: ResourceDistribution
metadata:
  name: sample
spec:
  resource:
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: game-demo
    data:
      ...
  targets:
   namespaceLabelSelector:
      ...
    # or includedNamespaces, excludedNamespaces

如上述 YAhttps安全问题ML 所示,ResourceDistribution开源节流什么意思 是一类 cluster-scoped 的 CRD,其主要git教程由resource和targets两个字段构成,其中resource字段用于描述用户所开源节流要分发的资源,t开源节流argets字段用于描述用户所要分发的目标命名空间。

具体使用方式请参考文档appreciate [5]

容器启动顺序控制

Author: @Concurrensee [6]

对于 Kub优先级c语言erngithub永久回家地址etes 的一个优先级调度算法 Pod,其中的多个容器可能存在https和http的区别依赖关系,比如开源 容器 B 中应用进程的运行依赖于 容器 A 中的应用。因此gitee,多个容器之间存在顺序关系的需求:

  • 容器 A 先启动,启开源中国先级c语言动成功后优先appointment级最高的运算符才可以启动 容器 B
  • 容器 B 先退出,退出完成后才可以停止 容器gitee A

通常来说 Pod 容器的启动和退出顺序是由 Kubelet 管理的优先级。Kubapplee优先级最高的运算符rnetes 曾经有一个 KEP 计划在 container 中增加一个 type 字段来标识不同类型容器的启停优先级github中文官网网页。但是由于 sig-node 考虑到对现有代码架github开源阅读的改apprec优先级英文iate动太大,目前这个 KEP 已经被拒绝了。

因此,OpenKruise 在 v1.0 中提优先级供了名为 Containerappearance Launch Priority 的功能,用于控制一个 Pod 中多个appointment容器的强制application启动顺序:

  1. 对于任意一个 Podhttps和http的区别 对象,只需要在 annotations 中定义apps.kgitiruise.io/cont开源a开源阅读iner-launch-p开源是什么意思riorhttps域名ithttps认证y: Ordered,则 Kruise 会按照 Pod 中containers容器列表的顺序来保证其中容器的串git命Git行启动。

  2. 如果要自定义containers中多个容器的启动顺序,则在容器 env 中添加KRUISE优先级_appearCONTAINER_PRI优先级调度算法ORITY环境变量,value 值是优先级是什么意思范围在[-2147483647, 2147483647]的applicagithub永久回家地址tion开源代码网站githubhttps安全问题数。一个容器的 prioriappointmentty 值越大,会保证越先启动。approve

具体使用方式请参考文档 [7]

kubectl-kruise 命令行工具

Author: @hantmac [8]

过去 OpenKruise 是通过 kruise-api、client-java 等仓库提供了 Go、Java 等语言appointment的 Krui优先级树se API 定义以及客户端封装,可供用户在自己的应用程序中引入使用。但仍然有不少用户在测试环境下需要灵活地用命令行操作 workload 资源。

然而原生kubecAPPtl工具提供的rollout、set image等命令只能适用于原生的 workload 类型,如 D开源阅读eploymenappeart、StatefulSet,并不能识别 Op优先级树enKruise 中扩展的 workloa开源d 类型。

因此,OpenKruise 最新提供了kubegithub中文官网网页ctl-appointmentkruise命令行工具,它是kubectl的标准优先级appear是什么意思appear件,提供了许多适用于 OpenKruise worklogitlabad 的功能。

# rollout undo cloneset
$ kubectl kruise rollout undo cloneset/nginx
#  rollout status advanced statefulset
$ kubectl kruise rollout status statefulsets.apps.kruise.io/sts-demo
# set image of a cloneset
$ kubectl kruise set image cloneset/nginx busybox=busybox nginx=nginx:1.9.1

具体使用方式请参考文档 [9]

其余部分功能改进与优化

CloneSetgiti:

  • 通过scaleStrategy.maxUnavailable策略支持流式扩容
  • Stable revision 判断逻辑变化,当git命令所有 Pod 版本与优先级Git updateRevision 一致时则标记为 currentRe开源众包vision

WorkloadSphttps协议read:

  • 支持接管存量 Pod 到匹配的 subse优先级英文t 分组中
  • 优化 webhook 在 Pod 注入时的更新与重试逻辑优先级排序

Advanced DaemonappearSet:

  • 支持对 Daemon PoAPPd 做原地升级
  • 引入 progressive annotation 来选择是否按 partapproachition 限制 PoAPPd 创建

SidecarSappleet:开源矿工

  • 解决 Side开源阅读carSet 过滤屏蔽 inactive Pod
  • 在transferenv中新增SourceCont优先级队列ainerNameFrom和EnvNames字段,来解决 container name 不一致与大量 env 情况下的冗余问题

PodUnavailableBudget:优先级英文

  • 新增 “跳https域名过保护” 标识
  • PodUnavailableBudget controller 关applicationgiti workload 工作负载的 replicashttps协议 变化

NodeImage:

  • 加入–nodeimage-giticreation-delay参数,并默认等待新增 Node ready 一段时间后同步创建 NodeImage

U优先级英文nitedDeploymapplicationent:

  • 解决NodeSelegiti轮胎ctorgiti轮胎Terms为 niappetitel 情况下 PodNodeSelectorTerms长度为 0 的git命令问题

Ohttps域名ther optimization:

  • kruise-dahttps协议emon 采用 protobuf 协议操作 Pod 资源
  • 暴露 cache resync 为命令行参数,并在 chart 中设优先级是什么意思置默认值为 0
  • 解决 certs 更新时的 htgiti轮胎tp checkeAPPr 刷新问题
  • 去除对 forked controller-tools 的依赖,改为gitgitihub是干什么的https协议使开源阅读app下载安装用原生 cgitionthttps和http的区别roller-tools 配合 markers 注解

社区参与

非常欢开源是什么意思迎你通过 Githubhttps安全问题/https和http的区别Sl开源代码网站githuback/钉钉/微信 等方https安全问题式加入我们来参与 OpenK优先级c语言ruise 开源github是干什么的社区。你是否已经有一些希望与我们社区交流的内容呢?可以在我们的社区双appstore周会github是干什么的 [10] 上分https协议github中文官网网页你的approach声音,或通过以下渠道参与讨论:

  • 加入社区Sla开源代码网站githubck channel [11] (English)
  • 加入社区钉钉群:搜索群号 2333076https和http的区别2 (Chinese)
  • 加入社区微信群:添加用户 openkruise 并让机器人拉你入群github永久回家地址 (ChineHTTPSse)

参考资料

[1]OpenKruise:

​​https://openkru优先级调度算法ise优先级英文.io​​

[2]@FillZpp:

​​https://github.com/FillZpp​​

[3]文档:

/docs/core-concepts/inp优先级树approachl优先级是什么意思ace-update

[4]@veophi:

​​https://github.com/veophi​​

[5]文档:

/giti轮胎docsgithub/user-manuals/resourcedistribution

[6]@Concurrenseeapple:

​​httpappetites://github.com/Concur开源软件rensee​​

[7]文档:

/docs/usapproveer-manuals/cogithub中文官网网页ntaineappetiterlaunchpriority

[8]@hantmac:

​​https://github.优先级调度算法com/hantmagiteec​​

[9]文档:

/docs/cli-tool优先级/kubectl-plugin

[10]社区双周会:

​​https://shimo.im/docs/gXqmeQOYBehZ4vhttps认证qHTTPSo​​

[11]Slack channel:

applehttps://kubernetes.slack.com/channels/opeappstorenkruise​​

戳​​原文​​,查看 OpenKruise 项目官approach方主页与文档!

发表评论

提供最优质的资源集合

立即查看 了解详情