kubernetes - 如何使用 SDK 在 Kubernetes Operator 中观察 Pod api 端点
问题描述
描述
我有一个与 POD 关联的 CR,其中包含一个公开 API 的容器,例如:
/available
例如返回
{"available":"true"}
有没有办法在该 API 调用上创建一个控制器观察器,每当响应更改时都会触发协调功能?我相信可以使用带有控制器观察器的通道,但我没有看到任何类似的例子
使用
Kubernetes operator-sdk 版本 v0.5.0+git
解决方案
恐怕这并不像你希望的那么容易。Kubernetes 控制器对象对集群中某种资源的添加/编辑/删除操作做出反应。在 Pod 中运行的某物的 API 中公开的值在资源数据库中不可见。没有事件发生,也没有通知更改。
我看到你可以考虑做两件事:
- 创建一个经常触发协调功能的常规控制器,但会检查
availability
其协调功能中的值。如果它改变了,它会做一些事情,如果它没有改变,它就什么也不做。 - 只需在控制器域之外创建一个单独的任务,该任务将监视此 API 值并执行某些操作。
控制器使用通知工作,他们不会主动监视更改,而是会收到通知。这与您想要做的不同 - 定期检查 API 响应。
推荐阅读
- java - 是否有一个 json 简单函数可以从 jsonobject 获取所有键?
- graphql - Graphql 获取 2 个标签之间的所有提交
- nlp - RASA NLU-我想在单词之后提取任何内容(单词、数字或特殊字符)作为实体
- php - 用于匹配查询字符串中的模式的正则表达式
- html - C 程序从 HTML GET 输入提供奇怪的输出并在 HTML 页面底部打印
- excel - 插入行代码后为整行着色
- excel - Excel - 具有相同值的单元格周围的边框(条件格式)
- java - Spring `@RolesAllowed` 被忽略了吗?
- java - Android mergeDebugResources 失败
- java - MappedByteBuffer 如何进行垃圾收集?