8.5. Arranque automático de pods mediante systemd
Puede iniciar varios contenedores como servicios systemd. Tenga en cuenta que el comando systemctl sólo debe utilizarse en el pod y no debe iniciar o detener contenedores individualmente a través de systemctl, ya que son gestionados por el servicio del pod junto con el infra-contenedor interno.
Procedimiento
Cree un pod vacío, por ejemplo llamado
systemd-pod:podman pod create --name systemd-pod 11d4646ba41b1fffa51c108cbdf97cfab3213f7bd9b3e1ca52fe81b90fed5577
$ podman pod create --name systemd-pod 11d4646ba41b1fffa51c108cbdf97cfab3213f7bd9b3e1ca52fe81b90fed5577Copy to Clipboard Copied! Toggle word wrap Toggle overflow Enumerar todas las vainas:
podman pod ps POD ID NAME STATUS CREATED # OF CONTAINERS INFRA ID 11d4646ba41b systemd-pod Created 40 seconds ago 1 8a428b257111 11d4646ba41b1fffa51c108cbdf97cfab3213f7bd9b3e1ca52fe81b90fed5577
$ podman pod ps POD ID NAME STATUS CREATED # OF CONTAINERS INFRA ID 11d4646ba41b systemd-pod Created 40 seconds ago 1 8a428b257111 11d4646ba41b1fffa51c108cbdf97cfab3213f7bd9b3e1ca52fe81b90fed5577Copy to Clipboard Copied! Toggle word wrap Toggle overflow Cree dos contenedores en el pod vacío. Por ejemplo, para crear
container0ycontainer1ensystemd-pod:podman create --pod systemd-pod --name container0 registry.access.redhat.com/ubi8 top podman create --pod systemd-pod --name container1 registry.access.redhat.com/ubi8 top
$ podman create --pod systemd-pod --name container0 registry.access.redhat.com/ubi8 top $ podman create --pod systemd-pod --name container1 registry.access.redhat.com/ubi8 topCopy to Clipboard Copied! Toggle word wrap Toggle overflow Enumerar todos los pods y contenedores asociados a ellos:
podman ps -a --pod CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES POD ID PODNAME 24666f47d9b2 registry.access.redhat.com/ubi8:latest top 3 minutes ago Created container0 3130f724e229 systemd-pod 56eb1bf0cdfe k8s.gcr.io/pause:3.2 4 minutes ago Created 3130f724e229-infra 3130f724e229 systemd-pod 62118d170e43 registry.access.redhat.com/ubi8:latest top 3 seconds ago Created container1 3130f724e229 systemd-pod
$ podman ps -a --pod CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES POD ID PODNAME 24666f47d9b2 registry.access.redhat.com/ubi8:latest top 3 minutes ago Created container0 3130f724e229 systemd-pod 56eb1bf0cdfe k8s.gcr.io/pause:3.2 4 minutes ago Created 3130f724e229-infra 3130f724e229 systemd-pod 62118d170e43 registry.access.redhat.com/ubi8:latest top 3 seconds ago Created container1 3130f724e229 systemd-podCopy to Clipboard Copied! Toggle word wrap Toggle overflow Generar el archivo de unidad systemd para el nuevo pod:
podman generate systemd --files --name systemd-pod /home/user1/pod-systemd-pod.service /home/user1/container-container0.service /home/user1/container-container1.service
$ podman generate systemd --files --name systemd-pod /home/user1/pod-systemd-pod.service /home/user1/container-container0.service /home/user1/container-container1.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow Observe que se generan tres archivos de unidad systemd, uno para el pod
systemd-pody dos para los contenedorescontainer0ycontainer1.Mostrar
pod-systemd-pod.servicearchivo de la unidad:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
La línea
Requiresen la sección[Unit]define las dependencias de los archivos de unidadcontainer-container0.serviceycontainer-container1.service. Ambos archivos de unidad se activarán. -
Las líneas
ExecStartyExecStopde la sección[Service]inician y detienen el infra-contenedor, respectivamente.
-
La línea
Mostrar
container-container0.servicearchivo de la unidad:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
La línea
BindsTode la sección[Unit]define la dependencia del archivo de unidadpod-systemd-pod.service -
Las líneas
ExecStartyExecStopde la sección[Service]inician y detienen elcontainer0respectivamente.
-
La línea
Mostrar
container-container1.servicearchivo de la unidad:cat contenedor-contenedor1.service
$ cat contenedor-contenedor1.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copie todos los archivos generados en
$HOME/.config/systemd/userpara instalarlos como usuario no root:cp pod-systemd-pod.service container-container0.service container-container1.service $HOME/.config/systemd/user
$ cp pod-systemd-pod.service container-container0.service container-container1.service $HOME/.config/systemd/userCopy to Clipboard Copied! Toggle word wrap Toggle overflow Habilitar el servicio e iniciarlo al iniciar la sesión del usuario:
systemctl enable --user pod-systemd-pod.service Created symlink /home/user1/.config/systemd/user/multi-user.target.wants/pod-systemd-pod.service
/home/user1/.config/systemd/user/pod-systemd-pod.service. Created symlink /home/user1/.config/systemd/user/default.target.wants/pod-systemd-pod.service /home/user1/.config/systemd/user/pod-systemd-pod.service. $ systemctl enable --user pod-systemd-pod.service Created symlink /home/user1/.config/systemd/user/multi-user.target.wants/pod-systemd-pod.service/home/user1/.config/systemd/user/pod-systemd-pod.service. Created symlink /home/user1/.config/systemd/user/default.target.wants/pod-systemd-pod.service /home/user1/.config/systemd/user/pod-systemd-pod.service. Copy to Clipboard Copied! Toggle word wrap Toggle overflow Tenga en cuenta que el servicio se detiene al cerrar la sesión del usuario.
Pasos de verificación
Comprueba si el servicio está activado:
systemctl is-enabled pod-systemd-pod.service enabled
$ systemctl is-enabled pod-systemd-pod.service enabledCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Recursos adicionales
-
Para más información sobre el comando
podman create, escribaman podman-create. -
Para más información sobre el comando
podman generate systemd, escribaman podman-generate-systemd. -
Para más información sobre el comando
systemctl, escribaman systemctl. - Para más información, consulta el artículo Running containers with Podman and shareable systemd services de Valentin Rothberg.
- Para obtener más información sobre la configuración de los servicios con systemd, consulte el capítulo de la guía Configuración de los ajustes básicos del sistema llamado Gestión de los servicios con systemd.