美文网首页kubernetes以及运维开发系列Kubernetes
kubernetes配置secret拉取私仓镜像

kubernetes配置secret拉取私仓镜像

作者: 殷临风 | 来源:发表于2017-05-10 19:48 被阅读4986次

    对于公司内部的项目, 我们不可能使用公有开放的镜像仓库, 一般情况可能会花钱买 docker私仓服务, 或者说自己在服务器上搭建自己的私仓, 但不管怎样, 我们如何让k8s能够拉取私有仓库的镜像

    1. 登录docker镜像仓库

    这里以阿里云docker镜像仓库为例

    docker login --username=yin32167@aliyun.com registry.cn-hangzhou.aliyuncs.com
    

    之后输入密码就可以了, 这个时候我们可以在配置文件中查看登录情况

    cat ~/.docker/config.json
    

    这个时候我们虽然可以通过docker pull命令拉取镜像, 但无法通过k8s创建pod方式拉取

    2. 生成密钥secret
    kubectl create secret docker-registry regsecret --docker-server=registry.cn-hangzhou.aliyuncs.com --docker-username=yin32167@aliyun.com --docker-password=xxxxxx --docker-email=yin32167@aliyun.com
    

    其中:
    regsecret: 指定密钥的键名称, 可自行定义
    --docker-server: 指定docker仓库地址
    --docker-username: 指定docker仓库账号
    --docker-password: 指定docker仓库密码
    --docker-email: 指定邮件地址(选填)

    可以看到当前除了默认的密钥, 还有我们刚才生成的. 另外要注意的是, 该密钥只能在对应namespace使用, 也就是这里的default, 如果需要用到其他namespace, 比如说test, 就需要在生成的时候指定参数 -n test

    3. yml文件加入密钥参数
    containers:
    - name: channel
      image: registry-internal.cn-hangzhou.aliyuncs.com/yin32167/channel:dev-1.0
    ports:
    - containerPort: 8114
    imagePullSecrets:
    - name: regsecret
    

    其中imagePullSecrets是声明拉取镜像时需要指定密钥, regsecret 必须和上面生成密钥的键名一致, 另外检查一下pod和密钥是否在同一个namespace, 之后k8s便可以拉取镜像

    参照官方文档 https://kubernetes.io/docs/concepts/containers/images/#using-a-private-registry

    相关文章

      网友评论

        本文标题:kubernetes配置secret拉取私仓镜像

        本文链接:https://www.haomeiwen.com/subject/dtggtxtx.html