내 시스템에는 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] 삭제
몇 마디 만하겠습니다