如何从Kubernetes on Vagrant访问私有Docker Hub存储库

And*_*dré 23 docker kubernetes

我无法从我的私有Docker Hub存储库拉到我在Vagrant上运行的本地Kubernetes设置:

pod"hellonode-n1hox"中的容器"hellonode"正在等待启动:图像无法拉动

无法提取图像"username/hellonode":错误:图像用户名/ hellonode:最新未找到

我已经在这里通过Vagrant在本地设置了Kubernetes 并创建了一个名为"dockerhub"的秘密,其中包含kubectl创建秘密docker-registry dockerhub --docker-server = https://registry.hub.docker.com/ --docker-username = username --docker-password = ... --docker-email = ...我提供的图像拉秘密.

我正在运行Kubernetes 1.2.0.

Ric*_*sma 72

从Kubernetes YAML中提取私有DockerHub托管图像:

运行以下命令:

DOCKER_REGISTRY_SERVER=docker.io
DOCKER_USER=Type your dockerhub username, same as when you `docker login`
DOCKER_EMAIL=Type your dockerhub email, same as when you `docker login`
DOCKER_PASSWORD=Type your dockerhub pw, same as when you `docker login`

kubectl create secret docker-registry myregistrykey \
  --docker-server=$DOCKER_REGISTRY_SERVER \
  --docker-username=$DOCKER_USER \
  --docker-password=$DOCKER_PASSWORD \
  --docker-email=$DOCKER_EMAIL
Run Code Online (Sandbox Code Playgroud)

如果您在DockerHub上的用户名是DOCKER_USER,并且您的私人仓库被调用PRIVATE_REPO_NAME,并且您想要提取的图像被标记为latest,则创建此example.yaml文件:

apiVersion: v1
kind: Pod
metadata:
  name: whatever
spec:
  containers:
    - name: whatever
      image: DOCKER_USER/PRIVATE_REPO_NAME:latest
      imagePullPolicy: Always
      command: [ "echo", "SUCCESS" ]
  imagePullSecrets:
    - name: myregistrykey
Run Code Online (Sandbox Code Playgroud)

然后运行:

kubectl create -f example.yaml
Run Code Online (Sandbox Code Playgroud)

  • 对于组织私人回购,这应该以同样的方式运作吗?它不断失败,不确定图像的URL是否需要以某种方式不同 (3认同)
  • 对于像我这样的白痴,如果您要为命名空间部署创建命名空间,请添加命名空间,我花了至少半个小时才意识到 (3认同)
  • 最好的答案肯定 (2认同)
  • 如果你想避免kube-hell,请使用他的答案. (2认同)
  • 可能某个地方的事情在很久以前就被改变了,来自回答错误的配方出现了"无法拉图像"index.docker.io/DOCKER_USER/PRIVATE_REPO/IMAGE_NAME:latest":rpc错误:代码=未知desc =来自守护进程的错误响应:对DOCKER_USER/PRIVATE_REPO/IMAGE_NAME拒绝访问权限,存储库不存在或可能需要"docker login".但是更改`DOCKER_REGISTRY_SERVER = docker.io`和`image:PRIVATE_REPO_NAME:latest`一切都运行正常 (2认同)

Pha*_*aya 7

创建k8秘密:

apiVersion: v1
kind: Secret
metadata:
  name: repositorySecretKey
data:
  .dockerconfigjson: <base64 encoded docker auth config>
type: kubernetes.io/dockerconfigjson
Run Code Online (Sandbox Code Playgroud)

然后在pod或rc config中提到秘密.示例:

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
spec:
  containers:
    - name: test-pod
      image: quay.io/example/hello:1.1
  imagePullSecrets:
    - name: repositorySecretKey
Run Code Online (Sandbox Code Playgroud)

Docker auth配置

{
   "https://quay.io": {
    "email": ".",
    "auth": "<base64 encoded auth token>"
  }
}
Run Code Online (Sandbox Code Playgroud)

要么

kubectl create secret docker-registry myregistrykey \
    --docker-server=DOCKER_REGISTRY_SERVER \
    --docker-username=DOCKER_USER \
    --docker-password=DOCKER_PASSWORD \
    --docker-email=DOCKER_EMAIL
Run Code Online (Sandbox Code Playgroud)