Containerd2.0 升级分析
本文用于分析 containerd 如何升级到 2.0 版本。 containerd v2.0 在 2024.11.6 出了正式版本,也表明了该版本的主要目的。 containerd 2.x 的首个重要版本重点关注 containerd 核心功能集的持续稳定性,以及从 containerd 1.x 的轻松升级。该版本包括稳定上一个 1.x 版本中添加的新功能,以及删除 1.x 版本中废弃的功能。 ...
本文用于分析 containerd 如何升级到 2.0 版本。 containerd v2.0 在 2024.11.6 出了正式版本,也表明了该版本的主要目的。 containerd 2.x 的首个重要版本重点关注 containerd 核心功能集的持续稳定性,以及从 containerd 1.x 的轻松升级。该版本包括稳定上一个 1.x 版本中添加的新功能,以及删除 1.x 版本中废弃的功能。 ...
预备动作 ctr 下载镜像,导出为压缩包。并解压到文件夹。 镜像文件层级 image-spec/image-layout.md at main · opencontainers/image-spec · GitHub 镜像布局的结构如下: $ tar xvf wg.tar -C wg-image blobs/sha256/0303a59d29548085675c8dc77b594cfdaed591c2d3dc2eedb7f86423d68d4217 blobs/sha256/0350af939280a3c1cd93680faa5890636e2b2e1853c59bfa543fbf1dd3022123 blobs/sha256/0c885228653809eeb06ad27eca297d2dcc22e7e46056f420a83ead31d674eff7 blobs/sha256/0ff5eb3a6b4475e3dbd12f3e2683ea873ed76e3ad34a7b81a31ea77d98034d4b blobs/sha256/2d2e0fc760791a12a90fa8101ab88f8e8dfc178539d0b3ead91f0394b124da81 blobs/sha256/38ae9c4bfd7c2b34961b19ff96a4e8930eb545b81a08a42e680beca6327eea43 blobs/sha256/5b7522ab11647cb4fc176d2817b3425b6a03bec4cced283746f0bf9b1767d1d0 blobs/sha256/96d9ee2f8e97cc43d61fe2c01555543a411ee2662f4ffb514b9580200c2692d2 blobs/sha256/9a36f2af670028da7e5201a9ad40616f66a2e07af074439103f3b0ead5d61a26 blobs/sha256/bed0e8f20ee92bd6b5867a0f0bd8f6cb3490b103539b1607f1621e3493ccd19f blobs/sha256/e0fb2429c802bef7d81813dfd5a6a4e3f9b06b86b103a87c02cfbecc5cc9150e blobs/sha256/fc515c5e05210d9f5f813831bc05ec38810e226c4715582e8d36ee42ceccec1c index.json manifest.json oci-layout blobs 目录 blobs 子目录中的对象名称由每种哈希算法的目录组成,其子目录将包含实际内容。 blobs/<alg>/<encoded> 中的内容必须与摘要 <alg>:<encoded> 匹配。 目录可能包含未被任何引用所引用的 Blob。 如果缺少引用的 Blob,则应通过外部 Blob 存储来补充。 oci-layout 文件 该 JSON 对象作为开放容器镜像布局的标记,并提供正在使用的镜像布局版本。imageLayoutVersion 值将与 OCI 镜像规范版本对齐,并在需要更改镜像布局时进行固定。 index.json 文件 这是一个必需的文件,作为镜像布局的引用和描述符的入口点。该索引提供了一个已建立的路径(/index.json),以便在镜像布局中发现辅助描述符(auxiliary descriptors)。 每个描述符对象的 mediaType 字段将是 index 或 manifest manifest.json 文件 Docker 格式镜像使用的 manifest.json,ctr image export 时会默认生成,可以增加 --skip-manifest-json 参数不生成此文件。 在containerd InportIndex函数导入index时,若存在 oci-layout 则不会读取本文件。否则认为是 Docker v1.1 或 v1.2 的镜像格式,会读取本文件,并转换为OCI格式处理。 OCI镜像各个类型的组织形式: ...
在 [[Kubernetes CSI接口及存储插件解析]] 说明了CSI Driver结构和CSI接口调用的大体流程,但并没详细说明 CSI Driver 和 Kubernetes 其他组件的关系和调用流程。有必要再次整理一下资料,并结合代码分析一下(以Kubernetes 1.30.4为例)。 ...
做了一段时间Kubernetes 容器存储,根据文档重新整理一下Kubernetes CSI接口逻辑,并以几大云厂商的CSI Driver 和 kubernetes-csi/csi-driver-nfs 为例,描述一下CSI插件实现的逻辑。 ...
方案选择 去年ChatGPT第一波火爆的时候就短暂体验了一下大语言模型的妙处。但后续逐渐加强封锁,我的号又是用自己的手机和Google账号注册的,很怕被ban,就大半年没使用了。 后面也尝试搭建 LLaMA2 13B的模型,但实际效果并不是很好,有需要的可以试试这个中文llama模型,Chinese-LLaMA-Alpaca-2。 Google Bard 也是免费使用的,尝试过一段时间,被骗次数不少。 ...
本文为家庭宽带环境下,k3s中traefik配置Let’s Encrypt TLS证书的方法。 之前设置了 morningserver.local 的本地域名,但一些问题。 DNS 设置比较麻烦 mDNS不支持泛域名广播 本地 hosts 也不支持泛域名 只能通过设置路由器上的DNSmasq,达到内网泛域名解析的目的 本地域名后期无法对外服务 因此考虑直接通过一个公网域名进行服务访问。由于本地域名的特殊性,浏览器会做特殊处理,忽略“http不安全”问题。对于公网域名,通过http访问,浏览器就会报错,同时自签证书也会需要设备信任及ca存储一系列问题。最后考虑通过traefik配置Let’s Encrypt自动获取 TLS 证书。 ...
变更缘由 早期系统选型时为了减少大周期系统版本更迭带来的维护成本,同时期望有强大的社区能支撑最新软件版本的安装,选择了使用Manjaro做NAS系统。使用初期确实能通过获取大量所需的最新版本软件,同时隔段时间进行滚动更新也保证了系统无需在大周期重装系统。但同时也会发现滚动更新时,一些服务进行了无法向下兼容的升级,导致业务不可用,这需要花费时间去修复,并尝试恢复数据。一次是caddy从1到2的大版本升级,他的配置文件格式完全变更了,这导致网页服务直接崩溃;另一个是transmisson升级,无法进入服务,最后发现他的权限和配置路径有了一定变化。这两次软件变化都拖了好久才去解决。另外还有系统级别的问题,似乎是我升级了内核,但没完全升级和卸载,很长一段时间中启动时grub首选项有问题,重启需要连接显示器。尝试解决好几次没解决,隔了好几个月终于尝试find内核版本,发现有残留文件。同时也在考虑更换CPU的事,目前使用 ,发布到现在已经十年了,性能太差。因此也期望能尽量将现有服务无损迁移,这也要求我对服务配置文件有一定把控,而不是继续AUR社区脚本设计的配置路径,这可能会导致数据丢失。 ...