ToB企服应用市场:ToB评测及商务社交产业平台

标题: 企业运维实践-丢弃手中的 docker build , 使用Kaniko直接在Kubernetes集群 [打印本页]

作者: 三尺非寒    时间: 2022-9-17 08:41
标题: 企业运维实践-丢弃手中的 docker build , 使用Kaniko直接在Kubernetes集群
关注「WeiyiGeek」公众号
设为「特别关注」每天带你玩转网络安全运维、应用开发、物联网IOT学习!
希望各位看友【关注、点赞、评论、收藏、投币】,助力每一个梦想。

本章目录

目录

首发地址: https://mp.weixin.qq.com/s/wchtH6i0xKrIrqSuYKmWkg
原文地址: https://blog.weiyigeek.top/2022/9-1-684.html
0x00 前言简述

快速介绍

什么是Kaniko?

kaniko 是一个在容器或 Kubernetes 集群内从 Dockerfile 构建容器镜像的工具 ( Build Container Images In Kubernetes )。

温馨提示: kaniko不是谷歌官方发布支持的产品.
为啥用Kaniko?

由于 kaniko 不依赖于 Docker 守护进程,并且完全在用户空间中执行 Dockerfile 中的每个命令,这使得能够在轻松或安全地运行在无Docker守护程序的环境(如标准Kubernetes集群 V1.24.x)中构建容器映像。
在 Kubernetes V1.24.x 版本之后默认采用 containerd.io 作为缺省的cri,不在支持 docker-shim 意味着我们不需要安装 docker 环境
Kaniko 是如何工作的?

kaniko 执行器镜像负责从 Dockerfile 构建镜像并将其推送到注册表,其流程大致如下:
Kaniko 已知功能问题

kaniko 构建上下文

描述: kaniko 的构建上下文与您发送 Docker 守护程序以进行映像构建的构建上下文非常相似;它代表一个包含 Dockerfile 的目录,kaniko 将使用它来构建您的图像。
例如, Dockerfile 中的 COPY 命令应该引用构建上下文中的文件, 所以您需要将构建上下文存储在 kaniko 可以访问的位置。
目前kaniko 支持以下存储解决方案:
运行 kaniko 时,使用 --context 带有适当前缀的标志指定构建上下文的位置, 如果您不指定前缀 kaniko 将假定一个本地目录, 该参数可用值:
SourcePrefixExampleLocal Directorydir://[path to a directory in the kaniko container]dir:///workspaceLocal Tar Gztar://[path to a .tar.gz in the kaniko container]tar://path/to/context.tar.gzStandard Inputtar://[stdin]tar://stdinGCS Bucketgs://[bucket name]/[path to .tar.gz]gs://kaniko-bucket/path/to/context.tar.gzS3 Buckets3://[bucket name]/[path to .tar.gz]s3://kaniko-bucket/path/to/context.tar.gzAzure Blob Storagehttps://[account].[azureblobhostsuffix]/[container]/[path to .tar.gz]https://myaccount.blob.core.windows.net/container/path/to/context.tar.gzGit Repositorygit://[repository url][#reference][#commit-id]git://github.com/acme/myproject.git#refs/heads/mybranch#例如,要使用名为 kaniko-bucket 的 GCS 存储桶,您需要传入 --context=gs://kaniko-bucket/path/to/context.tar.gz 。
温馨提示:kaniko 允许的唯一标准输入是 .tar.gz 格式, 如果要创建压缩 tar,您可以运行 tar -C  -zcvf context.tar.gz .命令。
  1. $ ls cache/
  2. Dockerfile
  3. # 压缩上下文目录
  4. $ tar -C cache/ -zcvf context.tar.gz .
  5. ./
  6. ./Dockerfile
  7. # 查看压缩文件
  8. $ tar -ztvf context.tar.gz
  9. drwxr-xr-x root/root         0 2022-09-08 23:03 ./
  10. -rw-r--r-- root/root        52 2022-09-08 23:04 ./Dockerfile
复制代码
kaniko 缓存构建

0x01 部署使用

环境依赖


小试牛刀之在Kubernetes集群中构建并发布镜像

描述: 此处我们准备在一个K8S集群中使用kaniko提供的镜像,按照提供的Dockerfile指令进行镜像构建,并上传到 docker hub 仓库中,以下为操作流程、
操作流程
步骤 01.首先, 为了加快构建速度, 我们提前在集群中拉取 gcr.io/kaniko-project/executor 镜像到本地, 由于国内无法直接拉取此处我采用这篇【使用Aliyun容器镜像服务对海外gcr、quay仓库镜像进行镜像拉取构建】 文章中的方法进行拉取构建国外gcr.io仓库中的镜像。
  1. # 此处我已经创建了国内可以访问拉取的 executor 镜像, 不想在Aliyun容器镜像服务中进行创建拉取的朋友可以直接使用如下仓库地址。
  2. registry.cn-hangzhou.aliyuncs.com/weiyigeek/kaniko-executor:latest
  3. # 使用 ctr 或者 crictl 进行镜像拉取
  4. $ crictl pull registry.cn-hangzhou.aliyuncs.com/weiyigeek/kaniko-executor:latest
  5. $ crictl images | grep "kaniko-executor"
  6. registry.cn-hangzhou.aliyuncs.com/weiyigeek/kaniko-executor  latest  da9592dbe1de3   25.8MB
复制代码
步骤 02.准备一个 Dockerfile 此处将 registry.cn-hangzhou.aliyuncs.com/weiyigeek/kaniko-executor 镜像打包上传到hub中作为演示。
[code]# 创建存放dockerfile目录以及持久化缓存目录mkdir -vp /storage/dev/soft/kaniko/{cache,demo}cd /storage/dev/soft/kaniko/demotee dockerfile




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4