k8s部署文件的Deployment镜像地址是自己之前部好的harbor私有仓库,执行apply命令之后,查看pod状态提示镜像拉取失败。进入harbor查看仓库的访问级别。
项目仓库的访问级别为公有的可以直接拉取。访问的项目仓库的访问级别为私有,所以不能直接拉取镜像。需要在k8s中配置secret。
直接用命令创建,替换掉括号和里面的内容:
kubectl create secret docker-registry (secretName) --docker-server=(registryAddress>)–docker-username=(username) --docker-password=(password) --docker-email=(email)
secretName:创建serect的名字。
registryAddress:镜像仓库地址。
username:仓库账号。
password:仓库密码。
email:email地址。
在需要拉取的yml中添加secret引用:
imagePullSecrets:
- name: secretname
如:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: demo-deployment
spec:
replicas: 1
template:
metadata:
labels:
app: demo
spec:
containers:
- name: demo
image: 192.168.1.1/demo/demo-app:latest
ports:
- containerPort: 8088
env:
- name: TZ
value: Asia/Shanghai
imagePullSecrets:
- name: demo-secret
执行:
kubectl apply -f demo.yml
就可以正常拉取私有仓库镜像了。