我已经设置了一个使用 MinIO 作为存储后端的本地注册表。
设置功能正常(这就是我没有在此处粘贴部署等的原因),我可以使用以下方式连接到注册表:
sudo docker login proj.name.registry:5045
然后推送图像:
sudo docker run hello-world
sudo docker tag hello-world proj.name.registry:5045/hello-world
sudo docker push proj.name.registry:5045/hello-world
然后我可以使用以下命令在浏览器中查看推送的图像:
或通过提供IP:
此外,命令:
curl -k https://proj.name.registry:5045/v2/_catalog
回归
{"repositories":["hello-world"]}
然后我创建了一个部署,尝试使用(秘密、卷等正确)从本地注册表中提取映像:
apiVersion: apps/v1
kind: Deployment
metadata:
name: registry-test
namespace: ches
labels:
app: registry-test
spec:
replicas: 1
selector:
matchLabels:
app: registry-test
template:
metadata:
labels:
app: registry-test
spec:
containers:
- name: registry-test
image: proj.name.registry:5045/hello-world
imagePullSecrets:
- name: ches-registry-secret
我收到以下错误:
无法拉取镜像“proj.name.registry:5045/hello-world”:rpc错误: code = 未知 desc = 无法提取和解压镜像 “proj.name.registry:5045/hello-world:latest”:解析失败 参考“proj.name.registry:5045/hello-world:latest”:失败 要求: 头 “https://proj.name.registry:5045/v2/hello-world/manifests/latest”: 拨打 tcp XX.XXX.XXX.120:5045: 连接:连接被拒绝
我已经在/etc/hosts中添加了:
XX.XXX.XXX.32 慈善机构.ches.registry
我认为错误在这里:
dial tcp XX.XXX.XXX.120
。正确的 IP 应为 XX.XXX.XXX.32.
我尝试创建一个服务:
apiVersion: v1
kind: Service
metadata:
name: ches-registry
namespace: ches
spec:
selector:
app: ches-registry #this selector to match the labels of my Deployment
ports:
- protocol: TCP
port: 5045
targetPort: 5045
externalIPs:
- XX.XXX.XXX.32
但是没有成功。
有人知道我做错了什么吗?
apiVersion: v1
kind: Secret
metadata:
name: <your-secret-name>
namespace: <your-namespace>
data:
.dockerconfigjson: UmVhbGx5IHJlYWxseSByZWVlZWVlZWVlZWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGx5eXl5eXl5eXl5eXl5eXl5eXl5eSBsbGxsbGxsbGxsbGxsbG9vb29vb29vb29vb29vb29vb29vb29vb29vb25ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubmdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2cgYXV0aCBrZXlzCg==
type: kubernetes.io/dockerconfigjson
然后编辑您的部署,告诉 kubernetes 将使用存储在机密中的哪些凭据来验证和拉取您的映像:
apiVersion: apps/v1
kind: Deployment
metadata:
name: registry-test
namespace: ches
labels:
app: registry-test
spec:
replicas: 1
selector:
matchLabels:
app: registry-test
template:
metadata:
labels:
app: registry-test
spec:
imagePullSecrets:
- name: <your-secret-name>
containers:
- name: registry-test
image: proj.name.registry:5045/hello-world
imagePullSecrets:
- name: ches-registry-secret