Hi there,
We are deploying multiple Zabbix instances for large usecases and are thinking about moving the server/web components to kubernetes.
We are not sure about how the server component would handle a kubernetes workload. If we focus on a node drain case, we have the following possibilities:
1. If we do not enable the HA configuration but have 2 replica of the zabbix_server pod. AFAIK zabbix do not support to send traffic to more than one server instance at a time. So we could configure ingress to always send traffic to as single pod. But how will Zabbix support the two live server pods, even if only one at a time receive traffic ? In the case of a drain, k8s would start a third one, then stop the first one, so ingress will update backends state and send traffic to new pod.
1.a. Same as above, but we start only server pod, not 2 replicas. But at the time of draining, the same situation (with 2 live replicas for a small time) will occur.
2. If we *do* enable HA, only the master node will listen on port 10051 and so. So, with ingress and thanks to healthcheck, we can make sure only one pod gets traffic at a time. However, it also means ingress will always consider backend pods as "partially unhealthy" as only 1 pod will answer to HC. Also, it means the setup is not stateless anymore as replicas will have a different behavior
1.a seems to be the more realistic usecase for me as Zabbix (6) does not seem to be made to support k8s workloads. But what will happen during the few seconds the 2 pods will be up during a drain ?
I'm not sure if anyone thought about it / did it already ? Or is zabbix server just not made for such use-cases ?
We are deploying multiple Zabbix instances for large usecases and are thinking about moving the server/web components to kubernetes.
We are not sure about how the server component would handle a kubernetes workload. If we focus on a node drain case, we have the following possibilities:
1. If we do not enable the HA configuration but have 2 replica of the zabbix_server pod. AFAIK zabbix do not support to send traffic to more than one server instance at a time. So we could configure ingress to always send traffic to as single pod. But how will Zabbix support the two live server pods, even if only one at a time receive traffic ? In the case of a drain, k8s would start a third one, then stop the first one, so ingress will update backends state and send traffic to new pod.
1.a. Same as above, but we start only server pod, not 2 replicas. But at the time of draining, the same situation (with 2 live replicas for a small time) will occur.
2. If we *do* enable HA, only the master node will listen on port 10051 and so. So, with ingress and thanks to healthcheck, we can make sure only one pod gets traffic at a time. However, it also means ingress will always consider backend pods as "partially unhealthy" as only 1 pod will answer to HC. Also, it means the setup is not stateless anymore as replicas will have a different behavior
1.a seems to be the more realistic usecase for me as Zabbix (6) does not seem to be made to support k8s workloads. But what will happen during the few seconds the 2 pods will be up during a drain ?
I'm not sure if anyone thought about it / did it already ? Or is zabbix server just not made for such use-cases ?
Comment