Kubernetes 构建容器镜像 kaniko

Github kaniko简介

kaniko 是从容器或 Kubernetes 集群内部的Dockerfile构建容器映像的工具。

kaniko 不依赖 Docker守护程序,而是完全在用户空间中执行 Dockerfile 中的每个命令。这样就可以在无法轻松或安全地运行Docker守护程序的环境(例如标准Kubernetes集群)中构建容器映像。

角色IP
master192.168.11.128
node1192.168.11.129
node2192.168.11.130

一、入门测试实验

kaniko 入门教程

一、先决条件

1、Kubernetes集群
2、映像仓库

二、准备本地安装目录

1、SSH进入集群,并创建一个本地目录

在这里插入图片描述

ssh   192.168.11.129 
mkdir /root/kaniko
ssh   192.168.11.130 
mkdir /root/kaniko

2、在各node节点创建dockerfile

node1 节点:

ssh   192.168.11.129 
cat  >  dockerfile <<EOF
FROM library/ubuntu
ENTRYPOINT ["/bin/bash", "-c", "echo hello"]
EOF

node2 节点:

ssh   192.168.11.130
cat  >  dockerfile <<EOF
FROM library/ubuntu
ENTRYPOINT ["/bin/bash", "-c", "echo hello"]
EOF

三、创建镜像的私仓认证

kubectl create secret docker-registry docek-harbor  --docker-server=https://192.168.11.128:4430  --docker-username=admin  --docker-password=Harbor12345 --docker-email=2216170240@qq.com

四、准备kaniko的配置文件

1、书写持久卷pv的资源清单

vim  volume.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: dockerfile
  labels:
    type: local
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  storageClassName: local-storage   #指定所使用的存储储类名称
  hostPath:					#本地共享目录
    path: /root/kaniko      #绝对路径

2、书写持久卷pvc的资源清单

vim volume-claim.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: dockerfile-claim
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: local-storage	#指定所使用的存储储类名称

3、书写Pod的资源清单

vim pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: kaniko
spec:
  containers:
  - name: kaniko
    image: registry.cn-hangzhou.aliyuncs.com/shenshouer/tektoncd-executor:latest
    args: ["--dockerfile=/workspace/dockerfile",	#dockerfile存在目录
            "--context=/workspace",					#本地目录
            "--skip-tls-verify=true",				#设置此标志可在推送到注册表时跳过TLS证书验证。它应该仅用于测试目的,不应在生产中使用
            "--destination=192.168.11.128:4430/library/test:latest" ] #打包后的镜像
    volumeMounts:						
      - name: kaniko-secret         #与volumes名称相同    
        mountPath: /kaniko/.docker	#/kaniko/.docker目录下生成config.json文件(私仓镜像仓库认证文件)
      - name: dockerfile-storage	#与volumes名称相同
        mountPath: /workspace	    #相当于node节点的/root/kaniko/dockerfile文件挂载在/workspace目录下
  restartPolicy: Never             
  volumes:
    - name: kaniko-secret				#与volumeMounts名称相同
      secret:
        secretName: docek-harbor		#私仓镜像仓库认证
        items:
          - key: .dockerconfigjson		#secret名称中的对应键
            path: config.json			#生成对应的目标路径
    - name: dockerfile-storage	    	#与volumeMounts名称相同
      persistentVolumeClaim:		   
        claimName: dockerfile-claim     #pvc的名称

4、生成资源清单

kubectl  apply -f  volume.yaml  -f volume-claim.yaml   -f  pod.yaml

在这里插入图片描述

kubectl  logs  kaniko  -f

在这里插入图片描述

五、验证

1、登录harbor私仓查看镜像

在这里插入图片描述
可测试镜像,使用范围使用jenkins部署打包镜像,需要的使用拉取此kaniko镜像 协助打包并上传镜像到私有仓库。 打包完毕镜像杀死保证资源的利用率

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值