当我尝试提取图片时,我的公司使用它自己的根CA.即使是私人注册表,我也会收到错误:
1h 3m 22 {kubelet minikube}警告FailedSync同步错误 pod,跳过:使用ErrImagePull“POD”的“StartContainer”失败: “图片拉取失败了gcr.io/google_containers/pause-amd64:3.0,这个 可能是因为此请求没有凭据。
细节: (来自守护程序的错误响应:获取https://gcr.io/v1/_ping:x509: 由未知权威签署的证书)“ 1h 10s 387 {kubelet minikube}警告FailedSync错误同步窗格,跳过:“POD”失败为“StartContainer” ImagePullBackOff:“退回拉图像 \ “gcr.io/google_containers/pause-amd64:3.0 \”“
如何将根CA安装到minkube或避免此消息,即仅使用私有注册表,并且不要从gcr.io
提取任何内容?
答案 0 :(得分:6)
我到目前为止找到的唯一解决方案是在minikube中添加--insecure-registry gcr.io选项。
答案 1 :(得分:3)
解决:
x509: certificate signed by unknown authority
请你试试Minikube repo的以下建议吗?
将证书复制到VM中。位置应该是:
/etc/docker/certs.d /
该帖子还包括以下单行:
cat <certificatefile> \
| minikube ssh "sudo mkdir -p /etc/docker/certs.d/<domain> && sudo tee /etc/docker/certs.d/<domain>/ca.crt"
此处的问题是需要更新的Linux主机的CA Trust链。最简单的方法是在将证书复制到VM后重新启动Linux主机,如果不能重新启动 - 请寻找update-ca-certificates
的方法。
重新启动Docker守护程序很可能无法解决此问题
注意:允许Docker守护程序使用不安全的注册表意味着证书未经过验证..虽然这可能有所帮助,但它并没有解决这里提出的问题
答案 2 :(得分:0)
独立于minikube执行此操作的直接方法是使用imagePullSecrets
配置。如Pulling an Image from a Private Registry指南中所述,您可以创建Secret
并将其与您的图片一起使用,如下所示:
apiVersion: v1
kind: Pod
metadata:
name: demo-pod
spec:
containers:
- name: private-container
image: <your-private-image>
imagePullSecrets:
- name: the_secret
可以使用以下内容创建the_secret
的地方:
kubectl create secret docker-registry the_secret --docker-server=xxx --docker-username=xxx --docker-password=xxx --docker-email=xxx
或者用:
kubectl create secret generic the_secret --from-file=.docker/config.json
或与kubectl create secret
相关的任何其他内容 - 请参阅documentation for details。
修改:即使在官方minikube
文档中,您也会发现他们使用Secrets
以及registry-creds
插件。
它归结为:
minikube addons enable registry-creds
但从技术上讲,它与上述相同。