问题标签 [gvisor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
422 浏览

kubernetes - 无法获取 cpu pod 指标,k8s-containerd-containerd-shim-runsc-v1-gvisor

我从 gvisor-containerd-shim (Shim V1) 迁移到 containerd-shim-runsc-v1 (Shim V2)。在 gvisor-containerd-shim 的情况下,指标服务器和 Horizo​​ntal Pod Autoscaler 过去工作得很好。

但是现在,使用 containerd-shim-runsc-v1,我不断获得节点和 runc pod 的 CPU 和内存指标,但我只获得 runc (gvisor) pod 的内存指标。

例如,我使用 containerd-shim-runsc-v1 在 gvisor pod 中部署了一个 PHP 服务器。我得到以下指标:

在向 php-apache-gvisor pod 发送一些负载后,我可以看到节点和 runc pod(负载生成器)的 CPU 和内存使用增量。我还可以看到 php-apache-gvisor 的内存从 52 Mi 增加到 72 Mi,但它的 CPU 使用率保持在 0%。为什么cpu使用率一直保持在0%?

我也尝试了不同的容器图像,但我一直得到相同的结果。

随着负载,我得到以下指标:

更多信息:

kubeadm,kubernetes 1.15.3,containerd 1.3.3,runsc nightly/2019-09-18,法兰绒

/etc/containerd/config.toml (containerd-shim-runsc-v1)

/etc/containerd/config.toml (gvisor-containerd-shim)

指标服务器 yaml 基于https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml,具有以下参数

当前部署具有以下资源部分

0 投票
1 回答
157 浏览

kubernetes - 为什么基于 gvisor 的节点池可能无法正确引导?

我正在尝试使用 GKE 中的 gvisor 沙盒配置一个新的节点池。我使用 GCP Web 控制台添加新节点池,使用cos_containerd操作系统并选中 Enable gvisor Sandboxing 复选框,但每次配置节点池都会失败,并在 GCP 控制台通知中显示“未知错误”。节点永远不会加入 K8S 集群。

GCE VM 似乎可以正常启动,当我查看journalctl节点时,我看到它cloud-init似乎已经完成得很好,但是 kubelet 似乎无法启动。我看到这样的错误消息:

我不太确定是什么原因造成的,我真的很希望能够对这个节点池使用自动缩放,所以我不想只为这个节点手动修复它,而对任何新节点都必须这样做加入的节点。如何配置节点池,以便基于 gvisor 的节点自行配置?

我的集群详细信息:

  • GKE 版本:1.17.9-gke.6300
  • 集群类型:区域
  • VPC 原生
  • 私有集群
  • 屏蔽 GKE 节点
0 投票
0 回答
72 浏览

kubernetes - Kubernetes 中带有 runsc 的不受信任的工作负载 - 挂起?

我一直在跟进本教程,并且能够在 aws 环境中创建 K8S 集群,直到这一步https://github.com/prabhatsharma/kubernetes-the-hard-way-aws/blob/master/docs/13 -smoke-test.md。一切正常,但工作负载不受信任。不受信任的工作负载容器挂起在其挂起状态。

似乎 runsc (gVisor) 未完全配置为不受信任的工作负载运行时。虽然 toml 文件包含这个推荐的配置:

我可以通过启动以下命令来查看正在运行的容器:

0 投票
0 回答
52 浏览

c++ - boost::filesystem 在 Google Cloud Run 中不起作用(使用 gVisor)

我创建了一个ubuntu:focal带有 C++ 应用程序的 docker 容器 (),该应用程序使用boost::filesystem(v1.76.0) 在处理数据时创建一些目录。如果我在本地运行容器,它可以工作,但在部署到 Cloud Run 时它会失败。

一个简单的语句,如

“无效参数'/current/path/here'”而失败。它在这个 C++ 应用程序中不起作用,但在运行等效语句的 Python 应用程序中,它确实起作用。

阅读文档我可以看到 Cloud Run 正在使用 gVisor 并且并非所有系统调用都得到完全支持(链接:https ://gvisor.dev/docs/user_guide/compatibility/linux/amd64/ ),但我希望简单调用工作:检查目录是否存在,创建目录,删除,...

也许我在部署容器时做错了什么。有没有办法解决它?我可以使用任何boost配置来防止它使用某些系统调用?

谢谢你的帮助!

0 投票
0 回答
12 浏览

gvisor - 循环测试不与 gVisor 运行时一起运行

我正在尝试使用 cyclictest 对 gVisor 容器中的 CPU 延迟进行基准测试:

docker run --privileged -it --runtime=runsc --cpus=4 --memory="8192m" leap-runsc /bin/bash

我正进入(状态:

显然我正在运行一个特权容器,以 root 用户身份登录到 shell。runc等方面没有问题kata-runtime

有没有办法在 gVisor 中运行循环测试?

0 投票
1 回答
226 浏览

google-cloud-platform - 如何在 Google Cloud Run 上使用 gVisor 运行不受信任的代码?

根据 Google Cloud Run docs for the new 2nd gen runtime environment,支持使用 gVisor 运行不受信任的代码(据我所知,由于第二代的 gVisor 已不再适用)。我想在 Google Cloud Run 上下文中使用 gVisor 以使用 gVisor (作为子进程)以编程方式运行不受信任的二进制文件 - 但是,我真的没有找到任何关于如何这样做的文档,并且想知道我是否必须以某种方式独立使用 docker-in-docker 或 gVisor。

对此的任何提示都将受到高度赞赏。

0 投票
0 回答
5 浏览

gvisor - GVisor 映射视频设备.runsc?

如何在 gvisor 中映射视频环回或实际视频设备?

由于它是用户空间挂载类型绑定应该可以工作。

Gofer 能够为安装在 rootfs 下的 /dev/video0 提供服务,但是当哨兵尝试在 /dev 文件夹下映射时失败。

device 是 linux 下的一个文件,假设应该可以在 GVisor 中使用绑定选项映射设备