我是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/