我是Kubernetes的新手,正在使用Google Container Registry存储我的私有(private)图像,我创建了一个名为grc-puller-key的 secret 密钥

当我使用命令时:kubectl apply -f deployment.yaml我遇到了意外的行为。有时, pod 成功旋转,有时没有。当我失败时,我描述日志并看到我没有拉图像的凭据,但是有时它确实起作用。

这是我的部署

apiVersion: apps/v1
kind: Deployment
metadata:
  name: portfolio
  labels:
    app: portfolio
spec:
  selector:
    matchLabels:
      app: portfolio
  template:
    metadata:
      labels:
        app: portfolio
    spec:
      containers:
      - name: portfolio
        image: gcr.io/phuong-devops/portfolio:v1
        ports:
        - containerPort: 3000
          protocol: TCP
      imagePullSecrets:
      - name: grc-puller-key

我确定已创建名为 grc-puller-key 的 secret 。我提供的屏幕截图如下:

https://ibb.co/ZKqLMDK

最佳答案

我认为 Kubernetes官方文档中的一件事可以在某种程度上解释这种情况。我的猜测是,当部署成功时,它可能已经使用了所需镜像的本地副本。看一看this部分:

在您的部署中,没有任何明确定义的imagePullPolicy,而 kubernetes 使用默认值:



最有可能在您的部署工作时使用本地镜像。您可以通过运行以下命令在Pod事件中轻松检查它:

kubectl describe pods your-pod

如果您没有看到pulling image "image-name"事件,则表示此Pod已创建而无需合并图像,因此它使用了本地镜像。在无法拉出图像的情况下,您的Pod将进入CrashLoopBackOff状态,您将看到事件描述了实际发生的情况。

实际上,这是我目前脑中唯一可以解释这种行为的事情。您可以通过设置上述任何一项来轻松对其进行测试,并检查模式是否发生更改,即,如果访问镜像注册表存在问题,则部署是否会持续失败。

关于kubernetes - Kubernetes部署有时可以工作,有时却不行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59483040/

10-15 22:01