Pour un graceful shutdown de nginx, il faut un SIGQUIT
Kubernetes envoie du SIGTERM alors on peut utiliser un preStop script pour être + cool
https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/#define-poststart-and-prestop-handlers
On peut aussi utiliser le preStop pour s'assuret que le container nginx sidecar s'arrête bien avant l'autre container en posant un lock dans un shared volume. Le preStop de l'autre container va attendre que le lock soit supprimé pour se couper. Le preStop du nginx va supprimer le lock quand il a bien terminé.
On crée le lock dans un postStart
via Meetup k8s bbc speaker
statuscgi binay params --
serviceprops : 2 + 8 + 32 + 8192 + 32768
hostprops : same
/nagios/cgi-bin/status.cgi?host=all&servicestatustypes=28&serviceprops=41002&hostprops=41002&sorttype=2&sortoption=6&sorttype=1&sortoption=6
#define HOST_NO_SCHEDULED_DOWNTIME 2
#define HOST_STATE_UNACKNOWLEDGED 8
#define HOST_CHECKS_ENABLED 32
#define HOST_NOTIFICATIONS_ENABLED 8192
#define HOST_PASSIVE_CHECKS_ENABLED 32768
La doc des propriétés : https://github.com/torvalds/linux/blob/master/Documentation/networking/ip-sysctl.txt
Ensuite on peut les définir dans le dossier spécifique à l'interface, exemple : /proc/sys/net/ipv4/conf/eth0/
Ou dans le dossier all : /proc/sys/net/ipv4/conf/all
Exemple :
La valeur pour ehto concernant la propriété arp_filter ne dépend pas seulement de /proc/sys/net/ipv4/conf/eth0/arp_filter mais aussi de /proc/sys/net/ipv4/conf/all/arp_filter
D'après la doc, arp_filter est un boolean (0 ou 1)
D'après ces liens :
http://marc.info/?l=linux-kernel&m=123606366021995&w=2
https://github.com/torvalds/linux/blob/master/include/linux/inetdevice.h (ligne 123 : #define IN_DEV_ARPFILTER(in_dev) IN_DEV_ORCONF((in_dev), ARPFILTER))
On utilise un OR pour déterminer la valeur finale : il suffit qu'un des deux arp_filter soit à 1.
Si la propriété n'est pas un boolean mais un integer qui peut prendre 0,1,2,etc... la valeur choisie entre le "all" et le "eth0" sera la valeur MAX d'après ce que j'ai compris.
On retrouve ce fonctionnement dans d'autres dossiers :
/proc/sys/net # find . -type d -name eth0
./ipv4/neigh/eth0
./ipv4/conf/eth0
./ipv6/neigh/eth0
./ipv6/conf/eth0
Pour consulter :
sysctl -a | grep arp_filter
Pour modifier :
à la volée :
echo "1" > /proc/sys/net/ipv4/conf/...
ou sysctl -w net.ipv4.conf.eth1.arp_filter=1
persistant au reboot :
/etc/sysctl.conf
/etc/init.d/procps restart
à notre un truc vicieux :
/etc/init.d/procps restart n'a pas le meme effet qu'un reboot complet
si on set une propriété à la volée à 1 comme net.ipv4.conf.eth1.arp_filter par exemple
elle va rester à 1 apres un /etc/init.d/procps restart
par contre elle se remet bien à 0 apres un reboot