我确实使用单个pod进行了部署,并使用了我的自定义docker映像,例如:
containers:
- name: mycontainer
image: myimage:latest
在开发过程中,我想推送新的最新版本并更新Deployment。如果没有显式定义标签/版本并为每个版本增加它,就找不到方法。
kubectl set image deployment/my-deployment mycontainer=myimage:1.9.1
您可以为Pod配置宽限期(例如30秒或更长时间,具体取决于容器启动时间和图像大小)并进行设置"imagePullPolicy: "Always"
。并使用kubectl delete pod pod_name
。将创建一个新容器,并自动下载最新的映像,然后终止旧容器。
例:
spec:
terminationGracePeriodSeconds: 30
containers:
- name: my_container
image: my_image:latest
imagePullPolicy: "Always"
我目前正在使用Jenkins进行自动构建和图像标记,它看起来像这样:
kubectl --user="kube-user" --server="https://kubemaster.example.com" --token=$ACCESS_TOKEN set image deployment/my-deployment mycontainer=myimage:"$BUILD_NUMBER-$SHORT_GIT_COMMIT"
另一个技巧是初始运行:
kubectl set image deployment/my-deployment mycontainer=myimage:latest
然后:
kubectl set image deployment/my-deployment mycontainer=myimage
它实际上会触发滚动更新,但请确保您也已imagePullPolicy: "Always"
设置。
更新:
我发现的另一个技巧是,无需更改图像名称,而是更改将触发滚动更新的字段的值,例如terminationGracePeriodSeconds
。您可以使用kubectl edit deployment your_deployment
或kubectl apply -f your_deployment.yaml
使用如下补丁来做到这一点:
kubectl patch deployment your_deployment -p \
'{"spec":{"template":{"spec":{"terminationGracePeriodSeconds":31}}}}'
只要确保您始终更改数字值即可。
问题内容: 每次部署之前,我都有一个要用以下命令更新的映像。 此命令将覆盖先前的图像。我如何备份此映像(或在不提交到网络存储库的情况下,在本地将其更改为其他标签?如果有任何问题,我可以还原备份。 问题答案: 如何备份这张图片 只需使用docker save 命令。 您稍后将可以使用docker load 命令将其还原。 还是将其更改为本地的其他标签,而无需提交网络存储库? 使用docker tag
null null 如果没有对第1号的解决方案,因此我们可以基于某些约定进行部署,那么现在的问题进一步涉及到如何以自动化的方式管理入口。由于服务将由自动的CI/CD管道部署,并且随着服务被添加到集群中,可能会添加新的路径,因此CI/CD编排器(例如jenkins)如何在部署应用程序时更新入口路由?以便我们确信不需要人工干预集群,并且每条路由都与相应的服务一起部署? 我希望所提供的资料足以理解这个问
2) client().Extensions().Deployments().InNamespace(namespaceName).WithName(deploymentName).CreateOrReplace(deployment); 3) client().Extensions().Deployments().InNamespace(namespaceName).WithName(deplo
我有一个部署,其中包括一个configMap、persistentVolumeClaim和一个服务。我已经更改了configMap并将部署重新应用到我的集群中。我了解到此更改不会在部署中自动重启pod: 下面是Wiki.yaml的样子:
一旦所说的图像在相应的注册表中被更新,那么让我的亚马逊ECS任务更新其Docker图像的正确方法是什么?
我正在尝试使用以声明方式创建一个部署 但如果我走了 我收到了一条可爱的错误消息: 错误:无法解码“postgres deployment.yaml”:没有为版本“apps/v1beta1”注册任何类型的“deployment” 我试图寻找一个解释这意味着什么,但我不明白。