广州网站推广哪家强,网站为什么要备案登记,建个免费的销售网站好,普宁网站建设一、cgroup v2 有哪些优势#xff1f;
Linux 中有两个 cgroup 版本#xff1a;cgroup v1 和 cgroup v2。cgroup v2 是新一代的 cgroup API。Kubernetes 自 v1.25 起 cgroup2 特性正式 stable。cgroup v2 提供了一个具有增强资源管理能力的统一控制系统#xff0c;cgroup v2…一、cgroup v2 有哪些优势
Linux 中有两个 cgroup 版本cgroup v1 和 cgroup v2。cgroup v2 是新一代的 cgroup API。Kubernetes 自 v1.25 起 cgroup2 特性正式 stable。cgroup v2 提供了一个具有增强资源管理能力的统一控制系统cgroup v2 对 cgroup v1 进行了多项改进例如 API 中单个统一的层次结构设计 更安全的子树委派给容器 更新的功能特性 例如压力阻塞信息Pressure Stall InformationPSI 跨多个资源的增强资源分配管理和隔离 统一核算不同类型的内存分配网络内存、内核内存等 考虑非即时资源变化例如页面缓存回写 一些 Kubernetes 特性专门使用 cgroup v2 来增强资源管理和隔离。例如MemoryQoS 特性改进了内存 QoS 并依赖于 cgroup v2 原语。
二、使用 cgroup v2 前提
cgroup v2 具有以下要求 操作系统发行版启用 cgroup v2 Ubuntu从 21.10 开始推荐 22.04 Debian GNU/Linux从 Debian 11 Bullseye 开始 Fedora从 31 开始 RHEL 和类似 RHEL 的发行版从 9 开始 Linux 内核为 5.8 或更高版本 容器运行时支持 cgroup v2。例如 containerd v1.4 和更高版本 cri-o v1.20 和更高版本 kubelet 和容器运行时被配置为使用 systemd cgroup 驱动。
三、使用 cgroup v2
① 启用并检查 Linux 节点的 cgroup v2
以 Debian 11 Bullseye containerd v1.4 为例Debian 11 Bullseye 默认已启用 cgroup v2可以通过如下命令验证
stat -fc %T /sys/fs/cgroup/对于 cgroup v2输出为 cgroup2fs。对于 cgroup v1输出为 tmpfs。如果没有启用可以通过在 /etc/default/grub 下的 GRUB_CMDLINE_LINUX 中添加 systemd.unified_cgroup_hierarchy1 然后执行 sudo update-grub。如果是树莓派, 标准 Raspberry Pi OS 安装时不会启用 cgroups需要 cgroups 来启动 systemd 服务。可以通过将 cgroup_memory1 cgroup_enablememory systemd.unified_cgroup_hierarchy1 附加到 /boot/cmdline.txt 来启用 cgroups并重启生效。
② kubelet 使用 systemd cgroup 驱动
kubeadm 支持在执行 kubeadm init 时传递一个 KubeletConfiguration 结构体。KubeletConfiguration 包含 cgroupDriver 字段可用于控制 kubelet 的 cgroup 驱动。在版本 1.22 中如果用户没有在 KubeletConfiguration 中设置 cgroupDriver 字段 kubeadm init 会将它设置为默认值 systemd。这是一个最小化的示例其中显式的配置了此字段
# kubeadm-config.yaml
kind: ClusterConfiguration
apiVersion: kubeadm.k8s.io/v1beta3
kubernetesVersion: v1.21.0
---
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
cgroupDriver: systemd这样一个配置文件就可以传递给 kubeadm 命令
kubeadm init --config kubeadm-config.yamlKubeadm 对集群所有的节点使用相同的 KubeletConfigurationKubeletConfiguration 存放于 kube-system 命名空间下的某个 ConfigMap 对象中。执行 init、join 和 upgrade 等子命令会促使 kubeadm 将 KubeletConfiguration 写入到文件 /var/lib/kubelet/config.yaml 中 继而把它传递给本地节点的 kubelet。
③ containerd 使用 systemd cgroup 驱动
编辑 /etc/containerd/config.toml:
[plugins.cri.containerd.runtimes.runc.options]SystemdCgroup true四、升级监控组件以支持 cgroup v2 监控
cgroup v2 使用一个与 cgroup v1 不同的 API因此如果有任何应用直接访问cgroup 文件系统 则需要将这些应用更新为支持 cgroup v2 的版本。例如 一些第三方监控和安全代理可能依赖于 cgroup 文件系统要将这些代理更新到支持 cgroup v2 的版本。 如果以独立的 DaemonSet 的形式运行 cAdvisor 以监控 Pod 和容器 需将其更 新到 v0.43.0 或更高版本。 如果使用 JDK推荐使用 JDK 11.0.16 及更高版本或 JDK 15 及更高版本 以便 完全支持 cgroup v2。
五、总结
Kubernetes 自 v1.25 起 cgroup2 特性正式 stablecgroup2 相比 cgroup v1 有以下优势: API 中单个统一的层次结构设计 更安全的子树委派给容器 更新的功能特性 例如压力阻塞信息Pressure Stall InformationPSI 跨多个资源的增强资源分配管理和隔离 统一核算不同类型的内存分配网络内存、内核内存等 考虑非即时资源变化例如页面缓存回写 推荐在使用 Kubernetes v1.25 及以上版本时使用支持 cgroup v2 的linux 和 CRI并启用 Kubernetes 的 cgroup v2 功能。