我遵循了一些指南,我已经用谷歌容器引擎和谷歌容器注册表设置了CI。问题是我的更新没有应用到部署中。
这就是我的部署。yml包含Kubernetes服务和部署:
apiVersion: v1
kind: Service
metadata:
name: my_app
labels:
app: my_app
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 3000
selector:
app: my_app
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: my_app
spec:
replicas: 1
template:
metadata:
labels:
app: my_app
spec:
containers:
- name: node
image: gcr.io/me/my_app:latest
ports:
- containerPort: 3000
resources:
requests:
memory: 100
- name: phantom
image: docker.io/wernight/phantomjs:2.1.1
command: ["phantomjs", "--webdriver=8910", "--web-security=no", "--load-images=false", "--local-to-remote-url-access=yes"]
ports:
- containerPort: 8910
resources:
requests:
memory: 1000
作为CI过程的一部分,我运行了一个脚本来更新google cloud registry中的图像,然后运行kubectl apply-f/deploy/deployment。yml
。这两项任务都成功了,我收到通知,部署和服务已更新:
2016-09-28T14:37:26.375Zgoogleclouddeploymentservice "my_app" configured
2016-09-28T14:37:27.370Zgoogleclouddeploymentdeployment "my_app" configured
由于我在图像中添加了:latest
标记,我以为每次更新部署时都会下载图像。根据文档aRollingUpdate
也应该是默认策略。
但是,当我运行更新部署的CI脚本时,不会下载更新的映像,也不会应用更改。我错过了什么?我假设在部署中没有任何变化。yml
,未应用任何更新。如何让Kubernetes下载我的更新图像,并使用RollingUpdate
部署它?
我们最近发布了一篇关于如何在GKE中实现我们称之为GitOps方法的技术概述。
您只需配置GCR builder从Github获取代码更改并运行构建,然后在集群中安装Weave Cloud agent并连接到存储YAML文件的repo,该代理将负责使用新映像更新repo,并将更改应用到集群。
有关更高级别的概述,请参见:
免责声明:我是Kubernetes的撰稿人和Weaveworks的员工。我们开发开源和商业工具,帮助人们更快地使用Kubernetes进行生产。
可以通过更改任何字段(如标签)强制更新展开。在我的例子中,我只是在我的CI脚本末尾添加了以下内容:
kubectl patch deployment fb-video-extraction -p \
"{\"spec\":{\"template\":{\"metadata\":{\"labels\":{\"date\":\"`date +'%s'`\"}}}}}"
我知道很多人已经有类似的问题,我读了其中一些,但没有发现什么实际上帮助我到目前为止。 我有一个支持私有回购的gitlab,我还使用谷歌库伯内特斯引擎。我的私人回购协议中有几个Docker容器,我想将其中一个部署到Kubernetes引擎。 我用我还尝试了创建秘密docker注册表名--docker server=registry。xy。z--docker用户名=google--docker密码=x
背景: 我对谷歌的云平台很陌生,所以我想确保我没有遗漏任何明显的东西。 我们正在试验GKE和Kubernetes,我们希望通过https公开一些服务。我已经阅读了有关http(s)负载平衡的文档,这些文档似乎建议您应该维护自己的进行SSL终端和负载平衡的nginx实例。对我来说,这看起来相当复杂(我习惯于使用AWS及其负载平衡器(ELB),它支持SSL终止已有很长时间了)。 问题: 如果您只需要在
我确实部署了单吊舱,自定义docker映像如下: 在开发过程中,我希望推送新的最新版本并更新部署。如果不明确定义标记/版本并为每个构建增加它,就找不到如何做到这一点,并且
我使用的是Kubernetes引擎,我有多个nginx入口控制器,它们的公共IP一直在变化。 我不能在生产中使用它,因为这不是正确的行为。 这正常吗?有人能帮我吗?
我正在谷歌容器引擎上运行Kubernetes集群。默认情况下,我的指标不会推送到Stackdriver。 我需要显式启动Heapster服务,还是由容器引擎本身自动管理?
具体到基于Docker的部署,这两者之间有什么区别?由于Google App Engine Flexible现在也支持基于Dockerfile的部署,而且它也是完全管理的服务,所以它似乎比在Container Engine上配置Kubernetes部署更可取,不是吗? 有哪些用例更倾向于使用Google容器引擎而不是灵活的应用引擎?