Я из команды клиентов Fabric8 Kubernetes. Я думаю, что стандартное поведение Kubernetes давать 410 через некоторое время во время наблюдения. Обычно ответственность за это лежит на клиенте. В контексте часов он вернет HTTP_GONE
, когда вы попросите увидеть изменения для resourceVersion
, который слишком стар - то есть, когда он больше не может сказать вам, что изменилось с этой версии, так как изменилось слишком много вещей , В этом случае вам нужно будет начать заново, не указав resourceVersion
, и в этом случае часы отправят вам текущее состояние того, что вы смотрите, а затем отправьте обновления с этого момента.
Fabric8 не справляется с обычными часами. Но он обрабатывает его в SharedInformer
API, см. ReflectorWatcher . Я бы рекомендовал использовать информер API при написании операторов, так как это лучше, чем простой список и просмотр. Вот простой пример использования SharedInformer
API:
try (KubernetesClient client = new DefaultKubernetesClient()) {
SharedInformerFactory sharedInformerFactory = client.informers();
SharedIndexInformer<Pod> podInformer = sharedInformerFactory.sharedIndexInformerFor(Pod.class, PodList.class, 30 * 1000L);
podInformer.addEventHandler(new ResourceEventHandler<Pod>() {
@Override
public void onAdd(Pod pod) {
// Handle Creation
}
@Override
public void onUpdate(Pod oldPod, Pod newPod) {
// Handle update
}
@Override
public void onDelete(Pod pod, boolean deletedFinalStateUnknown) {
// Handle deletion
}
});
sharedInformerFactory.startAllRegisteredInformers();
}
Вы можете найти полную демонстрацию простого оператора с использованием Fabric8 SharedInformer API здесь: Оператор PodSet In Java