Replies: 8 comments 8 replies
|
I tried to run on kind with those steps you wrote, i.e., and everything seems to work: NAME READY STATUS RESTARTS AGE
my-cluster-broker-0 1/1 Running 0 2m29s
my-cluster-broker-1 1/1 Running 0 2m29s
my-cluster-broker-2 1/1 Running 0 2m29s
my-cluster-controller-3 1/1 Running 0 2m28s
my-cluster-controller-4 1/1 Running 0 2m28s
my-cluster-controller-5 1/1 Running 0 2m28s
my-cluster-entity-operator-65849b56cf-vbvsz 2/2 Running 0 26s
strimzi-cluster-operator-6f498cb66-qnqbv 1/1 Running 0 4m10sI wonder, how much memory have you allocated for minikube/kind? |
|
I'm also having the same issue with both Minikube (driver: docker) and Kind (driver: podman) on Fedora 42. This may not be related to Strimzi, but a problem with how the container's memory is computed. From system's logs you can see that with just one idle cluster to reconcile the operator's container is reported to take almost 15 GB of memory and, based on that, the kernel's OOM killer does its job. This doesn't match with the actual system's memory status, where I have around 8 GB of used memory. I haven't figured out how to fix this, but a workaround is to edit the operator's deployment and remove the memory limit. |
|
I had the same issue on minikube by using |
@see-quick I should've said in the Bug description (will update) => all of it 😆 , I use Docker and have no memory limits configured. I am on Fedora 42, same as @fvaleri. @fvaleri I have just doubled the limit and that fixed the issue, had no |
I'm afraid that's not the solution. It may work now, but you will hit the same with the operator managing more resources, or some other heavy custom resource with limits (e.g. KafkaConnect). |
@fvaleri you're absolutely right. Its just good enough for now, for testing stuff locally. But I might have to resort to removing the memory limit like you did. |
|
Comverting to discussion as this does not seem to be Strimzi but rather environment issue. |
|
The cause of this issue seems to be a JVM bug with cgroup v2: https://bugs.openjdk.org/browse/JDK-8346874 For example, the following command should set 1GB as max heap (half of container memory): # Java 17: max heap is half system memory
$ podman run -it -m 2g fedora:41 bash -c "dnf install -y java-17-openjdk-headless.x86_64 && java -XX:MaxRAMPercentage=50 -XshowSettings --version"
VM settings:
Max. Heap Size (Estimated): 31.12G
...
Operating System Metrics:
Provider: cgroupv2
Memory Limit: 2.00G
...
# Java 25: max heap is half container memory
$ podman run -it -m 2g fedora:42 bash -c "dnf install -y java-25-openjdk-headless.x86_64 && java -XX:MaxRAMPercentage=50 -XshowSettings --version"
VM settings:
Max. Heap Size (Estimated): 1.00G
...
Operating System Metrics:
Provider: cgroupv2
Memory Limit: 2.00GIt looks like they didn't backport this fix to older Java LTS releases. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Bug Description
After deploying the Kafka cluster
kafka-ephemeral.yaml:> kubectl apply -f https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/refs/tags/0.46.1/examples/kafka/kafka-ephemeral.yaml -n myprojectthe Strimzi operator gets
OOMKilledafter a while and then every few minutes.The number of nodes in the k8 cluster does not matter and if it is Kind or Minikube. It fails on both.
Here is a
kubectl -n myproject describe pod strimzi-cluster-operator-...excerpt:Steps to reproduce
Expected behavior
The Strimzi operator is expected to run without being
OOMKilled.Strimzi version
0.46.1
Kubernetes version
1.32.7
Installation method
YAML files
Infrastructure
Kind, Minikube
Configuration files and logs
Yaml files are linked above.
report-02-10-2025_11-46-57.zip
Additional context
All reactions