从Azure容器注册表中拉取镜像 - Kubernetes

12
有没有人能给出如何在Azure容器服务(Kubernetes)内从Azure容器注册表中拉取的建议?我尝试了以下示例部署,但镜像拉取失败:
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: jenkins-master
spec:
  replicas: 1
  template:
    metadata:
      name: jenkins-master
      labels:
        name: jenkins-master
    spec:
      containers:
      - name: jenkins-master
        image: myregistry.azurecr.io/infrastructure/jenkins-master:1.0.0
        imagePullPolicy: Always
        readinessProbe:
          tcpSocket:
            port: 8080
          initialDelaySeconds: 20
          timeoutSeconds: 5
        ports:
        - name: jenkins-web
          containerPort: 8080
        - name: jenkins-agent
          containerPort: 50000

1
https://dev59.com/uVwY5IYBdhLWcg3wWWm0 - 4c74356b41
1
谢谢你提供的信息!我已经根据它使程序能够运行,下面是我的答案。 - eggsy84
2个回答

18

在阅读了这些信息后,我成功地使它工作。

http://kubernetes.io/docs/user-guide/images/#specifying-imagepullsecrets-on-a-pod

首先创建注册表访问密钥。

kubectl create secret docker-registry myregistrykey --docker-server=https://myregistry.azurecr.io --docker-username=ACR_USERNAME --docker-password=ACR_PASSWORD --docker-email=ANY_EMAIL_ADDRESS

将服务器地址替换为您的ACR地址,将USERNAME、PASSWORD和EMAIL地址替换为您的ACR管理员用户的值。注意:电子邮件地址可以是任何值。

然后在部署中,只需告诉Kubernetes使用该密钥来拉取镜像,如下所示:

kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: jenkins-master
spec:
  replicas: 1
  template:
    metadata:
      name: jenkins-master
      labels:
        name: jenkins-master
    spec:
      containers:
      - name: jenkins-master
        image: myregistry.azurecr.io/infrastructure/jenkins-master:1.0.0
        imagePullPolicy: Always
        readinessProbe:
          tcpSocket:
            port: 8080
          initialDelaySeconds: 20
          timeoutSeconds: 5
        ports:
        - name: jenkins-web
          containerPort: 8080
        - name: jenkins-agent
          containerPort: 50000
      imagePullSecrets:
        - name: myregistrykey

3

我们已经让这个变得更加简单了。当您通过Azure CLI创建Kubernetes集群时,会创建一个具有贡献者权限的服务主体。这将使订阅中任何Azure容器注册表的拉取请求都能够被支持。

曾经有一个PR:https://github.com/kubernetes/kubernetes/pull/40142已经合并到新的Kubernetes部署中。它不适用于现有的Kubernetes实例。


1
提供一个如何实现这个的示例会是一个不错的补充。 - mwilson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接