前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >k8s的imagePullSecrets如何生成及使用

k8s的imagePullSecrets如何生成及使用

作者头像
py3study
发布2020-03-05 17:45:07
4.6K0
发布2020-03-05 17:45:07
举报
文章被收录于专栏:python3python3

一、概述

公司的docker仓库(harbor),是私有的,需要用户认证之后,才能拉取镜像。

二、生成secret

登录docker

登录到k8s master节点,先登录docker

代码语言:javascript
复制
root@k8s-master:~# docker login 192.168.10.122 -u admin -p Harbor12345
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get https://192.168.10.122/v2/: dial tcp 192.168.10.122:443: connect: connection refused

注意:出现这个报错,是由于harbor为了安全性考虑,默认是需要https证书支持的

但是我们可以通过一个简单的办法解决

修改 /etc/docker/daemon.json 文件

代码语言:javascript
复制
vim /etc/docker/daemon.json

内容如下:

代码语言:javascript
复制
{"insecure-registries": ["192.168.10.122"]}

重新加载docker配置

代码语言:javascript
复制
/etc/init.d/docker reload

再次登录

复制代码
复制代码
代码语言:javascript
复制
root@k8s-master:~# docker login 192.168.10.122 -u admin -p Harbor12345
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded
复制代码
复制代码

提示登录成功。

登录过程创建或更新一个包含授权令牌的config.json文件。 查看config.json文件:

代码语言:javascript
复制
cat ~/.docker/config.json

输出包含类似以下内容的部分:

代码语言:javascript
复制
{
    "auths": {
        "192.168.10.122": {
            "auth": "YWRtaW46SGFyYm9yMTIzNDU="
        }
    },
    "HttpHeaders": {
        "User-Agent": "Docker-Client/19.03.1 (linux)"
    }
}

注意:如果您使用Docker凭据存储,您将看不到该auth条目,而是看到一个以存储名称为值的credsstore条目。

基于现有Docker凭据创建secret

kubernetes集群使用docker注册表类型的秘密对容器注册表进行身份验证,以获取私有映像。

如果您已经运行了Docker登录,则可以将该凭证复制到Kubernetes中:

代码语言:javascript
复制
kubectl create secret generic harborsecret \
    --from-file=.dockerconfigjson=/root/.docker/config.json \
    --type=kubernetes.io/dockerconfigjson

注意:主要修改红色部分。

harborsecret 表示key名

/root/.docker/config.json 表示docker认证文件,注意要写绝对路径。

查看内容

代码语言:javascript
复制
kubectl get secrets harborsecret --output="jsonpath={.data.\.dockerconfigjson}" | base64 -d

输出:

代码语言:javascript
复制
{
    "auths": {
        "192.168.10.122": {
            "auth": "YWRtaW46SGFyYm9yMTIzNDU="
        }
    },
    "HttpHeaders": {
        "User-Agent": "Docker-Client/19.03.1 (linux)"
    }
}

要了解刚刚创建的regcred秘密的内容,请从以yaml格式查看秘密开始:

代码语言:javascript
复制
kubectl get secret harborsecret --output=yaml

输出:

代码语言:javascript
复制
apiVersion: v1
data:
  .dockerconfigjson: ewoJImF1dGhzIjogewoJCSIxOTIuMTY4LjEwLjEyMiI6IHsKCQkJImF1dGgiOiAiWVdSdGFXNDZTR0Z5WW05eU1USXpORFU9IgoJCX0KCX0sCgkiSHR0cEhlYWRlcnMiOiB7CgkJIlVzZXItQWdlbnQiOiAiRG9ja2VyLUNsaWVudC8xOS4wMy4xIChsaW51eCkiCgl9Cn0=
kind: Secret
metadata:
  creationTimestamp: "2019-08-30T06:14:10Z"
  name: harborsecret
  namespace: default
  resourceVersion: "6128"
  selfLink: /api/v1/namespaces/default/secrets/harborsecret
  uid: 76e16e61-a6b9-4a47-a842-e884cf6f468d
type: kubernetes.io/dockerconfigjson

三、在demployment yaml文件中的使用示例

代码语言:javascript
复制
... 
spec:
      imagePullSecrets:
      - name:harborsecret
      containers:
      - name: eureka
        image: 192.168.10.122/library/alpine:latest
...

如果需要删除secret,使用命令

代码语言:javascript
复制
kubectl delete secrets harborsecret

本文参考链接:

https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/

https://www.cnblogs.com/aguncn/p/9789320.html

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、概述
  • 二、生成secret
    • 登录docker
      • 基于现有Docker凭据创建secret
      • 三、在demployment yaml文件中的使用示例
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档