通常使用Deployment或者Daemonset部署多个Pod,每个Pod 内部有三类进程:
● IC :根据集群中Ingress或者其它CRD资源生成nginx配置
● Nginx Master:Nginx 的 Master 进程,用来控制Nginx Worker进程
● Nginx Worker:Nginx 的 Worker 进程,处理用户请求流量的进程

上述架构图中每个阶段的详细描述如下:
- (HTTP) IC 可以通过HTTP接口暴露自身和Nginx指标,Prometheus通过接口采集相关信息并展示。默认情况下接口为:9113/metrics,这个功能可以关闭
- (HTTPS) IC 通过Kubernetes API 获取资源(Ingress, nginx CRD)的更新,处理后并更新资源状态
- (HTTP) Kubelet 通过 IC 的 Readiness 接口判断 IC Pod 是否就绪
- (File I/O) IC 进程启动时,会读取来自文件系统的配置生成所需的配置模板。这些模板位于容器的 /目录中,并具有.tmpl扩展名
- (File I/O) IC将日志写入标准输出和标准错误,由容器运行时收集
- (File I/O) IC根据 Kubernetes资源生成配置文件,并写入 /etc/nginx 目录下,以 .conf结尾
- (File I/O) IC根据 Ingress 或者其它资源 获取的TLS 证书和私钥写入 文件中
- (HTTP) IC通过unix:/var/lib/nginx/nginx-status.sock 获取Nginx指标,并以Promethues格式暴露出去
- (HTTP) 为了确保配置文件加载成功,IC 会通过unix:/var/lib/nginx/nginx-config-version.sock确保至少有一个worker进程使用了最新的配置
- (N/A) IC 启动Nginx Master进程
- (Signal) IC 通过nginx -s reload重载Nignx 配置文件
- (Signal) IC 通过nginx -s quit停止Nginx进程
- (File I/O) master 将日志写入标准输出和标准错误,由容器运行时收集
- (File I/O) master 在启动和reload时从文件读取 TLS 证书和私钥
- (File I/O) master 在启动和reload时从文件读取 配置
- (Signal) master 控制worker进程的生命周期
- (File I/O) worker 将日志写入标准输出和标准错误,由容器运行时收集
- (UDP) worker 将upstream端点的响应延迟日志通过unix:/var/lib/nginx/nginx-syslog.sock发送给IC,由IC通过Metrics暴露
- (HTTP,HTTPS,TCP,UDP) worker 承接来自客户端的请求
- (HTTP,HTTPS,TCP,UDP) worker 将请求转发到后端的Pod上
- (HTTP) admin 通过 woker 的8080端口访问nginx的状态页,默认仅 localhost能访问