Kubernetes中如何使用私有仓库的镜像

运维有笔谈 2024-04-18 06:47:33

我们的应用镜像都是存放在私有的镜像仓库里,比如Harbor,在拉取镜像的时候是需要提供凭证的。那么Kubernetes中如何从私有镜像仓库拉取镜像呢?

Kubernetes从私有仓库读取镜像也是需要密钥的。凭据可以用以下方式提供:

1.配置节点向私有仓库进行身份验证,所有 Pod 均可读取任何已配置的私有仓库,这个需要集群管理员配置节点。

2.kubelet 凭据提供程序,动态获取私有仓库的凭据,kubelet 可以被配置为使用凭据提供程序 exec 插件来访问对应的私有镜像库。

3.预拉镜像,所有 Pod 都可以使用节点上缓存的所有镜像。

4.在 Pod 中设置 ImagePullSecrets,只有提供自己密钥的 Pod 才能访问私有仓库

5.特定于厂商的扩展或者本地扩展,如果使用定制的节点配置,云平台提供商可以实现让节点向容器仓库认证的机制。

推荐还是使用 ImagePullSecrets,本文以此为例说明。我们先来创建拉取镜像的凭证secret,它实际上secret的一个特定的类型:kubernetes.io/dockercfg 或者 kubernetes.io/dockerconfigjson

secret类型

1.使用 Docker Config 创建 Secret

kubectl create secret docker-registry regcred \ --docker-server=<镜像仓库服务器> \ --docker-username=<用户名> \ --docker-password=<密码> \ --docker-email=<邮箱地址>

查看创建的secret,kubectl get secret regcred -o yaml

2.或者使用 kubernetes.io/dockerconfigjson 类型的 Secret 来通过镜像仓库的身份验证。

服务器上我们 docker login 一个镜像仓库,会生成一个文件:<path/to/.docker/config.json>,如下图:

docker/config.json

kubectl create secret generic regcred \ --from-file=.dockerconfigjson=<path/to/.docker/config.json> \ --type=kubernetes.io/dockerconfigjson

请注意,这些secret需要各自添加下namespace,只针对各自的命名空间生效。一个示例yaml:

apiVersion: v1kind: Secretmetadata: name: regcred namespace: awesomeappsdata: .dockerconfigjson: UmVhbGx5IHJlYWxseSByZWVlZWVlZWVlZWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGx5eXl5eXl5eXl5eXl5eXl5eXl5eSBsbGxsbGxsbGxsbGxsbG9vb29vb29vb29vb29vb29vb29vb29vb29vb25ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubmdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2cgYXV0aCBrZXlzCg==type: kubernetes.io/dockerconfigjson3.在 Pod 中引用 ImagePullSecretsapiVersion: v1kind: Podmetadata: name: private-regspec: containers: - name: private-reg-container image: <your-private-image> imagePullSecrets: - name: regcred

镜像就可以自动获取凭证下载了。

如果您在日常运维工作中遇到了任何问题或挑战,无论是关于系统配置、性能优化、故障排除还是其他方面,都欢迎您随时留言或私信我。我会尽我所能为您提供解决方案或建议。相互学习,积累更多的经验和知识,让工作更加顺畅高效!

参考 1.https://kubernetes.io/zh-cn/docs/concepts/containers/images/

参考2.https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/pull-image-private-registry/#registry-secret-existing-credentials

0 阅读:8

运维有笔谈

简介:感谢大家的关注