容器 K8S Docker Kata 学习(一)

Kubemetes:

Kubemetes使用 Linux容器技术来提供应用的隔离,所以在钻研 Kubemetes之前, 需要通过熟悉容器的基本知识来更加深入地理解 **Kubemetes,**包括认识到存在的容 器技术分支, 诸如 Docker或者 rkt

什么是容器:

用 Linux 容器技术隔离组件:

开发者不是使用虚拟机来隔离每个微服务环境 (或者通常说的软件进程), 而是正在转向 Linux容器技术。 容器允许你在同一台机器上运行多个服务, 不仅提不同的环境给每个服务, 而且将它们互相隔离。 容器类似虚拟机, 但开销小很多。
一个容器里运行的进程实际上运行在宿主机的操作系统 上, 就像所有其他进程一样(不像虚拟机, 进程是运行在不同的操作系统上的)。但在容器里的进程仍然是和其他进程隔离的。 对于容器内进程本身而言, 就好像是在机器和操作系统上运 行的唯一一个进程。

容器实现隔离机制:

用 Linux 命名空间隔离进程:
使每个进程只看到它自己的系统视图(文件、进程、网络接口、主机名等)
限制进程的可用资源:
Linux控制组 (cgroups), 限制了进程能使用的资源量 (CPU、 内存、 网络带宽等)

Docker

Docker 是一个打包、分发和运行应用程序的平台。
正如我们所说,它允许将你的应用程序和应用程序所依赖的整个环境打包在一起 。这既可以是一些应用程序需要的库 ,也可以是一个被安装的操作系统所有可用的文件。 Docker 使得传输这个包到一个中央仓库成为可能,然后这个包就能被分发到任何运行 Docker 的机器上,在那儿被执行(大部分情况是这样的,但并不尽然)。

三个主要概念组成了这种情形:
镜像: Docker镜像里包含你打包的应用程序及其所依赖的环境。
镜像仓库: Docker镜像仓库用于存放Docker镜像,以及促进不同人和不同电脑之间共享这些镜像。
容器: Docker容器通常是一个Linux容器,它基于Docker镜像被创建。一个运行中的容器是一个运行在Docker主机上的进程,但它和主机,以及所有运行在主机上的其他进程都是隔离的。这个进程也是资源受限的,意味着它只能访问和使用分配给它的资源(CPU、内存等)

docker 与 虚拟机:

Kata Containers:

Kata源自希腊文Καταπστευμα(ka-ta-PI-stev-ma) ,原意是值得信任的人,kata container正是解容器安全的问题而诞生的。传统的容器是基于namespace和cgroup进行隔离 ,在带来轻量简洁的同时,也带来了安全的隐患。事实上容器虽然提供一个与系统中的其它进程资源相隔离的执行环境,但是与宿主机系统是共享内核的,一旦容器里的应用逃逸到内核,后果不堪设想,尤其是在多租户的场景下。

Kata就是在这样的背景下应运而生,kata很好的权衡了传统虚拟机的隔离性、安全性与容器的简洁、轻量 。这一点和firecracker很相似,都是轻量的虚拟机。但是他们的本质的区别在于:kata虽然是基于虚机,但是其表现的却跟容器是一样的,可以像使用容器一样使用kata;而firecracker虽然具备容器的轻量、极简性,但是其依然是虚机,一种比QEMU更轻量的VMM,暂时不能兼容容器生态。

Kata的基本原理是,为每一个容器单独开一个虚机(如果是k8s下作为runtime,则是一个pod对应一个虚机而不是容器),具有独立的内核,这样交付的容器就具备了虚机级别的隔离和安全性。

参考:《Kubernetes in Action》

相关推荐
2301_794333917 小时前
实验室服务器配置|通过Docker实现Linux系统多用户隔离与安全防控
linux·服务器·docker·实验室
JCGKS8 小时前
Docker|“ssh: connect to host xxx.xxx.xxx.xxx port 8000: Connection refused“问题解决
docker·ssh·端口·listen·tcp三次握手
惜.己8 小时前
Docker启动失败 Failed to start Docker Application Container Engine.
spring cloud·docker·eureka
scugxl9 小时前
centos7 docker离线安装
运维·docker·容器
计算机小手11 小时前
AI 驱动数据分析:开源 SQLBot 项目探索,基于大模型和 RAG 实现精准问数与图表挖掘
经验分享·docker·开源软件
AI大模型11 小时前
基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程
docker·llm·deepseek
张璐月13 小时前
go docker-compose启动前后端分离项目 踩坑之旅
开发语言·docker·golang
剑客的茶馆14 小时前
新服务器从0开始搭配Ubuntu+Conda+Docker+Dify
服务器·ubuntu·docker·conda·dify
落日漫游15 小时前
K8s资源管理:高效管控CPU与内存
java·开发语言·kubernetes
肖祥15 小时前
CloudBeaver轻量级的云数据库管理工具
docker·运维开发