10

我的公司使用它自己的根 CA,当我尝试提取图像时。即使来自私人注册表,我也会收到错误消息:

1h 3m 22 {kubelet minikube} Warning FailedSync Error syncing pod, skipping: failed to "StartContainer" for "POD" with ErrImagePull: "image pull failed for gcr.io/google_containers/pause-amd64:3.0,这可能是因为有此请求没有凭据。

详细信息:(来自守护进程的错误响应:获取https://gcr.io/v1/_ping:x509:由未知权威签署的证书)“1h 10s 387 {kubelet minikube} 警告 FailedSync 同步 pod 时出错,跳过:失败到“StartContainer”对于带有 ImagePullBackOff 的“POD”:“后退拉图像 \"gcr.io/google_containers/pause-amd64:3.0\""

如何将根 CA 安装到 minkube 或避免此消息,即仅使用私有注册表,并且不从中提取任何内容gcr.io

4

3 回答 3

10

到目前为止,我发现的唯一解决方案是将 --insecure-registry gcr.io 选项添加到 minikube。

于 2017-03-07T15:08:13.287 回答
5

讲话:

x509: certificate signed by unknown authority

你能试试 Minikube repo 的以下建议吗?

将证书复制到虚拟机中。位置应该是:

/etc/docker/certs.d/

从这里:https ://docs.docker.com/engine/security/certificates/

参考

该线程还包括以下单行:

cat <certificatefile> \
  | minikube ssh "sudo mkdir -p /etc/docker/certs.d/<domain> && sudo tee /etc/docker/certs.d/<domain>/ca.crt"

这里的问题是需要更新的 Linux 主机的 CA 信任链。最简单的方法是在将证书复制到 VM 后重新启动 Linux 主机,如果重新启动不是一个选项 - 寻找一种方法来update-ca-certificates.

仅重新启动 Docker 守护程序很可能无法解决此问题

注意:允许 Docker 守护进程使用不安全的注册表意味着证书没有经过验证。虽然这可能会有所帮助,但它并不能解决这里提出的问题

于 2017-03-07T12:16:48.617 回答
0

一个独立于 minikube 的直接方法是使用imagePullSecrets配置。如从私有注册表中提取图像指南中所述,您可以创建一个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- 详情请参阅文档


编辑:即使在官方minikube文档中,您也会发现它们Secretsregistry-creds插件一起使用。

您将在此处找到通用文档,并在此处找到插件的文档

它烧毁为:

minikube addons enable registry-creds

但从技术上讲,它的作用与上述相同。

于 2017-03-07T11:16:20.793 回答