Pod无法从私有Docker注册表中提取图像

问题描述 投票:0回答:1

我遇到了一些麻烦,无法从我已设置并能够进行身份验证的私有Docker注册表中提取吊舱图像(我可以进行docker登录https://my.website.com/,并且无需输入用户名即可成功登录) :password)(我可以运行docker pull my.website.com:5000/human/forum并查看所有正在下载的层。)。

我使用https://github.com/bazelbuild/rules_k8s#aliasing-eg-k8s_deploy来指定名称空间为"default"

[在生成"HTTPS://my.website.com:5000/V2/"密钥之前,我确保将regcred(小写)放在docker config文件的auth节中。

注意,我在下面指定了imagePullSecrets

# deployment.yaml
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: angular-bazel-example-prod
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: angular-bazel-example-prod
    spec:
      containers:
       - name: angular-bazel-example
         image: human/forum:dev
         imagePullPolicy: Always
         ports:
         - containerPort: 8080
      imagePullSecrets:
       - name: regcred # Notice

我确保更新我的证书颁发机构证书:

cp /etc/docker/certs.d/my.website.com\:5000/ca.crt /usr/local/share/ca-certificates/my.website.registry.com/
sudo update-ca-certificates

我看到sudo curl --user testuser:testpassword --cacert /usr/local/share/ca-certificates/my.website.registry.com/ca.crt -X GET https://mywebsite.com:5000/v2/_catalog

> {"repositories":["human/forum"]}

我看到sudo curl --user testuser:testpassword --cacert /usr/local/share/ca-certificates/mywebsite.registry.com/ca.crt -X GET https://mywebsite.com:5000/v2/human/forum/tags/list

> {"name":"a/repository","tags":["dev"]}

必须有一种解决此问题的方法,但我不知道如何。

我好奇的是

kubectl describe pod my-first-pod...
...
Volumes:
  default-token-mtz9g:
    Type:        Secret

我在哪里可以找到这本书?我无法将kubectl exec放入容器,因为没有容器正在运行。.因为吊舱无法拉出图像。

您对如何解决此问题有任何想法吗?

谢谢!

Slackware

kubernetes
1个回答
0
投票

创建kubernetes机密以访问自定义存储库。一种方法是手动提供服务器,用户和密码。 Documentation link

kubectl create secret docker-registry $YOUR_REGISTRY_NAME --docker-server=https://$YOUR_SERVER_DNS/v2/ --docker-username=$YOUR_USER --docker-password=$YOUR_PASSWORD [email protected] --namespace=default

然后在您的Yaml中使用它

...
      imagePullSecrets:
       - name: $YOUR_REGISTRY_NAME

关于您看到的默认令牌,它属于您的Pod用于与kubernetes api对话的服务帐户。您可以通过运行kubectl get sakubectl describe sa $DEFAULT_SERVICE_ACCOUNT_ID找到服务帐户。通过运行kubectl get secretskubectl describe secret $SECRET_ID查找令牌。为了阐明此服务帐户和令牌,除非您指定它与Docker注册表无关。要将注册表包含在服务帐户中,请遵循此指南link

© www.soinside.com 2019 - 2024. All rights reserved.