小秦哥 发表于 2024-7-27 20:39:04

镜像构建工具kaniko

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 镜像构建工具kaniko