kubelet.service
kubelet.service 는 다음과 같습니다 docker.service
.
[Unit]
Description=kubelet
After=docker.service
Requires=docker.service
[Service]
WorkingDirectory=/var/lib/kubelet
EnvironmentFile=-/etc/kubernetes/kubelet
ExecStart=/usr/local/bin/kubelet ...
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
다시 시작 하면 docker.service
kubelet.service가 자동으로 다시 시작됩니다. 그러나 서버를 다시 시작할 때 docker.service
시작에 실패하면 kubelet.service가 자동으로 다시 시작되지 않습니다!
# journalctl -u kubelet.service
-- Logs begin at Fri 2018-05-25 09:35:00 CST, end at Fri 2018-05-25 09:53:13 CST. --
May 25 09:35:03 debian systemd[1]: Dependency failed for kubelet.
May 25 09:35:03 debian systemd[1]: kubelet.service: Job kubelet.service/start failed with result 'dependency'.
# journalctl -u docker
-- Logs begin at Fri 2018-05-25 09:35:00 CST, end at Fri 2018-05-25 09:53:46 CST. --
May 25 09:35:03 debian systemd[1]: Starting Docker Application Container Engine...
May 25 09:35:03 debian dockerd[1905]: invalid value "" for flag --mtu: strconv.ParseInt: parsing "": invalid syntax
May 25 09:35:03 debian dockerd[1905]: See '/usr/bin/dockerd --help'.
May 25 09:35:03 debian systemd[1]: docker.service: Main process exited, code=exited, status=125/n/a
May 25 09:35:03 debian systemd[1]: Failed to start Docker Application Container Engine.
May 25 09:35:03 debian systemd[1]: docker.service: Unit entered failed state.
May 25 09:35:03 debian systemd[1]: docker.service: Failed with result 'exit-code'.
May 25 09:35:12 debian systemd[1]: docker.service: Service hold-off time over, scheduling restart.
May 25 09:35:12 debian systemd[1]: Stopped Docker Application Container Engine.
May 25 09:35:12 debian systemd[1]: Starting Docker Application Container Engine...
보시다시피, kubelet은 09:35:03에 멈추고 docker가 09:35:12에 정상적으로 시작된 후에도 결코 다시 시작되지 않습니다.
답변1
답변2
Restart
실패한 종속성을 참조하는 것이 아니라 해당 장치에 속한 프로세스를 참조합니다.
man systemd.service
:
Restart=
서비스 프로세스가 종료되거나 종료되거나 시간 초과될 때 서비스를 다시 시작할지 여부를 구성합니다. 서비스 프로세스는 기본 서비스 프로세스일 수도 있지만 ExecStartPre=, ExecStartPost=, ExecStop=, ExecStopPost= 또는 ExecReload=로 지정된 프로세스 중 하나일 수도 있습니다. 시스템 작업(예: 서비스 중지 또는 다시 시작)으로 인해 프로세스가 종료되면 서비스가 다시 시작되지 않습니다. 시간 초과에는 누락된 감시 장치 "연결 유지 핑" 기한과 서비스 시작, 다시 로드 및 작업 중지 시간 초과가 포함됩니다.