問題:supervisorctl restart 服務名 失敗node
案例:api
[root@node203 ~]# supervisorctl status
etcd-server-97-203 RUNNING pid 7706, uptime 14:29:46
kube-apiserver-97-203 FATAL Exited too quickly (process log may have details)tcp
查看supervisor日誌:
tail -f /var/log/supervisor/supervisord.log
entered FATAL state, too many start retries too quickly
說明:從報錯信息看出,是該服務重啓次數太多,由於在配置中有參數:
startretries = 5
這個參數是在服務重啓失敗後,嘗試重啓的次數,因此supervisor一直在重啓,而後一直失敗,達到最大次數就報以上的錯誤ui
查看kube-apiserver服務日誌:
error: failed to create listener: failed to listen on 127.0.0.1:8080: listen tcp 127.0.0.1:8080: bind: address already in userest
提示監聽端口已存在,這時候咱們執行如下操做:
netstat -tnlp
ps -ef|grep api-server日誌
果真,該進程並無徹底中止,能夠臨時採用kill 進程號中止,而後再supervisorctl start 服務名,成功server
或者blog
爲了不在重啓的時候出現端口存在(默認supervisord不會stop子進程),須要在/etc/supervisord.d/*.ini 該服務的.ini配置文件中添加如下兩項:
stopasgroup=true
#這個東西主要用於,supervisord管理的子進程,這個子進程自己還有,子進程。那麼咱們若是僅僅幹掉supervisord的子進程的話,子進程的子進程,有可能會變成孤兒進程。因此我們能夠設置可個選項,把整個該子進程的,整個進程組都幹掉。 設置爲true的話,通常killasgroup也會被設置爲true。須要注意的是,該選項發送的是stop信號,默認爲false。。非必須設置。
killasgroup=true進程
改好後,記得supervisorctl updateit
切記不要使用 supervisorctl restart,restart是重啓全部項目服務,可能致使整個集羣服務掛了建議:使用systemd方式啓動