kubernetes从harbor拉取镜像没有权限解决方法

1,先用docker登录harbor,登录的用户名密码为在harbor上注册的用户名密码,并且登录用户需要有对应仓库的拉取权限,否则不能访问仓库。登录示例:docker login hub.yxtc.com:8081,登录之后会生成~/.docker/config.json文件,config.json文件内容如下 hub.yxtc.com:8081

{
"auths": {
"hub.yxtc.com:8081": {
"auth": "Y3I3Olh1MTIzNDU2MjU="
}
}
}
    
其中 hub.yxtc.com:8081为harbor服务器的地址
2,再对上面的config.json进行base64加密,命令如下:
cat ~/.docker/config.json |base64 -w 0
ewoJImF1dGhzIjogewoJCSJodWIueXh0Yy5jb206ODA4MSI6IHsKCQkJImF1dGgiOiAiWTNJM09saDFNVEl6TkRVMk1qVT0iCgkJfQoJfQp9Cg==

3,创建secret.yaml文件,文件内容如下:
apiVersion: v1
kind: Secret
metadata:
name: mysecret
data:
.dockerconfigjson: ewoJImF1dGhzIjogewoJCSJodWIueXh0Yy5jb206ODA4MSI6IHsKCQkJImF1dGgiOiAiWTNJM09saDFNVEl6TkRVMk1qVT0iCgkJfQoJfQp9Cg==
type: kubernetes.io/dockerconfigjson

创建secret,命令如下:
        kubectl create -f secret.yaml,生成secret

4,新建pod,用imagePullSecrets指定secret,pod的yaml文件示例如下:
apiVersion: v1
kind: Pod
metadata:
name: foo
spec:
containers:
- name: foo
image: hub.yxtc.com:8081/iss/iss-we:201806260754_d9eb552
imagePullPolicy: Always
imagePullSecrets:
- name: mysecret

创建pod,命令如下:
kubectl create -f pod.yaml,正常情况下即可从harbor拉取镜像

你可能感兴趣的:(kubernetes从harbor拉取镜像没有权限解决方法)