我正在尝试(出于测试目的)向kubernetes公开一个非常简单的图像pong http:
FROM golang:onbuild
EXPOSE 8000
我构建了泊坞窗图像:
docker build -t pong .
我创建了一个私人注册表(带证书):
docker run -d --restart=always --name registry -v `pwd`/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key -p 443:443 registry:2.6.2
我创造了一个秘密:
kubectl create secret docker-registry regsecret --docker-server=localhost --docker-username=johndoe --docker-password=johndoe --docker-email=johndoe@yopmail.com
我上传了图片:
docker tag 9c0bb659fea1 localhost/pong
docker push localhost/pong
我有一个不安全的注册表配置
{
"storage-driver" : "aufs",
"insecure-registries" : [
"localhost"
],
"debug" : true,
"experimental" : true
}
所以我尝试用以下方法创建我的kubernetes pod:
apiVersion: v1
kind: Pod
metadata:
name: pong
spec:
containers:
- name: pong
image: localhost/pong:latest
imagePullPolicy: Always
imagePullSecrets:
- name: regsecret
我在MacOS上使用docker Version 17.12.0-ce-mac49(21995)。
如果我使用image: localhost/pong:latest
,我得到了:
waiting:
message: 'rpc error: code = Unknown desc = Error response from daemon: error
parsing HTTP 404 response body: invalid character ''d'' looking for beginning
of value: "default backend - 404"'
reason: ErrImagePull
自本周开始以来我一直坚持下去,但没有成功。
答案 0 :(得分:1)
这不是注册表配置的问题。 我忘了提到我使用了minikube。
对于要考虑的标志,我必须删除minikube配置并重新创建
public loginByUsernameAndPassword(username: string, password: string): Observable<boolean> {
let urlSearchParams = new URLSearchParams();
urlSearchParams.append('username', username);
urlSearchParams.append('password', password);
urlSearchParams.append('user_uniqueIdid', '0');
urlSearchParams.append('session_id', '0');
let body = urlSearchParams.toString();
let headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
return this.http.post(Api.getUrl(Api.URLS.Login), body, {
headers: headers
})
.map((response: Response) => {
let res = response.json();
console.log(rs)// show Permissions[]
if (res.StatusCode === 0 && res.Token) {
this.currentUser = {
username: username,
token: res.Token
}
localStorage.setItem(AuthService.CURRENT_USER, JSON.stringify(this.currentUser));
return true;
} else {
return false;
}
});
}
minikube delete
答案 1 :(得分:0)
嘿尝试使用这个漂亮的前端应用https://hub.docker.com/r/konradkleine/docker-registry-frontend/
浏览您的注册表也许这会给你一些提示,看起来注册表有一些配置问题......
答案 2 :(得分:0)
而不是先删除群集(minikube delete
),可以在json
编辑配置~/.minikube/config/config.json
,以便相应地添加此部分:
{
...
"HostOptions": {
...
"InsecureRegistry": [
"private.docker.registry:5000"
],
...
},
...
}
...
}
这仅适用于已启动的群集,因为配置文件不会以其他方式填充。上面使用minikube --insecure-registry=""
的答案很好。