PHP小编柚子为您带来最新的技术分享:本文将深入探讨如何在golang中自定义kubernetes控制器的状态更新。Kubernetes作为一个开源容器编排引擎,已成为云原生应用开发的
PHP小编柚子为您带来最新的技术分享:本文将深入探讨如何在golang中自定义kubernetes控制器的状态更新。Kubernetes作为一个开源容器编排引擎,已成为云原生应用开发的热门选择。控制器是Kubernetes中的核心组件之一,用于管理应用的状态。了解如何自定义控制器的状态更新将帮助开发人员更好地掌握Kubernetes的灵活性和扩展性。在本文中,我们将介绍相关概念,并提供详细的代码示例,帮助读者快速上手。敬请期待!
我正在构建一个 Go kubernetes 运算符。我使用 kubebuilder 来创建它。 我想在 crd 状态中存储一些内部详细信息。我已经尝试过:
if err = r.client.update(ctx, upcrd); err != nil {
return ctrl.result{}, client.ignorenotfound(err)
}
if err = r.status().update(ctx, upcrd); err != nil {
return reconcile.result{}, client.ignorenotfound(err)
}
状态结构定义如下:
type HAAuditStatus struct {
ChaosStrategyCron cron.EntryID `JSON:"chaosStrategyCron,omitempty"`
TestStatus TestStatus `json:"testStatus,omitempty"`
MetricStatus MetricStatus `json:"metricStatus,omitempty"`
RoundRobinStrategy RoundRobinStrategy `json:"roundRobinStrategy,omitempty"`
FixedStrategy FixedStrategy `json:"fixedStrategy,omitempty"`
NextChaosDateTime int64 `json:"nextChaosDateTime,omitempty"`
Created bool `json:"created,default=false"`
}
不会引发任何错误,并且修改的规格字段实际上会保留,但状态字段不会保留,其值在下一个协调步骤中仍保留默认值。 我查看了 GitHub 或 stackoverflow 上的其他问题,但提出的任何建议都解决了我的问题,但我无法弄清楚问题是什么。为了获得更大的了解,您可以参考算子所在的仓库。
非常欢迎任何建议:)
我可能已经找到状态未更新的原因了。
在更新状态之前,我还更新了规范字段(以便向用户提供有关创建的资源的一些反馈)。
该问题是由于规格更新触发了新的协调,并且此更新后的指令(其中包括状态更新)未执行。
我意识到使用规范向用户提供反馈是不合适的,而事件更适合此目的。
以上就是更新 golang 中自定义 Kubernetes 控制器的状态的详细内容,更多请关注编程网其它相关文章!
--结束END--
本文标题: 更新 golang 中自定义 Kubernetes 控制器的状态
本文链接: https://lsjlt.com/news/563378.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-04-05
2024-04-05
2024-04-05
2024-04-04
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-04
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0