每次有代码提交到github时,我都尝试用Azure Kubernetes服务上的最新图像内容更新我的部署。我已经做了一个阶段,在我的建设管道,以建立和推动的形象码头枢纽,这是非常好的工作。然而,在我的发布管道中,映像被用作工件,并被部署到Azure Kubernetes服务中,但问题是AKS上的映像没有按照最新代码推送到Docker Hub上的映像进行更新。
现在,每次提交发生时,我都必须通过命令手动更新AKS上的图像
kubectl设置映像部署/演示-microservice演示-microservice=customerandcontact:联系人
我的Yaml档案
有人能告诉我的yaml文件中的错误/更改,以便自动更新AKS上的图像吗?
发布于 2019-11-03 07:20:38
当您在同一个标记下将一个新图像重新显示到容器注册表时,它对Kubernetes没有任何意义。如果您运行kubectl apply -f ...
,并且图像名称和标记保持不变,它仍然不会执行任何操作,因为没有任何配置更改。有两种选择:
:contact
更改为yaml中的新标记,并运行kubectl只为dev环境应用:latest
),并且在部署新映像以运行kubectl delete pod demo-microservice
之后。由于您已经将图像拖放策略设置为始终,这将导致Kubernetes从注册表中提取一个新图像并重新部署pod.。
第二种方法是一种仅用于测试的解决方法。
发布于 2019-11-03 07:31:28
当您使用特定的图像标记指定图像时,Kubernetes将默认容器的imagePullPolicy
为IfNotPresent
,这意味着该图像将不再被提取,而先前已提取的图像将被部署。
只有当标记不存在时,Kubernetes才会将策略更改为Always
(这实际上与latest
相同,或者标记被显式设置为latest
)。
检查特定容器的部署模板上的实际imagePull策略。
kubectl get pod demo-microservice -o yaml | grep imagePullPolicy -A 1
尝试修补部署
kubectl patch deployment demo-microservice -p
'{"spec": { "template" :
{ "spec" : { "containers" :
[{"name" : "demo-microservice",
"image" : "repo/image:tag",
"imagePullPolicy": "Always" }]}}}}'
确保将所述容器的imagePullPolicy
设置为Always
。
https://stackoverflow.com/questions/58654844
复制相似问题