• 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)

  • 相关阅读:
    TP6框架--CRMEB学习笔记:布置后台管理框架+配置路由
    恶补多线程编程实践4之ReentrantLock的使用以及condition
    CY7C68013A之keil编译代码
    GO微服务实战第十九节 如何保障分布式系统的高可用性?
    Python OpenCV 人脸识别
    Java程序设计-韩建平-读书笔记
    (01)ORB-SLAM2源码无死角解析-(42) EPnP 源代码分析(3)→find_betas_approx(),gauss_newton()
    C - Matrix Reducing
    解密Prompt系列2. 冻结Prompt微调LM: T5 & PET & LM-BFF
    【云原生之k8s】kubernetes核心组件
  • 原文地址:https://blog.csdn.net/qq_39698985/article/details/126807551