首页 > 解决方案 > 如何使用 SDK 在 Kubernetes Operator 中观察 Pod api 端点

问题描述

描述

我有一个与 POD 关联的 CR,其中包含一个公开 API 的容器,例如:

/available

例如返回

{"available":"true"}

有没有办法在该 API 调用上创建一个控制器观察器,每当响应更改时都会触发协调功能?我相信可以使用带有控制器观察器的通道,但我没有看到任何类似的例子

使用

Kubernetes operator-sdk 版本 v0.5.0+git

标签: kubernetes

解决方案


恐怕这并不像你希望的那么容易。Kubernetes 控制器对象对集群中某种资源的添加/编辑/删除操作做出反应。在 Pod 中运行的某物的 API 中公开的值在资源数据库中不可见。没有事件发生,也没有通知更改。

我看到你可以考虑做两件事:

  1. 创建一个经常触发协调功能的常规控制器,但会检查availability其协调功能中的值。如果它改变了,它会做一些事情,如果它没有改变,它就什么也不做。
  2. 只需在控制器域之外创建一个单独的任务,该任务将监视此 API 值并执行某些操作。

控制器使用通知工作,他们不会主动监视更改,而是会收到通知。这与您想要做的不同 - 定期检查 API 响应。


推荐阅读