【问题标题】:imagePullSecrets on default service account don't seem to work默认服务帐户上的 imagePullSecrets 似乎不起作用
【发布时间】:2019-12-26 02:02:14
【问题描述】:

我基本上是在尝试从 Azure kubernetes 集群中提取 GCR 图像。 我的默认服务帐户如下:

kubectl get serviceaccounts default -o yaml                            
apiVersion: v1
imagePullSecrets:
- name: gcr-json-key-stg
kind: ServiceAccount
metadata:
  creationTimestamp: "2019-12-24T03:42:15Z"
  name: default
  namespace: default
  resourceVersion: "151571"
  selfLink: /api/v1/namespaces/default/serviceaccounts/default
  uid: 7f88785d-05de-4568-b050-f3a5dddd8ad1
secrets:
- name: default-token-gn9vb

如果我将相同的 imagePullSecret 添加到各个部署中,它会起作用。所以,秘密是正确的。但是,当我将它用于默认服务帐户时,我收到 ImagePullBackOff 错误,在描述时确认这是一个权限问题。

我错过了什么吗? 我已确保我的部署未配置任何其他特定服务帐户,并且应该使用默认服务帐户。

【问题讨论】:

  • 为什么你认为这应该有效?它应该如何工作?
  • 我认为默认服务帐户与所有没有明确关联的服务帐户的资源相关联。如果没有,它应该如何工作? @4c74356b41

标签: kubernetes google-kubernetes-engine azure-aks


【解决方案1】:

好的,问题是我添加imagePullSecretdefault 服务帐户不在同一个命名空间中。 有一次,我修补了该命名空间中的默认服务帐户,它运行良好。

【讨论】:

  • 问题中没有完整信息,然后导致错误。所以除了你,没有人能解决你的问题。好了!
【解决方案2】:

将拉取镜像的密码添加到服务帐户后,您需要将服务帐户添加到您的 pod 或部署中。例如:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: helloworld-deployment
spec:
  selector:
    matchLabels:
      run: helloworld
  replicas: 1
  template:
    metadata:
      labels:
        app: helloworld
    spec:
      containers:
      - name: helloworld
        image: yourPrivateRegistry/image:tag
        ports:
        - containerPort: 80
      serviceAccountName: pull-image     # your service account

服务帐号pull-image 如下所示:

【讨论】:

  • 如果不指定serviceaccount名称,默认使用default服务帐号。
  • @kosta 是的,但有什么不同?您没有提供所有 YAML 文件,那么人们如何为您找出错误?!我能说的是服务帐号可以很好地工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-04
  • 1970-01-01
  • 1970-01-01
  • 2021-12-17
  • 2017-03-15
  • 2016-06-01
  • 2020-06-23
相关资源
最近更新 更多