在k8s 中,如果需要拉取需要登录的私有仓库镜像,比如:harbor,需要创建凭证。
1、首先在节点docker login -u xxx -p xx url:port[镜像库地址]
登录成功之后会在$HOME/.docker/ 生成一个config.json文件,这个就是登录凭证,后面docker pull就不需要再登录了。但是如果在k8s发布pod或者deploment时,这个凭证要在k8s中创建一个对应secret,然后挂载到pod 或 deployment中的yaml中,这样k8s才能下载镜像,否则提示权限验证错误。
2、在k8s中创建凭证
kubectl create secret generic harborregcred[凭证的名称] --from-file=.dockerconfigjson=$HOME/.docker/config.json --type=kubernetes.io/dockerconfigjson
3、在pod或者Deployment中配置
kind: Deployment
apiVersion: apps/v1
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboard
spec:replicas: 1revisionHistoryLimit: 10selector:matchLabels:k8s-app: kubernetes-dashboardtemplate:metadata:labels:k8s-app: kubernetes-dashboardspec:imagePullSecrets:- name: harborregcred #配置在这里securityContext:seccompProfile:type: RuntimeDefaultcontainers:
这样就可以拉取成功了