kubernetes gVisor 安全沙箱运行容器(RuntimeClass)

这篇具有很好参考价值的文章主要介绍了kubernetes gVisor 安全沙箱运行容器(RuntimeClass)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

开头语

写在前面:如有问题,以你为准,

目前24年应届生,各位大佬轻喷,部分资料与图片来自网络

内容较长,页面右上角目录方便跳转

基础

容器的应用程序可以直接访问Liux内核的系统调用,容器在安全隔离上还是比较弱,虽然 内核在不断地增强自身的安全特性,但由于内核自身代码极瑞复杂,CVE漏洞层出不穷。

所以要想减少这方面安全风险,就是做好安全隔离,阻断容器内程序对物理机内核的依赖。

Google开源的一种gVisor容器沙箱技术就是采用这种思路,gVisorl隔离容器内应用和内核之间访

问,提供了大部分Linux内核的系统调用,巧妙的将容器内进程的系统调用转化为对gViso的访问。

资料

https://github.com/google/givsor

https://gvisor.dev/docs/

https://gvisor.dev/docs/user_guide/quick_start/kubernetes/

https://cloud.tencent.com/developer/article/1825487

原理

Kubernetes的Kata Containers 与 gVisor - ghostwritten | 血衫非弧の一存

像一个中间件的方式,容器与系统之间加层隔离

code = unknown desc = runtimehandler

gVsior 能否能够平滑处理的是容器的系统调用,可能有一些应用程序无法适配,且会有一定性能损耗

架构

code = unknown desc = runtimehandler

安装(docker 有问题)

使用docker,k8s跑不了pod

  Warning  FailedCreatePodSandBox  2s (x4 over 37s)        kubelet  Failed to create pod sandbox: rpc error: code = Unknown desc = RuntimeHandler "runsc" not supported

注意每个node都要进行安装

https://github.com/google/gvisor/releases/tag/

https://gvisor.dev/docs/user_guide/install/

要先科学上网

ARCH=$(uname -m)

URL=https://storage.googleapis.com/gvisor/releases/release/latest/${ARCH}

wget ${URL}/runsc 

wget ${URL}/containerd-shim-runsc-v1

chmod a+rx runsc containerd-shim-runsc-v1         

sudo mv runsc containerd-shim-runsc-v1 /usr/bin

runsc 集成 docker

[root@master gvisor]# cat /etc/docker/daemon.json

{

    "registry-mirrors": [

        "http://hub-mirror.c.163.com",

        "https://docker.mirrors.ustc.edu.cn",

        "https://registry.docker-cn.com",

        "https://9cpn8tt6.mirror.aliyuncs.com"

    ],

    "exec-opts": ["native.cgroupdriver=systemd"]

}

[root@master gvisor]# runsc install

2023/11/13 03:15:36 Runtime runsc not found: adding

2023/11/13 03:15:36 Successfully updated config.

[root@master gvisor]# cat /etc/docker/daemon.json

{

    "exec-opts": [

        "native.cgroupdriver=systemd"

    ],

    "registry-mirrors": [

        "http://hub-mirror.c.163.com",

        "https://docker.mirrors.ustc.edu.cn",

        "https://registry.docker-cn.com",

        "https://9cpn8tt6.mirror.aliyuncs.com"

    ],

    "runtimes": {

        "runsc": {

            "path": "/usr/bin/runsc"

        }

    }

}

[root@master gvisor]# systemctl restart docker

[root@master gvisor]# docker info | grep Runtimes

 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc runsc

# 可以看到已经支持 runsc

安装成功测试

[root@node2 k8s]# docker run -it --runtime=runsc nginx:1.17.2 dmesg

[    0.000000] Starting gVisor... # 从这个字段可以看出已经加载了gvisor

[    0.458236] Constructing home...

[    0.797653] Creating process schedule...

[    1.279727] Mounting deweydecimalfs...

[    1.513559] Recruiting cron-ies...

[    1.953258] Creating bureaucratic processes...

[    1.998313] Synthesizing system calls...

[    2.093768] Feeding the init monster...

[    2.373844] Checking naughty and nice process list...

[    2.380829] Waiting for children...

[    2.476625] Committing treasure map to memory...

[    2.618154] Setting up VFS...

[    2.709283] Setting up FUSE...

[    2.774159] Ready!

对比测试

[root@node2 k8s]# docker run -d --runtime=runsc nginx:1.17.2

4bd617fe4ebbd049b8e00cae3720551eb0c1f663e023f9dc5749c520230d74cd


[root@node2 k8s]# docker exec -it 4bd617fe4eb  bash

root@4bd617fe4ebb:/# uname -a

Linux 4bd617fe4ebb 4.4.0 #1 SMP Sun Jan 10 15:06:54 PST 2016 x86_64 GNU/Linux

[root@node2 k8s]# docker run -d  nginx:1.17.2

15a905a0ceef6ca90f4635e3c292b899b8bdc2b5b9f478fc956d268935b3f774

[root@node2 k8s]# docker exec -it 15a905a0ceef bash

root@15a905a0ceef:/# uname -a

Linux 15a905a0ceef 4.18.0-147.el8.x86_64 #1 SMP Thu Sep 26 15:52:44 UTC 2019 x86_64 GNU/Linux

由此可以看出没有使用gVisor的容器使用的内核和宿主机一样的

使用了gVisor的容器使用的时沙箱内核

其他配置

gVisor使用探索-CSDN博客

Containerd 集成

code = unknown desc = runtimehandler

RuntimeClass

是一个用于选择容器运行时配置的特性,容器运行时配置用于运行Pod中的容器

实操

apiVersion: node.k8s.io/v1 # RuntimeClass 定义于 node.k8s.io API组

kind: RuntimeClass

metadata:

  name: gvisor #用于引用 RuntimeClass 的名字

handler: runsc # 对应CRI 接口配置的名字
[root@master gvisor]# kubectl create -f rc-gvisor.yaml

runtimeclass.node.k8s.io/gvisor created

[root@master gvisor]# kubectl get runtimeclasses.node.k8s.io

NAME     HANDLER   AGE

gvisor   runsc     40s
apiVersion: v1

kind: Pod

metadata:

  name: nginx-gvisor

spec:

  runtimeClassName: gvisor # 引用上创建的运行时类名

  containers:

  - name: nginx

    image: nignx:1.17.1

报错,大概率是docker没办法使用,containerd  可以使用

code = unknown desc = runtimehandler 文章来源地址https://www.toymoban.com/news/detail-802587.html

到了这里,关于kubernetes gVisor 安全沙箱运行容器(RuntimeClass)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云原生Kubernetes:CRI 容器运行时接口

    目录 一、理论 1.​CRI 2.容器运行时层级 3.容器运行时比较 二、总结 (1)概念       Kubernetes Node (kubelet) 的主要功能就是启动和停止容器的组件,我们 称之为容器运行时( Container Runtime) ,其中最知名的就是 Docker 。为了 更具扩展性, Kubernetes 1.5 版本开始就加入了容器运行

    2024年02月09日
    浏览(35)
  • kubernetes和容器安全的7个关键特性

    Uptycs结合了针对Kubernetes和容器运行时的威胁检测,自动注册表扫描和Kubernetes硬化检查。 许多组织正在开始他们的Kubernetes和容器之旅,而其他组织在扩展部署规模时遇到了复杂性问题。容器化应用程序带来了许多好处,但也引入了新类型的安全挑战。 Uptycs通过将威胁、漏洞

    2024年02月09日
    浏览(31)
  • 【云原生 | Kubernetes 系列】— 部署K8S 1.28版本集群部署(基于Containerd容器运行)

    主机名 IP地址 备注 k8s-master01 192.168.0.109 master k8s-node1 192.168.0.108 node1 k8s-node2 192.168.0.107 node1 k8s-node3 192.168.0.105 node1 1、主机配置 2、升级内核 3、配置内核转发以及过滤 4、安装ipset ipvsadm,IPVS(IP Virtual Server)是一个用于负载均衡的 Linux 内核模块,它可以用来替代 kube-proxy 默认的

    2024年02月20日
    浏览(61)
  • 容器安全 - 利用容器的特权配置实现对Kubernetes攻击,以及如何使用 PSA 防范风险(视频)

    《OpenShift / RHEL / DevSecOps 汇总目录》 通过将运行 Pod 的 privileged 设为 true,容器就以特权模式运行在宿主机上。和普通容器相比,特权容器具有非常大的权限和能力。 容器被赋予所有能力 不屏蔽敏感路径,例如 sysfs 中的 kernel 模块 within Any sysfs and procfs mounts are mounted RW AppArm

    2024年02月04日
    浏览(34)
  • 【服务平台】Rancher运行和管理Docker和Kubernetes,提供管理生产中的容器所需的整个软件堆栈

    Rancher是一个开源软件平台,使组织能够在生产中运行和管理Docker和Kubernetes。使用Rancher,组织不再需要使用一套独特的开源技术从头开始构建容器服务平台。Rancher提供了管理生产中的容器所需的整个软件堆栈。 Rancher是供采用容器的团队使用的完整软件堆栈。它解决了在任何

    2024年02月13日
    浏览(57)
  • 云原生Kubernetes:K8S集群实现容器运行时迁移(docker → containerd) 与 版本升级(v1.23.14 → v1.24.1)

    目录 一、理论 1.K8S集群升级 2.环境 3.升级策略 4.master1节点迁移容器运行时(docker → containerd)  5.master2节点迁移容器运行时(docker → containerd)  6.node1节点容器运行时迁移(docker → containerd)  7.升级集群计划(v1.23.14 → v1.24.1) 8.升级master1节点版本(v1.24.1) 9.升级master2节点版本

    2024年02月03日
    浏览(60)
  • 【C站首发】全网最新Kubernetes(K8s)1.28版本探秘及部署 基于Containerd容器运行时(100年证书kubeadm)

    序号 操作系统及版本 备注 1 CentOS7u9 需求 CPU 内存 硬盘 角色 主机名 值 8C 8G 1024GB master k8s-master01 值 8C 16G 1024GB worker(node) k8s-worker01 值 8C 16G 1024GB worker(node) k8s-worker02 1.3.1 主机名配置 由于本次使用3台主机完成kubernetes集群部署,其中1台为master节点,名称为k8s-master01;其中2台为wor

    2024年02月08日
    浏览(54)
  • K8s进阶6——pod安全上下文、Linux Capabilities、OPA Gatekeeper、gvisor

    什么是安全上下文? 安全上下文(Security Context):K8s对Pod和容器提供的安全机制,可以设置Pod特权和访问控制。 官网参考链接 限制维度: 自主访问控制(Discretionary Access Control):基于用户ID(UID)和组ID(GID),来判定对对象(例如文件)的访问权限。 安全性增强的 Lin

    2024年02月11日
    浏览(41)
  • 云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行

    Kubernetes是一个开源的, 用于编排云平台中多个主机上的容器化的应用,目标是让部署容器化的应用能简单并且高效的使用, 提供了应用部署,规划,更新,维护的一种机制 。其核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着,管理员可

    2024年02月08日
    浏览(69)
  • 第30关 k8s容器运行时安全监控 - Falco

    ------ 课程视频同步分享在今日头条和B站 大家好,我是博哥爱运维。 我们前面讲到prometheus监控、K8S集群事件监控kube-eventer,这些都只是资源使用层面上的监控,对于集群的安全层面监控,我们也需要做好监控手段,避免类似黑客木马入侵事件发生。 这节课博哥给大家带来

    2024年01月23日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包