• k8s的pod内部打包工程镜像


    1、创建阿里云serviceAccount,赋予容器镜像服务相应的权限

    • 创建RAM子账号,赋予子账号容器镜像服务相应的权限
    • 用子账号登录阿里云
    • 进入容器镜像服务页面,开通registry

    2、创建docker secret

    kubectl create secret docker-registry regcred --docker-server=registry.cn-hangzhou.aliyuncs.com --docker-username=wangzy-p@1711111111233333 --docker-password=dasdadsa --dry-run=client -n wangzy-p -o yaml > docker-secret.yaml
    
    • 1

    注意 :登录阿里云的RAM账号wangzy-p@1711111111233333.onaliyun.com,账号中去除.onaliyun.com

    生成docker-secret.yaml文件如下:

    apiVersion: v1
    data:
      .dockerconfigjson: eyJhdXRocyI6eyJQ2Q1QyZWdpc3RyeS5jbi1oYW5nemhvdS5hbGl5dW5jcy5jb20iOnsidXNlcm5hbWUiOiJ3YW5nenktcEAxNzA4OTYwOTU5OTdadadaATTBBHPKKKX7HGGGGkxMDAyIiwicGFzc3dvcmQiOiJ3YW5nenktcDEyADADMzQ1NiIsImF1dGgiOiJkMkZ1WjNwNUxYQkFNVGN3T0RrMk1EazFPVGs1TVRBd01qcDNZVzVuZW5rdGNERXDADADlNelExTmc9PSJ9fX0=
    kind: Secret
    metadata:
      creationTimestamp: null
      name: regcred
      namespace: wangzy-p
    type: kubernetes.io/dockerconfigjson
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    应用文件: kubectl apply -f docker-secret.yaml

    3、创建pod

    apiVersion: v1
    kind: Pod
    metadata:
      name: kaniko
      namespace: wangzy-p #用户的命名空间,这里要和创建的secret命名空间要对应
      annotations:
        sidecar.istio.io/inject: "false"  #如果有istio,取消sidebar注入
    spec:
      containers:
      - name: kaniko
        image: registry.cn-hangzhou.aliyuncs.com/rory602/kubeflow2:gcr.io_kaniko-projec_executor_latest
        args: ["--dockerfile=/workspace/operator/example/sdm/Dockerfile", #打包镜像的dockerfile
                "--context=dir://operator", #dir://协议, 这是相对路径写法,如果是绝对路径再加/, 如:dir:///workspace/operator
                "--destination=registry.cn-hangzhou.aliyuncs.com/rory602/k8s_kubeflow1:kaniko-test"] #推送的镜像
        volumeMounts:
          - name: kaniko-secret
            mountPath: /kaniko/.docker
          - name: dockerfile-storage
            mountPath: /workspace #挂载到kaniko pod的workspace目录,注意,这里不是构建镜像挂载路径,可以理解为中转路径
      restartPolicy: Never
      volumes:
        - name: kaniko-secret
          secret:
            secretName: regcred  #创建docker-secret名称
            items:
              - key: .dockerconfigjson
                path: config.json
        - name: dockerfile-storage
          persistentVolumeClaim:
            claimName: wangzy-p1-datavol-1  #指定存储数据的pvc
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    应用pod文件:kubectl apply -f pod.yaml

    注意:pod内部需要赋予serviceaccount的在该命名空间下创建Pod的权限

    其中,wangzy-p1-datavol-1对应的打包工程目录结构如下:

    └── operator
        ├── config
        │   ├── dssm
        │   ├── mind
        │   ├── sdm
        │   └── youtubednn
        ├── data
        │   ├── dssm
        │   ├── mind
        │   ├── sdm
        │   └── youtubednn
        ├── example
        │   ├── dssm
        │   ├── mind
        │   ├── sdm
        │   └── youtubednn
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    Dockerfile定义打包镜像指令

    ·

    参考资料

    GoogleContainerTools/kaniko: Build Container Images In Kubernetes (github.com)

  • 相关阅读:
    Golang应用 ━━ 安装与配置hugo博客系统
    工业数字化供应链协同系统:赋能工业品供应链数智化,提升产业链流通效率
    Aspose.OCR for .NET 2023Crack
    用HTML+CSS做一个漂亮简单的花店网页【免费的学生网页设计成品】
    ELK实践
    Java实现7种常见密码算法
    docker 常用
    Linux内存从0到1学习笔记(9.10 内存优化调试之panic_on_oom介绍 --- 更新中
    编码技巧——使用Easypoi导出Excel
    【深度学习2】反向传播BP算法
  • 原文地址:https://blog.csdn.net/qq_39698985/article/details/126807551