我的系统中有两项服务:A和B。在启动服务AI之前,请先进行一些检查自动化。如果检查失败的服务A,则无需启动。您可能会说我可以使用ExecStartPre或ExecStartPre。是的,但是它不能停止服务A的启动。所以我想在systemd中使用“ require”,创建一个新的服务B,其配置文件如下所示:
[Unit]
Description=api
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
Before=kubelet.service
[Service]
ExecStart=/bin/bash /root/check_init.sh
Restart=no
[Install]
WantedBy=multi-user.target
/root/check_init.sh像这样:
#!/bin/bash
exit 1
服务如下配置:
[Unit]
Description=Kubernetes Kubelet Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=docker.service
After=api.service
Requires=api.service
[Service]
WorkingDirectory=/var/lib/kubelet
EnvironmentFile=-/etc/kubernetes/config
EnvironmentFile=-/etc/kubernetes/kubelet
ExecStart=/usr/bin/kubelet \
$KUBE_LOGTOSTDERR \
$KUBE_LOG_LEVEL \
$KUBELET_API_SERVER \
$KUBELET_ADDRESS \
$KUBELET_PORT \
$KUBELET_HOSTNAME \
$KUBE_ALLOW_PRIV \
$KUBELET_POD_INFRA_CONTAINER \
$KUBELET_ARGS
Restart=on-failure
[Install]
WantedBy=multi-user.target
我以为服务B启动失败,因此服务A也必须失败。但是,服务A已启动。我的配置有什么问题吗?谢谢!
您缺少Type=oneshot
第一项服务-您实际上并不是在等待检查完成!
(最初我建议RemainAfterExit=yes
在首次使用时也使用。但是我认为这不是必需的)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句