镜像构建工具kaniko

打印 上一主题 下一主题

主题 647|帖子 647|积分 1941

一、媒介
kaniko 是一种从容器内的 Dockerfile 构建容器映像的工具,kaniko 不依靠于 Docker 守护进程,使用kaniko可以制止用docker in docker去构建镜像,docker in docker需要使用到宿主机的docker.sock
二、kiniko使用
需要了解更多参考:GitHub - GoogleContainerTools/kaniko:在 Kubernetes 中构建容器镜像
创建命名空间
  1. kubectl create ns kaniko
复制代码
创建用于私有堆栈验证的密钥
  1. kubectl create secret docker-registry kaniko-secret --docker-server=https://harbor.xxx.com --docker-username=xxx --docker-password=xxx --namespace=kaniko
复制代码
 在k8s node01工作节点创建dockerfile
  1. mkdir /opt/kaniko/conf &&  cd /opt/kaniko/conf
  2. vi dockerfile
复制代码
  1. FROM harbor.xxx.com/base_image/alpine_nginx:latest
  2. ENV TZ="Asia/Shanghai"
  3. RUN cp /usr/share/zoneinfo/${TZ} /etc/localtime \
  4. && echo ${TZ} > /etc/timezone
  5. WORKDIR /usr/share/nginx/html
  6. EXPOSE 80
  7. ENTRYPOINT /usr/sbin/nginx -g "daemon off;"
复制代码
  在k8s node01工作节点创建标签
  1. kubectl label nodes k8s-node01 type=kaniko
复制代码
 在master节点创建job yaml
   mkdir /opt/kaniko && cd /opt/kaniko
  vi job.yaml
  1. apiVersion: batch/v1
  2. kind: Job
  3. metadata:
  4.   name: kaniko
  5.   namespace: kaniko
  6. spec:
  7.   backoffLimit: 3   #job执行失败后的重试次数,超过这个次数不会继续重试
  8.   ttlSecondsAfterFinished: 10  #job任务执行完成后自动删除时间
  9.   activeDeadlineSeconds: 300   #表示Pod运行时间.一旦达到这个时间,Job及其所有的Pod都会停止
  10.   template:
  11.     spec:
  12.       hostAliases:           #配置域名解析
  13.       - ip: "10.1.60.22"
  14.         hostnames:
  15.         - "harbor.xxx.com"
  16.       nodeSelector:        #绑定到k8s-node01节点
  17.         type: kaniko
  18.       containers:
  19.       - name: kaniko
  20.         image: gcr.io/kaniko-project/executor:latest
  21.         args: ["--dockerfile=/workspace/dockerfile",  # dockerfile文件位置
  22.                 "--context=dir:///workspace",  #构建上下文,(注意:不能全路径,只能是dockerfile所在目录的名称)
  23.                 "--destination=harbor.xxx.com/base_image/cs:1.0.1",  ##构建镜像以及上传
  24.                 "--skip-tls-verify"]    #报错x509加该项,跳过证书验证
  25.         volumeMounts:
  26.           - name: kaniko-secret
  27.             mountPath: /kaniko/.docker
  28.           - name: dockerfile-storage   #将dockerfile目录挂载到workspace目录
  29.             mountPath: /workspace
  30.       restartPolicy: Never
  31.       volumes:
  32.         - name: kaniko-secret    #挂载仓库密钥
  33.           secret:
  34.             secretName: kaniko-secret
  35.             items:
  36.               - key: .dockerconfigjson
  37.                 path: config.json
  38.         - name: dockerfile-storage     #挂载本地dockerfile目录
  39.           hostPath:
  40.             path: "/opt/kaniko/conf"
复制代码
 实行构建
  1. kubectl apply -f job.yaml
复制代码
容器任务实行完成后自动删除

查看私有堆栈
镜像成功构建并被推送到私有堆栈中

 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

小秦哥

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表