首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法升级K8s中的operator

无法升级K8s中的operator
EN

Stack Overflow用户
提问于 2020-09-25 17:34:47
回答 1查看 53关注 0票数 0

我正在使用operator-sdk编写一个操作符,并使用k8s api在操作符中创建了statefulset pod,如下所示:r.client.Create(context.TODO(), statefulset)

它工作正常,并且statefulset pod已装箱。但是现在我想升级已经在k8s中运行的操作符,这样我就可以为pod添加一些命令,比如

代码语言:javascript
复制
Containers: []corev1.Container{{
    Command: []string{.....}

首先,我构建较新的操作符映像并删除k8s中的操作符。k8s通过使用较新的图像(使用kubectl describe pod myoperator显示较新的图像)快速重新启动操作员。

第二,我删除了statefulset pod,k8s也会在几秒钟内重新启动statefulset pod

但是我发现statefulset pod没有包含我在操作符(kubectl describe pod statefulsetpod)中添加的命令。如果我删除k8s中的所有资源并重新部署它们,它会起作用。

我有很多资源需要由操作员创建,所以我不想部署所有的资源。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-02 20:01:12

您应该删除statefulset本身,而不是statefulset pod。问题是当您删除statefulset pod时-新的pod会自动从旧的statefulset规范创建。

一旦您删除/重新创建了statefulset -如预期的那样,您可以安排正确的更新pod。

也许你可以在operator中添加额外的逻辑来修补已经存在的statefulset --这可以避免每次重新部署状态集。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64061565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档