我对Kubernetes非常陌生,并且我成功地获得了一个使用minikube在本地部署的角应用程序。但是现在我正在处理一个Bitnami Kubernetes沙盒 EC2实例,并且遇到了从另一个EC2实例上从我的坞注册中心提取的问题。
每当我尝试应用部署时,pods都会记录以下错误
Failed to pull image "registry-url.net:5000/app": no available registry endpoint:
failed to do request: Head https://registry-url.net/v2/app/manifests/latest:
x509: certificate signed by unknown authority
码头注册证书是由CA (Comodo RSA)签名的,但是我必须将注册表的.crt
和.key
文件添加到/etc/docker/certs.d/registry-url.net:5000/
中,以获取本地的minikube和docker副本。
但是,Bitnami实例没有一个/etc/docker/
目录,也没有添加不安全注册表异常的daemon.json
文件,我也不确定是否应该将证书文件定位于kubeadm。
所以,是否有类似的位置来放置kubeadm的.crt
.key
和.key
文件,或者是否有一个命令可以将我的停靠器注册表添加到异常列表中?
或者更好的是,是否有一种方法可以让Kubernetes/docker识别注册表SSL证书的CA?
谢谢
编辑:我已经在下面列出了我的部署和秘密文件:
app-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-deployment
spec:
replicas: 1
selector:
matchLabels:
app: app
template:
metadata:
labels:
app: app
spec:
containers:
- name: app
image: registry-url.net:5000/app
ports:
- containerPort: 80
env:
...
imagePullSecrets:
- name: registry-pull-secret
registry-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: registry-pull-secret
data:
.dockerconfigjson: <base-64 JSON>
type: kubernetes.io/dockerconfigjson
发布于 2019-10-07 17:50:29
因此,我通过以下命令手动安装了docker,从而解决了我的问题:
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get install docker-ce docker-ce-cli containerd.io
然后我必须创建目录结构/etc/docker/certs.d/registry-url:5000/
,并将注册表的.crt
和.key
文件复制到目录中。
但是,这仍然不起作用;但是在停止EC2实例并再次启动它之后,它似乎没有问题地从远程注册表中提取。
当我最初运行service kubelet restart
时,这些更改似乎并没有生效,但是重新启动起了关键作用。我不确定是否有更好的方法来解决我的问题,但这是唯一对我有效的解决办法。
发布于 2019-10-03 22:51:26
您需要创建一个包含存储库详细信息的secret
。
这可能是将图像上传到码头回购系统的示例:
docker login _my-registry-url_:5000
Username (admin):
Password:
Login Succeeded
docker tag _user_/_my-cool-image_ _my-registry-url_:5000/_my-cool-image_:0.1
docker push _my-registry-url_:5000/_my-cool-image_:0.1
在该主机上,您应该创建base64 of ~/.docker/config.json
,类似于so cat ~/.docker/config.json | base64
,然后您将能够将其添加到秘密中,因此创建一个可能如下所示的yaml
:
apiVersion: v1
kind: Secret
metadata:
name: registrypullsecret
data:
.dockerconfigjson: <base-64-encoded-json-here>
type: kubernetes.io/dockerconfigjson
一旦完成,您可以使用kubectl create -f my-secret.yaml && kubectl get secrets
应用这个秘密。
至于您的pod
,应该如下所示:
apiVersion: v1
kind: Pod
metadata:
name: jss
spec:
imagePullSecrets:
— name: registrypullsecret
containers:
— name: jss
image: my-registry-url:5000/my-cool-image:0.1
https://stackoverflow.com/questions/58226349
复制相似问题