k8s使用私有harbor镜像源
前言
在node上手动执行命令可以正常从harbor拉取镜像,但是用k8s不行,使用kubectl describe pods xxx
提示未授权 unauthorized to access repository。
处理方法
- 创建一个secrete资源对象。以下示例中
registry-harbor
为secret资源对象的名称。除了邮箱可以随便填,其它三个需要使用实际的harbor地址和账号。
kubectl create secret docker-registry registry-harbor \--docker-server=harbor.interlweb.com \--docker-username=admin \--docker-password='Harbor12345' \--docker-email=foo@bar.com
- 在pod的yaml定义文件中使用
imagePullSecrets
引用secret
apiVersion: apps/v1
kind: Deployment
metadata:name: deploy-nginx
spec:replicas: 2selector:matchLabels:app: nginxenv: uattemplate:metadata:labels:app: nginxenv: uatspec:containers:- name: nginximage: harbor.interlweb.com/public/nginx:1.23.3ports:- containerPort: 80imagePullSecrets:- name: registry-harbor
- 创建pod测试能否正常拉取
kubectl create -f xxx.yaml