Docker-for-desktop kubernetes从私有存储库中提取图像

如何解决Docker-for-desktop kubernetes从私有存储库中提取图像

我是kubernetes和GCP的新手。我正在尝试在本地部署。我有一张图片,它在Google注册中心的私有存储库中。

我能够在GCP集群中进行部署,但是当我尝试应用部署时,在本地得到ErrImagePull

我尝试了以下步骤

  1. 使用角色Service Account创建了一个Viewer并下载了json文件

  2. 我使用以下命令openssl base64 -in file.json -out encodedfile.json

    文件进行了编码
  3. 删除了编码文件上的返回字符(将编码内容放在一行中)

  4. 我创建了一个带有Yaml的机密,以便能够访问Docker注册表,并将已编码文件内容粘贴到.dockerconfigjson

    apiVersion:v1 种类:秘密 元数据: 名称:gcr-json-key 命名空间:开发 数据: .dockerconfigjson:xxxxx 类型:kubernetes.io/dockerconfigjson

  5. 在我添加的部署中

    imagePullSecrets:

我遇到了同样的错误,它无法从Google私有注册表中提取到我的本地计算机中


更新1

我使用此命令对json文件进行了编码

base64 -i myorg-8b8eea93246a.json -o encoded-myorg-8b8eea93246a.json

然后我检查了此编码文件是否有效

cat encoded-myorg-8b8eea93246a.json | docker login -u _json_key_base64 --password-stdin \
https://us-docker.pkg.dev

成功了

Login Succeeded

这是我用来创建机密的yaml文件

apiVersion: v1
kind: Secret
Metadata:
  name: gcr-json-key
  namespace: development
data:
  .dockerconfigjson: <XXXX content of encoded myorg-8b8eea93246a.json file XXXX>
type: kubernetes.io/dockerconfigjson

在部署中,我有

...
spec:
  ...
  imagePullSecrets:
  - name: gcr-json-key
...

已创建部署,但未提取映像。在kubectl get all中,我可以看到状态ImagePullBackOff

当我对吊舱进行描述

Failed to pull image "gcr.io/xxx/yyy": rpc error: code = UnkNown desc = Error response from daemon: unauthorized: You don't have the needed permissions to perform this operation,and you may have invalid credentials.

解决方法

您在正确的道路上。您需要为注册表登录创建密码。这对我有用:

import requests
from bs4 import BeautifulSoup as bs
import pandas as pd
import datetime

def get_date(date_string):
    date_parts = date_string.split(' ')
    article_date = '-'.join([date_parts[-1],month_numbers[date_parts[1].lower()],date_parts[0].zfill(2)])
    d = datetime.datetime.strptime(article_date,"%Y-%m-%d").date()
    return d

month_numbers =  { 'gennaio' : '01','febbraio' : '02','marzo' : '03','aprile' : '04','maggio' : '05','giugno' : '06','luglio' : '07','agosto' : '08','settembre' : '09','ottobre' : '10','novembre' : '11','dicembre' : '12',}

next_page = True
final = pd.DataFrame()

def main(page):
    global final
    global next_page
    results = []

    with requests.Session() as s:

        soup =  bs(s.get(f'http://www.lavocedellevoci.it/category/inchieste/page/{page}').content,'lxml')
    
        for article in soup.select('article'):  #soup.select('article:has(a:contains("Inchieste"))') if need to be more restrictive in future
            title = article.select_one('h1').text
            date = get_date(article.select_one('.homepage_post-date').text)
            link = article.select_one('.read-more')['href']
            soup2 =  bs(s.get(link).content,'lxml')
            text = '\n'.join([i.text for i in soup2.select('article p:not([class])')])
            results.append([title,date,text])

        df = pd.DataFrame(results,columns = ['Title','Date','Content'])
        
        if df.empty:
            final = df
        else:
            final = pd.concat([final,df],sort = False)
        
        next_page = soup.select_one('.next') is not None
        
if __name__ == '__main__':
    page = 1

    while next_page: # page < 3: 
        main(page)
        page+=1
        
    final = final.sort_values('Date').reset_index()
    print(final)

然后我将这个秘密用于部署:

kubectl create secret docker-registry <secret_name> --docker-server=<your.registry.domain.name> --docker-username=<user> --docker-password=<password> --docker-email=<your_email>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?