K8S 生态周报| Kubernetes 公布两个全版本受影响的漏洞

news2024/9/22 9:39:11

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」[1]

大家好,我是张晋涛。

KIND v0.20.0 正式发布

KIND 是我一直参与,也日常一直在使用的项目,用于快速的在本地或者 CI 环境中启动 Kubernetes 集群。

上周新发布的 v0.20.0 版本有很多值得关注的内容:

Breaking Changes

当前 KIND 支持的最低版本的 Docker 更新到了 v20.10+ ,无论是服务器/CI 或者使用 Docker Desktop 的用户都可以比较容易的满足这个版本要求。

另外,如果是想要使用 KIND v0.20.0+ 版本构建 Node image 的话,要求主机是 cgroups v1 的环境, 这一点非常重要。比如我现在就无法在我本地用最新版来构建 Node image 了,我本地很早之前就已经设置成了默认 cgroups v2。

此外,默认的 Kubernetes 版本也更新到了 v1.27.3 。

最后,由于构建的 Node image 中 container runtime 使用的是 containerd,但是 containerd 弃用了其旧的 CRI mirrors 的配置方式,所以如果使用了 KIND 本地镜像仓库的用户 https://kind.sigs.k8s.io/docs/user/local-registry/ 请更新下自己使用的脚本。其中有一个 config_path 配置的更新。之后 KIND 应该也会逐步升级到使用 containerd v2.0 。

新特性和其他

  • kind build node-image 命令中对 Kubernetes 代码仓库位置的检索逻辑做了一些修改,按如下顺序:$(pwd), ${GOPATH}/src/k8s.io/kubernetes, ${GOPATH}/src/github.com/kubernetes/kubernetes

  • runc 升级到 1.1.7, containerd 升级到 1.7.1;

此外,给 kubelet 的 systemd service 默认设置了一个 KillMode=process 选项。这个事情我觉得比较值得聊一下:

KillMode 在 systemd service 配置文件中用于指定服务停止时进程终止的方式。以下是可用的选项:

  1. control-group(默认值):当服务停止时,systemd 将向整个控制组(cgroup)发送 SIGTERM 信号,包括主进程及其所有子进程。如果在指定的超时时间内进程仍未终止,将发送 SIGKILL 信号以强制终止它们;

  2. process:当服务停止时,systemd 仅向主进程发送 SIGTERM 信号。子进程不会受到影响,将继续运行。这也就是这次修改的主要内容,这样的话,主进程收到信号后可以做一些清理操作,进行优雅关闭;

  3. mixed:当服务停止时,systemd 向主进程发送 SIGTERM 信号,如果在指定的超时时间内主进程仍未终止,将发送 SIGKILL 信号以强制终止它,即使它没有优雅关闭;

  4. none:当服务停止时,systemd 不会发送任何信号。这意味着服务进程不会被强制终止,除非它们自己检测到服务停止并执行相应的操作。这种设置可能在某些特殊情况下有用,但通常不建议使用;

对于实际的部署时,建议在 Kubelet systemd service 中加上此配置项。

#上游进展

Kubernetes 公布了两个新漏洞 CVE-2023-2727 和 CVE-2023-2728

我在这里就直接把这两个一起来谈了。

简单来说都是绕过了 Admission plugin 的策略限制。如果对于 Kubernetes Adminssion 机制不太了解的小伙伴,可以看看我之前写的这篇 理清 Kubernetes 中的准入控制(Admission Controller) | MoeLove

具体而言,这两个漏洞触发的条件都包含了 Pod 使用 ephemeral containers(临时容器)的情况。如果通过审计日志未发现集群中使用此功能,则并未受到这两个漏洞的影响。

其中 CVE-2023-2727 也可以通过 Allowed Repositories | Gatekeeper Library 或者 Allowed Image Repositories | Kyverno 来进行防护。

这两个漏洞影响了之前的所有版本,并在如下版本进行了修复:

  • kube-apiserver v1.27.3

  • kube-apiserver v1.26.6

  • kube-apiserver v1.25.11

  • kube-apiserver v1.24.15

可以考虑进行升级。

如果 cgroups aware OOM killer 可用时将会启用

  • use the cgroup aware OOM killer if available by tzneal · Pull Request #117793 · kubernetes/kubernetes

Kubernetes 在 v1.25 中对 cgroups v2 的支持达到了 GA ,可参考我之前的文章 K8S 生态周报| Kubernetes v1.25.0 正式发布,新特性一览 | MoeLove

但是在 Linux 4.19 内核中对于 cgroups v2 还添加了一个 cgroup-aware OOM killer 的支持。这个功能允许 OOM killer 杀死整个 cgroup,而不仅仅是杀死内存使用最多的进程。这可以帮助防止内存碎片化,并确保系统保持稳定。关于 Linux 内核如何处理 OOM ,可以参考我之前的一篇文章 Docker 容器资源管理 - 知乎 ,简单来说就是在 torvalds/linux/mm/oom_kill.c 中有个 select_bad_process() 选择所谓的 bad 进程来杀掉。

回过头来看看 cgroup-aware OOM killer 首先计算 cgroups 中所有进程的总内存使用量,如果总内存使用量超过了cgroups 的内存限制,则 OOM killer 将会杀死该 cgroup。

cgroup-aware OOM killer 还考虑了每个进程在 cgroup 中的 oom_score。oom_score 是一个指示进程被 OOM killer 杀死可能性有多大的值。具有更高 oom_score 值的进程比具有较低 oom_score 值的进程更容易被杀死。

通过将 cgroup_enable_memory_accounting 内核参数设置为 1 即可启用 cgroup-aware OOM Killer 。大多数Linux发行版默认情况下启用此参数。

前面提到了它的好处有防止内存碎片化和确保系统保持稳定,但它也有一些可能的劣势,那就是如果整个 cgroup 被杀掉了,某些情况下可能导致数据丢失,另外,也可能导致不太好进行排查。

但整体来看,社区认为利大于弊,所以也就合并了这个 PR 。

感谢大家,我们下期再见!


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

0792390ae5548bdbe0280460dc2d9b22.png
TheMoeLove

参考资料

[1]

k8s生态: https://zhuanlan.zhihu.com/container

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/673682.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

强化学习:AI领域的下一步里程碑

第一章:引言 近年来,人工智能(AI)的快速发展引起了全球范围内的广泛关注。在AI的众多技术领域中,强化学习(Reinforcement Learning)作为一种类似于人类学习的方式,在解决复杂问题方…

VMware虚拟机中安装Ubuntu20.04小白教程

安装Ubuntu20.04 1.Ubuntu镜像下载2.配置Ubuntu 2.1创建新的虚拟机,进入新建虚拟机向导2.2选择自定义类型配置2.3选择硬件兼容性2.4选择稍后安装操作系统2.5选择客户机操作系统2.6命名虚拟机2.7处理器配置2.8 虚拟机内存2.9配置网络类型2.10选择I/O控制器类型2.11选…

webpakc原理之开发一个清除console.log(xxx)的loader

一、webpack中清除console的方法 当然想要清除console我们可以使用babel-loader结合babel-plugin-transform-remove-console插件来实现。 安装babel-loader和babel-plugin-transform-remove-console插件 npm install babel-loader babel-plugin-transform-remove-console -D…

TOGAF10®标准中文版--(阶段B — 业务架构)方法

4.5 方法 业务架构是能力、端到端价值交付、信息和组织结构的整体、多维业务视图的表示;以及这些业务视图和战略、产品、政策、计划和利益相关者之间的关系。 业务架构将业务元素与业务目标和其他领域的要素联系起来。 4.5.1 概述 业务架构知识是任何其他领域&a…

HIFUSE:用于医学图像分类的分层多尺度特征融合网络

文章目录 HIFUSE: HIERARCHICAL MULTI-SCALE FEATURE FUSION NETWORK FOR MEDICAL IMAGE CLASSIFICATION摘要本文方法实验结果 HIFUSE: HIERARCHICAL MULTI-SCALE FEATURE FUSION NETWORK FOR MEDICAL IMAGE CLASSIFICATION 摘要 在卷积神经网络(CNN)的…

Spring核心容器——从配置文件到注解开发 创建对象+成员变量赋值 增强方法

目录 引出Spring入门案例初识Spring入门案例1----用配置文件实现 Druid JDBCTemplate dao1.之前的方式:new对象2.用配置文件的方法把new对象交给Spring3.如果要用对象,从spring的容器中获取ac.getBean("userDao");4.实体类和dao层的代码--问…

NodeFormer:一种用于节点分类的可扩展图结构学习Transformer

文章目录 NodeFormer: A Scalable Graph Structure Learning Transformer for Node ClassificationAbstract方法General Model and Key ChallengesEfficient Learning Discrete Structures可微随机结构学习Input Structures as Relational BiasLearning Objective NodeFormer: …

网络的基础介绍

文章目录 1. 网络发展2. 认识 "协议"3. 网络协议初识3.1 协议分层 4. OSI七层模型4.1 TCP/IP五层(或四层)模型 5. 网络传输基本流程5.1 同一个网段内的主机文件传输5.2 认识MAC地址5.3 跨网段的主机文件传输 6. 数据包封装和分用 1. 网络发展 很早之前,计…

基于强化学习(Reinforcement learning,RL)的机器人路径规划MATLAB

一、Q-learning算法 Q-learning算法是强化学习算法中的一种,该算法主要包含:Agent、状态、动作、环境、回报和惩罚。Q-learning算法通过机器人与环境不断地交换信息,来实现自我学习。Q-learning算法中的Q表是机器人与环境交互后的结果&#…

[unity]Pico VR unity开发笔记(一)

Pico VR 开发笔记(一) XR Interaction Tooikit 版本 2.3.2 一、环境搭建 其实官方文档已经写的很详细了,这里只是不废话快速搭建,另外有一项官方说明有误的,补充说明一下,在开发工具部分说明 插件安装——…

深度学习基础——通过PyTorch构建神经网络实现1维/2维序列分类

文章目录 使用3层前馈神经网络使用循环神经网络生成pickle数据集构建RNN进行1维序列的训练、推理 使用3层前馈神经网络 通过PyTorch构建前馈神经网络,并对二维数据点进行分类。在该例子当中,所有的训练数据和测试数据都是通过高斯混合模型GMM生成的&…

网络 - 你可知 Telnet 能通但是 Ping 不通百思不得其解

问题描述 以前本人以为 telnet 通 ping 一定也是通的,telnet 能通,表示两台计算机之间建立了连接通道。理论上是能 ping 通的。 但是今天万万没想到,并不是这样... 原因分析 如果不能 ping 通,可能的原因是对方主机关闭了 ping…

MYSQL阶段_DAY01~DAY11(附笔记)

注意:(数据表如下) sort表: user表: zhangwu表: 1.Part1 JDBC操作数据库的步骤 1.注册驱动 告知JVM使用的是哪一个数据库的驱动, 把驱动类的对象交给DriverManager管理,用于…

一文理解MySQL的For Update行级锁

一文理解MySQL的For Update行级锁 引言一、MySQL的For Update简介1.1、For Update的作用1.2、For Update与其他锁定方式的区别 二、For Update的语法2.1、SELECT语句的基本语法2.2、mysql如何开启事务和提交事务?2.3、使用For Update进行数据锁定 三、如何使用For U…

王道计算机网络学习笔记(2)——物理层

前言 文章中的内容来自B站王道考研计算机网络课程,想要完整学习的可以到B站官方看完整版。 二:物理层 2.1.1:物理层基本概念 2.1.2:数据通信基本知识 1、数据通信模型和基本概念 通信目的是为了传递消息(消息&…

2022 年第十二届 MathorCup 高校数学建模挑战赛D题思路(移动通信网络站址规划和区域聚类问题)

目录 一、前言 二、问题背景 三、问题 四、解题思路 (1)针对问题1: (2)针对问题2: (3)针对问题3: 五、附上几个典型代码 (1)K-means算法…

6月16日,企业快成长技术创新论坛厦门站大数据专场开启!

全球大数据规模增长快速,2020年全球新增数据规模为64ZB,是2016年的400%,2035年新增数据将高达2140ZB1,大数据呈现指数级增长。随着数字经济的发展和数字化转型的深入,愈来愈多的数据资源正以数据要素的形态独立存在并参…

STM32F4_DS18B20红外温度传感器

目录 前言 1. 单总线时序结构 2. DS18B20结构 2.1 DS18B20操作流程 2.2 DS18B20数据帧 3. 温度存储格式 4. 硬件分析 5. 实验程序详解 5.1 main.c 5.2 DS18B20.c 5.3 DS18B20.h 前言 STM32F4内部集成了温度传感器。在之前的学习中,我们已经学习了使用AD进…

宁波天一永安杯初赛 wp-AGCTS战队

文章目录 MISCZipSimpleDocumentBeautifulImage WebDeserializationCodeCheck CryptoSecretRsa MobilePeacock pwnwingtip REPolenta MISC Zip ARCHPR 直接数字爆破,得到二进制密码,得 flag SimpleDocument Kali binwalk 发现里面有一 pdf 文件&#…

DRIFTINGBLUES: 3实战演练

文章目录 DRIFTINGBLUES: 3实战演练一、前期准备1、相关信息 二、信息收集1、端口扫描2、访问网站3、访问网页4、翻译内容5、访问网页6、翻译内容8、查看源码9、解密10、访问网页11、写入shell并登录12、连接shell13、查找nc14、反弹shell 三、后渗透1、进入家目录查找文件2、写…