Restart=필요한 서비스 실패 후 항상 재시작을 다시 시도하지 않습니다.

Restart=필요한 서비스 실패 후 항상 재시작을 다시 시도하지 않습니다.

kubelet.servicekubelet.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.servicekubelet.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=로 지정된 프로세스 중 하나일 수도 있습니다. 시스템 작업(예: 서비스 중지 또는 다시 시작)으로 인해 프로세스가 종료되면 서비스가 다시 시작되지 않습니다. 시간 초과에는 누락된 감시 장치 "연결 유지 핑" 기한과 서비스 시작, 다시 로드 및 작업 중지 시간 초과가 포함됩니다.

관련 정보