3

2022 NO.30 Open source weekly report

 2 years ago
source link: https://cloudsjhan.github.io/2022/07/24/2022-30-Open-source-weekly-report/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

2022 NO.30 Open source weekly report

2022-07-24

| weekly-report

|

|

| 832

|

3

2022 NO.30 开源周报

2022 年第 30 周,以下是本周的开源周报。

周中的时候在 OpenKruise 开源社区群里看到有开发者提到能不能在 kubectl-kruise 插件中提供一种便捷的方式,让用户能够快速使用 ContainerRecreateRequest 实现原地重启容器的能力。

005UfcOkly8h4izm1vc8hj30w40dyzlb.jpg

其实这个想法我在很久之前就有了,

005UfcOkly8h4j31omjpfj30s8060aap.jpg


当时搁置了一下就淹没在琐碎之中,详见这个 issue。趁着这周末的空闲,打算把这个功能实现一把。

ContainerRecreateRequest 是 OpenKruise 提供的一种运维增强的组件,可以帮助用户重启/重建存量 Pod 中一个或多个容器。
和 Kruise 提供的原地升级类似,当一个容器重建的时候,Pod 中的其他容器还保持正常运行。重建完成后,Pod 中除了该容器的 restartCount 增加以外不会有什么其他变化。

目前用户创建 CRR 实现容器原地重启的方式主要有两种方式:

  • kubectl apply -f crr.yaml
  • OpenKruise API

这两种方式对集群运维人员来说都不够友好,过于繁琐。最好的方式就是在 terminal 中使用一行命令就能创建 CRR 完成原地重启。而 Kruise-tools 为 Kruise 的功能提供了一系列命令行工具,包括 kubectl-kruise,它的是 kubectl 的标准插件。在这个插件中可以很容易集成该功能。(关于 kubectl-kruise 后面打算专门开一篇文章来详细介绍。)

首先我们需要保证输入的参数尽量少,其他的必须参数都给到合理的默认值,以便用户能够以最快的速度创建 CRR 重启容器,所以我在插件中定义了 CRR 的一个默认策略:

strategy:
failurePolicy: Fail
orderedRecreate: false
unreadyGracePeriodSeconds: 3
activeDeadlineSeconds: 300
ttlSecondsAfterFinished: 1800

确定最终的命令为:

kubectl kruise create ContainerRecreateRequest test-crr --pod=sample-k52bq --containers=nginx

执行这条命令就可以重启 pod sample-k52bq 中名字为 nginx 的容器,其中 --containers 为一个列表,如果为空就重启 pod 中所有的容器,否则重启指定容器。

除了 --pod--containers 还支持 unreadyGracePeriodSecondsterminationGracePeriodSeconds,这两个参数都是选填。

  • unreadyGracePeriodSeconds: 重建后新容器至少保持运行这段时间,才认为该容器重建成功
  • terminationGracePeriodSeconds: 等待容器优雅退出的时间,不填默认用 Pod 中定义的

相关的代码实现可以查看这个 PR

这部分代码合并后下周会 release 新版本,想要尝鲜的同学可以 clone 项目后自行编译。

这篇文章是 weekly-report 系列的第一篇,之所以开始这个系列,真是说来话长。差不多就是刚开始写 blog 的时候是想每周都输出一篇有点子质量的技术文章,发现这样太难了,一是没有这么多内容输出,二是很容易被其他杂事打乱,很难坚持。这次开始以开源周报的名义写每周的 blog,实际上是想以一种随意、自由的方式,输出一点东西,不计篇幅也不考究质量,只为记录,这样大概能坚持下去吧。

都说日拱一卒,我先周拱一卒。



About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK