k8s的imagePullSecrets如何生成及使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
k8s的imagePullSecrets如何⽣成及使⽤⼀、概述
公司的docker仓库(harbor),是私有的,需要⽤户认证之后,才能拉取镜像。
⼆、⽣成secret
登录docker
登录到k8s master节点,先登录docker
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⽂件
vim /etc/docker/daemon.json
内容如下:
{"insecure-registries": ["192.168.10.122"]}
重新加载docker配置
/etc/init.d/docker reload
再次登录
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:///engine/reference/commandline/login/#credentials-store
Login Succeeded
提⽰登录成功。
登录过程创建或更新⼀个包含授权令牌的config.json⽂件。
查看config.json⽂件:
cat ~/.docker/config.json
输出包含类似以下内容的部分:
{
"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中:
kubectl create secret generic harborsecret \
--from-file=.dockerconfigjson=/root/.docker/config.json \
--type=kubernetes.io/dockerconfigjson
注意:主要修改红⾊部分。
harborsecret表⽰key名
/root/.docker/config.json表⽰docker认证⽂件,注意要写绝对路径。
查看内容
kubectl get secrets harborsecret --output="jsonpath={.data.\.dockerconfigjson}" | base64 -d
输出:
{
"auths": {
"192.168.10.122": {
"auth": "YWRtaW46SGFyYm9yMTIzNDU="
}
},
"HttpHeaders": {
"User-Agent": "Docker-Client/19.03.1 (linux)"
}
}
要了解刚刚创建的regcred秘密的内容,请从以yaml格式查看秘密开始:
kubectl get secret harborsecret --output=yaml
输出:
apiVersion: v1
data:
.dockerconfigjson: ewoJImF1dGhzIjogewoJCSIxOTIuMTY4LjEwLjEyMiI6IHsKCQkJImF1dGgiOiAiWVdSdGFXNDZTR0Z5WW05eU1USXpORFU9IgoJCX0KCX0sCgkiSHR0cEhlYWRlcnMiOiB7CgkJIlVzZXItQWdlbn 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⽂件中的使⽤⽰例
...
spec:
imagePullSecrets:
- name:harborsecret
containers:
- name: eureka
image: 192.168.10.122/library/alpine:latest
...
如果需要删除secret,使⽤命令
kubectl delete secrets harborsecret
本⽂参考链接:。