buildkit ctr 与 k3s的简单学习
摘要
前面一部分学习了 buildkit的简单搭建
也学习会了如果build images的简单处理
但是搭建镜像只是万里长征第一步.
如何进行微服务部署,才是关键的第二步.
公司最近使用基于K3S的K8S发行版
基于此 准备进行下一步的学习
简单结论
Buildkit 能够极大的减少镜像的大小
并且能够提高导入和导出的效率.
但是ctr 和 k3s ctr 虽然命名空间名字一样
但是没法打通, 需要找K3S的原厂沟通确认.
遇到的坑
我这边安装完buildkit 使用 ctr 命令
ctr ns ls
NAME LABELS
buildkit
k8s.io
和安装完k3s 只有使用的命令
k3s ctr ns ls
NAME LABELS
k8s.io
结果是完全不一样的
两个命令空间完全不相同
联系了下同事也没解决狗这个问题. 所以准备还是使用原始额导入导出的方式.
说明一下镜像信息
使用 docker build的OpenJDk的镜像大小为: 388MB
但是使用 buildkit 构建的镜像大小为: 167.4M
大小了巨大的缩减
同样的我们基于我们环境搭建的镜像:
[+] Building 642.9s (8/8) FINISHED
大小为: 2.5 GiB
但是用docker搭建的镜像为:
real 14m59.480s
大小为: 5.98 GB
注意两个机器的配置稍有不同.
执行导入和导出的速度
buildkit方式导出:
time ctr -n k8s.io i export /myapp/myapp2211.tar.gz docker.io/library/myapp2211
real 1m35.661s
user 0m50.195s
sys 0m25.067s
总用量 2.5G
不同机器Docker方式导出:
#注意不能使用这种方式导出. K3S不认这种导出的介质
#time docker save myapp2211 |gzip > myapp2211.tar.gz
# 可以使用 -o 的方式来处理, 不能会报错:ctr: archive/tar: invalid tar header
time docker save myapp2211 -o myapp2211_docker.tar.gz
real 2m26.156s
user 0m2.280s
sys 0m5.578s
总用量 5.7G
K3S执行导入
导入 buildkit的镜像时间:
time k3s ctr i import /myapp/myapp2211.tar.gz
real 1m46.226s
user 0m11.998s
sys 0m4.479s
同一个机器导入 buildkit的镜像时间:
time k3s ctr images import /myapp2211_docker.tar.gz
5.7G的镜像最终报错了. 原因不明.
构建deployment 进行验证
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: myapp
name: myapp-deployment
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- image: docker.io/library/myapp2211
imagePullPolicy: Never
ports:
- containerPort: 5200
name: myapp
服务运行情况
kubectl apply -f myapp-deployment.yaml
kubectl get pods
NAME READY STATUS RESTARTS AGE
myapp-deployment-79cc44bbb5-wv9xc 1/1 Running 0 2m39s
kubectl logs -f xxxxpods
运行信息
PROCESSOR_ARCH: ${PROCESSOR_ARCHITECTURE}
JAVA_HOME: /opt/java/openjdk
JAVA_VERSION: 1.8.0_292
IGIX_SERVER_HOME: ${XXXX_SERVER_HOME}
SPRING BOOT: 2.4.13 (v2.4.13)
ACTIVE PROFILES: prod
PROCESS ID: 1
TotalMemorySize ${TotalMemorySize}
-------------------------------------------------------
buildkit ctr 与 k3s的简单学习的更多相关文章
- Log4j简单学习笔记
log4j结构图: 结构图展现出了log4j的主结构.logger:表示记录器,即数据来源:appender:输出源,即输出方式(如:控制台.文件...)layout:输出布局 Logger机滤器:常 ...
- shiro简单学习的简单总结
权限和我有很大渊源. 培训时候的最后一个项目是OA,权限那块却不知如何入手,最后以不是我写的那个模块应付面试. 最开始的是使用session装载用户登录信息,使用简单权限拦截器做到权限控制,利用资源文 ...
- CentOS 简单学习 firewalld的使用
1. centos7 开始 使用firewalld 代替了 iptables 命令工具为 firewall-cmd 帮助信息非常长,简单放到文末 2. 简单使用 首先开启 httpd 一般都自带安装了 ...
- Windows 下 Docker 的简单学习使用过程之一 dockertoolbox
1. Windows 下面运行 Docker 的两个主要工具1): Docker for Windows2): DockerToolbox区别:Docker For Windows 可以理解为是新一代 ...
- 在MVC中实现和网站不同服务器的批量文件下载以及NPOI下载数据到Excel的简单学习
嘿嘿,我来啦,最近忙啦几天,使用MVC把应该实现的一些功能实现了,说起来做项目,实属感觉蛮好的,即可以学习新的东西,又可以增加自己之前知道的知识的巩固,不得不说是双丰收啊,其实这周来就开始面对下载在挣 ...
- Linux——帮助命令简单学习笔记
Linux帮助命令简单学习笔记: 一: 命令名称:man 命令英文原意:manual 命令所在路径:/usr/bin/man 执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得帮助信 ...
- OI数学 简单学习笔记
基本上只是整理了一下框架,具体的学习给出了个人认为比较好的博客的链接. PART1 数论部分 最大公约数 对于正整数x,y,最大的能同时整除它们的数称为最大公约数 常用的:\(lcm(x,y)=xy\ ...
- mongodb,redis简单学习
2.mongodb安装配置简单学习 配置好数据库路径就可以mongo命令执行交互操作了:先将服务器开起来:在开个cmd执行交互操作 ...
- html css的简单学习(三)
html css的简单学习(三) 前端开发工具:Dreamweaver.Hbuilder.WebStorm.Sublime.PhpStorm...=========================== ...
- html css的简单学习(二)
html css的简单学习(二) <!Doctype html>告诉浏览器,这是一个html文档.lang="en" 默认是en,表示英语:zh-Hans 中文简体:z ...
随机推荐
- LiteOS基于Sensorhub的超声波模组移植
摘要:本文为你带来LiteOS基于Sensorhub的超声波模组移植的应用. 1.Sensor Hub LiteOS传感框架即Sensor Hub,是一个基于Huawei LiteOS物联网操作系统的 ...
- 云原生时代,领域驱动设计思想(DDD)如何落地?
摘要:随着数字化世界的持续演进,软件架构设计思想在碰撞中不断优化.云原生时代的到来,加速了行业对于领域驱动设计理念(Domain-Driven Design)的实践落地诉求. 本文分享自华为云社区&l ...
- Black Hat 2022 聚焦软件供应链安全
Black Hat 大会被公认为世界信息安全行业最权威大会,也是在全球范围内最具有技术性的信息安全大会.Black Hat USA 聚焦网络安全事件,并且持续向外界输出前沿安全技术研究成果以及行业发展 ...
- 火山引擎VeDI助力零售品牌私域运营 实现与会员高效“沟通”
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 小程序正在成为零售品牌与会员高效沟通的第二阵地. 过去,零售品牌多依赖电商平台与会员保持互动联系.消费者通过关注[ ...
- LiveData的用法
一.实时数据LiveData 在上一节中,我们学习了ViewModel,了解到ViewModel的主要作用是存放页面所需要的各种数据.我们在示例代码中定义了接口,当数据发生变化的时候,采用接口的方式实 ...
- ASP.NET Web API Demo OwinSelfHost 自宿主 Swagger Swashbuckle 在线文档
新建Web API工程 选Empty,勾选Web API,不要选择Web API,那样会把MVC勾上,这里不需要MVC Web API工程属性 XML文件用于生成在线文档 新建Windows服务作为W ...
- 【QT Tools】软件多语言国际化翻译的方法与步骤
在Qt的项目开发过程中,有时软件要翻译成多语言版本,这就涉及到国际化方面的操作.虽然Qt对这方面集成了很多工具,操作起来比较方便,本文还是总结一下国际化的方法和步骤,用以备忘和参考. 我们通常在写程序 ...
- 路径规划之 A* 算法
算法介绍 A*(念做:A Star)算法是一种很常用的路径查找和图形遍历算法.它有较好的性能和准确度.本文在讲解算法的同时也会提供Python语言的代码实现,并会借助matplotlib库动态的展示算 ...
- Codeforces Round #669 (Div. 2) A、B题题解
Problem A - Ahahahahahahahaha https://codeforces.com/contest/1407/problem/A 题意: 给定一个偶数数组(元素值 0,1),在删 ...
- PTA 天梯赛 L3-003 社交集群(并查集)
当你在社交网络平台注册时,一般总是被要求填写你的个人兴趣爱好,以便找到具有相同兴趣爱好的潜在的朋友.一个"社交集群"是指部分兴趣爱好相同的人的集合.你需要找出所有的社交集群. 输入 ...