OCF_HEARTBEAT_PODMAN(7)
π ocf_heartbeat_podman(7) β the podman-etcd resource agent, explained bestie to bestie π«Ά
okay so real talk, this is the manual page for ocf_heartbeat_podman-etcd (yes the file is called ocf_heartbeat_podman, it's giving "folder named after the group project" energy, we move). Sit down, grab a strawberry drink π, and let me tell you about this little agent that spins up an etcd container for you.
β¨ NAME β¨
ocf_heartbeat_podman-etcd β the Podman etcd container resource agent π
like, it's the resource agent. For etcd. In a podman container. Iconic.
π SYNOPSIS π
podman-etcd [start | stop | monitor | meta-data | validate-all]
that's it. those are the five things it does. main character energy only.
π¦ DESCRIPTION π¦
so, the podman-etcd HA resource agent creates and launches an etcd podman container, built off a podman image you supply. and like β the way that containers managed by this agent are both created and removed upon the agent's start and stop actions. it makes them, it yeets them. it's a whole lifecycle. periodt. β¨
π SUPPORTED PARAMETERS π
bestie, there are twenty of these, buckle in. i'm not skipping a single one, that's not the vibe.
pod_manifestβ the Pod manifest carrying the configuration for Etcd. it's optional, it's a string, and the default is"/etc/kubernetes/static-pod-resources/etcd-certs/configmaps/external-etcd-pod/pod.yaml".imageβ the podman image your container is based off of. optional, string, default"default". lowkey a funny default ngl but that's what it says.nameβ the name to give the created container. by default it's that resource's instance name. optional, string, default"etcd".node_ip_mapβ a mapping of node names to IPs π₯ it takes the form of:n1:ip1;n2:ip2β where the etcd container onn1would have IPip1. this one is required, it's a string, and it has no default. you can't skip it, she's mandatory.nicβ network interface to lookup interface for host. optional, string, default"br-ex".authfileβ path of the authentication file. the file is created bypodman login. optional, string, default"/var/lib/kubelet/config.json".allow_pullβ allow the image to be pulled from the configured podman registry when the image does not exist locally. β οΈ NOTE, this can drastically increase the time required to start the container if the image repository is pulled over the network. optional, boolean, default1.run_optsβ add options to be appended to the'podman run'command which is used when creating the container during thestartaction. this option allows users to do things such as setting a custom entry point and injecting environment variables into the newly created container. note the'-d'option is supplied regardless of this value to force containers to run in the background. β οΈ NOTE: Do not explicitly specify the--nameargument in therun_opts. this agent will set--nameusing either the resource's instance or the name provided in the'name'argument of this agent. optional, string, no default.run_cmdβ specify a command to launch within the container once it has initialized. optional, string, no default.run_cmd_optsβ options to be added to the'run_cmd'. optional, string, no default.mount_pointsβ a comma separated list of directories that the container is expecting to use. the agent will ensure they exist by running'mkdir -p'. optional, string, no default.monitor_cmdβ specify the full path of a command to launch within the container to check the health of the container. this command must return 0 to indicate that the container is healthy. a non-zero return code will indicate that the container has failed and should be recovered. π Note: using this method for monitoring processes inside a container is not recommended, as containerd tries to track processes running inside the container and does not deal well with many short-lived processes being spawned. ensure that your container monitors its own processes and terminates on fatal error rather than invoking a command from the outside. optional, string, no default.force_killβ kill a container immediately rather than waiting for it to gracefully shutdown. optional, boolean, no default.reuseβ allow the container to be reused once it is stopped. by default, containers get removed once they are stopped. enable this option to have the particular one persist when this happens. optional, boolean, default0.drop_in_dependencyβ use transient drop-in files to add extra dependencies to the systemd scopes associated to the container. during reboot, this prevents systemd to stop the container before pacemaker. optional, boolean, no default.oomβ tune the host's Out-Of-Memory (OOM) preferences for containers (accepts values from-1000to1000). defaults to same OOM score as system-node-critical π βhttps://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#node-out-of-memory-behavior. optional, integer, default-997.config_locationβ the directory where the resource agent stores its state files, such as the generated etcd configuration and a copy of the pod manifest. optional, string, default"/var/lib/etcd".backup_locationβ the directory where the resource agent stores its backups. optional, string, default"/var/lib/etcd".max_backup_snapshotsβ maximum number of etcd database snapshots to retain. when a new snapshot is created, older snapshots will be automatically removed to maintain this limit. this helps control storage usage while ensuring recent backups are available for recovery. setmax_backup_snapshots=0to disable backups. optional, integer, default3.kubeconfigβ path to a kubeconfig file for querying Machine API objects. used to detect whether a peer node's Machine is being deleted, preventing the resource agent from re-adding it as an etcd learner during Machine deletion flows. supports both MAPI (machine.openshift.io) and CAPI (cluster.x-k8s.io) Machine resources. optional, string, default"/etc/kubernetes/static-pod-resources/kube-apiserver-certs/secrets/node-kubeconfigs/localhost.kubeconfig".
π SUPPORTED ACTIONS π
this resource agent supports the following actions (operations). look at her go:
startβ starts the resource. suggested minimum timeout:600s. six hundred seconds. she takes her time, and honestly? respect.stopβ stops the resource. suggested minimum timeout:90s.monitorβ performs a detailed status check. suggested minimum timeout:25s. suggested interval:30s.meta-dataβ retrieves resource agent metadata (internal use only π). suggested minimum timeout:5s.validate-allβ performs a validation of the resource configuration. suggested minimum timeout:30s.
πΈ EXAMPLE CRM SHELL πΈ
here's an example configuration for a podman-etcd resource using crm(8):
primitive p_podman-etcd ocf:heartbeat:podman-etcd \
params \
node_ip_map=string \
op monitor timeout="25s" interval="30s" depth="0"
literally copy-paste-able. slay.
β EXAMPLE PCS β
and here's the same vibe for a podman-etcd resource using pcs(8):
pcs resource create p_podman-etcd ocf:heartbeat:podman-etcd \
node_ip_map=string \
op monitor timeout="25s" interval="30s" OCF_CHECK_LEVEL="0"
both of them, chef's kiss π€
π§ SEE ALSO π§
http://clusterlabs.org/β go say hi, they're lovely.
π AUTHOR π
ClusterLabs contributors (see the resource agent source for information about individual authors) π«Ά group project but make it actually good.
okay that's the whole page bestie, you ate that π
β¨ this little number comes to you from resource-agents UNKNOWN, dated 10/01/2026, and it lives in OCF_HEARTBEAT_PODMAN(7) β go forth and cluster responsibly π¦π
π¦ where this page comes from
- opensuse-leap 16.0: resource-agents 4.18.0+git105.9ea1183-160000.1.1 Β· GPL-2.0-only AND LGPL-2.1-or-later AND GPL-3.0-or-later
- opensuse-leap 16.0: resource-agents 4.18.0+git105.9ea1183-160000.1.1 Β· GPL-2.0-only AND LGPL-2.1-or-later AND GPL-3.0-or-later
- opensuse-leap 16.0: resource-agents 4.18.0+git105.9ea1183-160000.1.1 Β· GPL-2.0-only AND LGPL-2.1-or-later AND GPL-3.0-or-later
- opensuse-leap 16.0: resource-agents 4.18.0+git105.9ea1183-160000.1.1 Β· GPL-2.0-only AND LGPL-2.1-or-later AND GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms