1. 手动查询状态:
1.1 查看ingress控制器的配置:
$ kubectl get po -o wide -n ingress-nginx
NAME READY STATUS RESTARTS AGE IP NODE
nginx-ingress-controller-9fb6cbd6d-f5sxb 1/1 Running 0 1h 172.30.94.2 192.168.5.8
# 查看ingres-control运行时配置:
$ kubectl exec -it nginx-ingress-controller-9fb6cbd6d-f5sxb -n ingress-nginx cat /etc/nginx/nginx.conf
....
# default server, used for NGINX healthcheck and access to nginx stats
server {
listen 18080 default_server reuseport backlog=511;
set $proxy_upstream_name "-";
location /healthz {
access_log off;
return 200;
}
....
location /nginx_status {
set $proxy_upstream_name "internal";
access_log off;
stub_status on;
}
.....
在18080端口开放了健康检查以及访问统计:
- 控制器健康检查/healthz
- 控制器的访问统计/nginx_status
控制器的pod IP:172.30.94.2
1.2 创建一个带curl工具的容器:
$ cat ./curl.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: curl
spec:
replicas: 1
template:
metadata:
annotations:
sidecar.istio.io/inject: "true"
labels:
app: curl
spec:
containers:
- name: curl
image: appropriate/curl
command: ["sleep"]
args: ["5000"]
$ kubectl create -f ./curl.yaml
1.3 在curl容器中查询nginx控制的访问统计
$ kubectl exec -it curl-cc664978f-wkbqd sh
# 查看方法统计数据:
# curl http://172.30.94.2:18080/nginx_status
Active connections: 1
server accepts handled requests
1749 1749 1749
Reading: 0 Writing: 1 Waiting: 0
#检查控制器是否良好:
# curl -i http://172.30.94.2:18080/healthz
HTTP/1.1 200 OK
Server: nginx/1.15.8
Date: Mon, 04 Feb 2019 06:24:41 GMT
Content-Type: text/html
Content-Length: 0
Connection: keep-alive
2. 利用Prometheus监控:
nginx-ingress安装描述文件,默认已经设置好10254端口给proemtheus提供统计数据如下:
$ cat deploy/mandatory.yaml
.....
annotations:
prometheus.io/port: "10254"
prometheus.io/scrape: "true"
.....
prometheus配置自动发现POD(参考:https://blog.csdn.net/kozazyh/article/details/80412451)