diff --git a/inventory/sample/group_vars/all/all.yml b/inventory/sample/group_vars/all/all.yml index 60c641d1c411662f97ff6bd791ed6a5af348dc71..bcb34be4cbb712e5200414c38b0b8a1297d27ba3 100644 --- a/inventory/sample/group_vars/all/all.yml +++ b/inventory/sample/group_vars/all/all.yml @@ -24,6 +24,8 @@ bin_dir: /usr/local/bin ## Local loadbalancer should use this port ## And must be set port 6443 nginx_kube_apiserver_port: 6443 +## If nginx_kube_apiserver_healthcheck_port variable defined, enables proxy liveness check. +nginx_kube_apiserver_healthcheck_port: 8081 ### OTHER OPTIONAL VARIABLES ## For some things, kubelet needs to load kernel modules. For example, dynamic kernel services are needed diff --git a/roles/kubernetes/node/templates/manifests/nginx-proxy.manifest.j2 b/roles/kubernetes/node/templates/manifests/nginx-proxy.manifest.j2 index 8a7b0cd41d15fa2dbdf1cbaf4bbae3b764b7074d..fbe170cfa7d3fa7b92f841fc738f5b04e37015be 100644 --- a/roles/kubernetes/node/templates/manifests/nginx-proxy.manifest.j2 +++ b/roles/kubernetes/node/templates/manifests/nginx-proxy.manifest.j2 @@ -25,6 +25,12 @@ spec: memory: {{ nginx_memory_requests }} securityContext: privileged: true + {% if nginx_kube_apiserver_healthcheck_port is defined -%} + livenessProbe: + httpGet: + path: /healthz + port: {{ nginx_kube_apiserver_healthcheck_port }} + {% endif -%} volumeMounts: - mountPath: /etc/nginx name: etc-nginx diff --git a/roles/kubernetes/node/templates/nginx.conf.j2 b/roles/kubernetes/node/templates/nginx.conf.j2 index 99a48d65d0d470f20650dfca71f061ce1904d460..3e5374b71cb5f7b08dc31fbe51df359649b19197 100644 --- a/roles/kubernetes/node/templates/nginx.conf.j2 +++ b/roles/kubernetes/node/templates/nginx.conf.j2 @@ -12,7 +12,7 @@ stream { least_conn; {% for host in groups['kube-master'] -%} server {{ hostvars[host]['access_ip'] | default(hostvars[host]['ip'] | default(fallback_ips[host])) }}:{{ kube_apiserver_port }}; - {% endfor %} + {% endfor -%} } server { @@ -22,5 +22,16 @@ stream { proxy_connect_timeout 1s; } +} +http { + {% if nginx_kube_apiserver_healthcheck_port is defined -%} + server { + listen {{ nginx_kube_apiserver_healthcheck_port }}; + location /healthz { + access_log off; + return 200; + } + } + {% endif -%} }