Kubernetes 如何将根CA添加到minikube?

Kubernetes 如何将根CA添加到minikube?,kubernetes,minikube,Kubernetes,Minikube,我的公司使用自己的根CA,当我尝试提取图像时。即使是从私人注册表中,我也会遇到以下错误: 1h 3m 22{kubelet minikube}警告同步失败错误同步 pod,正在跳过:无法使用ERRIGEPULL为“pod”启动“StartContainer”: “gcr.io/google_containers/pause-amd64:3.0的图像拉取失败,此 可能是因为此请求中没有凭据 详情: (来自守护进程的错误响应:Get:x509: 由未知机构签署的证书) 1h 10s 387{kube

我的公司使用自己的根CA,当我尝试提取图像时。即使是从私人注册表中,我也会遇到以下错误:

1h 3m 22{kubelet minikube}警告同步失败错误同步 pod,正在跳过:无法使用ERRIGEPULL为“pod”启动“StartContainer”: “gcr.io/google_containers/pause-amd64:3.0的图像拉取失败,此 可能是因为此请求中没有凭据

详情: (来自守护进程的错误响应:Get:x509: 由未知机构签署的证书) 1h 10s 387{kubelet minikube}警告失败同步pod时出错,跳过:未能与“pod”的“StartContainer”同步 ImagePullBackOff:“向后拉图像 \“gcr.io/google_容器/pause-amd64:3.0”


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

独立于minikube进行此操作的直接方法是使用
imagePullSecrets
配置。如指南中所述,您可以创建一个
秘密
,并将其与图像一起使用,如下所示:

apiVersion: v1
kind: Pod
metadata:
  name: demo-pod
spec:
  containers:
    - name: private-container
      image: <your-private-image>
  imagePullSecrets:
    - name: the_secret
或与:

kubectl create secret generic the_secret --from-file=.docker/config.json
或与
kubectl create secret
相关的任何其他信息-请参阅


编辑:即使在官方的
minikube
文档中,您也会发现他们使用
机密
以及
注册表凭据
插件

您将找到通用文档和插件的文档

它燃烧到:

minikube addons enable registry-creds
但从技术上讲,它与上述操作相同。

要解决:

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"
cat\
|minikube ssh“sudo mkdir-p/etc/docker/certs.d/&&sudo tee/etc/docker/certs.d//ca.crt”
这里的问题是需要更新的Linux主机的CA信任链。最简单的方法是在将证书复制到VM后重新启动Linux主机,如果不选择重新启动-请寻找更新ca证书的方法

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



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

到目前为止,我找到的唯一解决方案是在minikube中添加--不安全的注册表gcr.io选项。

似乎问题更多地与ca信任链有关,在这种情况下,ca证书需要添加到minikube主机操作系统的ca证书文件夹中。。。我假设需要类似于以下内容的东西-是的。我的公司给了我一个文档,其中说要将根CA放到/usr/share/CA certificates/,然后运行dpkg重新配置CA证书或更新CA信任启用。问题是minikube没有这个命令,我不知道如何启用我公司的根ca。将它放在/etc/docker/certs.d/上没有帮助。@arykalin-我不确定minikube的发行版是什么,你能检查一下
cat/etc/*release*
并告诉我吗?如果是alpine,您可能需要
apk安装--无缓存ca证书和更新ca证书
我尝试了这个,但没有帮助。在MuiKube系统里面的一些东西在重启后也不会持续。嘿,你是否可以考虑更新你的问题,这样你的问题就更容易重现了?不幸的是,这是不可能的,因为你需要支持替代根的特殊软件。CA@gerdi,您的编辑使问题无法阅读。。请revert@VincentDeSmet你好,谢谢你的反馈,你能解释一下它是怎么读不出来的吗?也可以考虑编辑它来相应地改变它。感谢,创建/etc/docker/certs.d/gcr.io并将根CA放到那里有帮助。谢谢。嗯,不,对不起,看起来不一样
docker pull gcr.io/google_containers/pause-amd64:3.0 3.0:从google_containers中提取/pause-amd64 a3ed95caeb02:下载F112334377:下载x509:未知权限签名的证书
是否尝试重新启动minikube?可能是启动过程中从certs文件夹加载了证书?-我链接的博客文章也提到需要重新启动。嗯,我尝试重新启动docker daemon,如果我重新启动minikube,它不会保留我的更改,我也找不到保留更改的方法。docker daemon不是这里信任证书的人。。。minikube使用的linux发行版需要将复制到certs目录的证书添加到其信任链中。我不确定minikube是否基于alpine,但您可以尝试类似的方法:(从目录加载证书)
--unsecure registry=“gcr.io”
?如果您需要添加多个不安全的注册表怎么办?或者可能是
--unsecure registry k8s.gcr.io
a,当我不可避免地忘记:“如果计算机已存在(即使已停止),则忽略
--不安全注册表
标志。”。如果希望新标志得到遵守,则必须首先
minikube delete
。@DavidWest此选项值可能是一个数组。
cat <certificatefile> \
  | minikube ssh "sudo mkdir -p /etc/docker/certs.d/<domain> && sudo tee /etc/docker/certs.d/<domain>/ca.crt"