nginx-ingress间歇性失败
NGINX入口控制器版本:0.22.0 图片:quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.22.0 图片ID:docker-pullable://quay.io/kubernetes-ingress-controller/nginx-ingress-controller@sha256:47ef793dc8dfcbf73c9dee4abfb87afa3aa8554c35461635f6539c6cc5073b2c
quay.io/kubernetes-ingress-controller/nginx-ingress-controller Kubernetes版本(使用Kubectl版本):v1.15.3
环境:
云提供商或硬件配置:Vcenter中的Vm 操作系统(例如,来自/ etc / os-release):VERSION =“ 16.04.6 LTS(Xenial Xerus)” 内核(例如uname -a):Linux appsec-ana01 4.4.0-143-generic#169-Ubuntu SMP Thu Feb 7 07:56:38 UTC 2019 x86_64 x86_64 x86_64 GNU / Linux 安装工具: 其他: 发生了什么事:
我的nginx-ingress-controller出现故障,并且重新启动不一致。
您期望发生的事情: 没有重启发生
如何重现它(尽可能最小且尽可能精确):应该发生相同版本的问题。 curl-我What is the purpose of administrative installation initiated using msiexec /a? HTTP / 1.1 200 OK 日期:2019年9月11日星期三11:15:56 GMT 内容长度:2 内容类型:文本/纯文本; charset = utf-8
我们需要了解的其他信息: kubectl获取事件的结果如下
2m警告不健康的pod / nginx-ingress-controller-7cfb747d6c-4n4nz活动探针失败:获取http://10.244.10.48:10254/healthz:net / http:在等待连接时请求被取消(在等待标头时超过了Client.Timeout) 30s警告不健康的pod / nginx-ingress-controller-7cfb747d6c-4n4nz活动探针失败:获取http://10.244.10.48:10254/healthz:net / http:请求已取消(在等待标头时超过了Client.Timeout) 6m5s警告不健康的pod / nginx-ingress-controller-7cfb747d6c-4n4nz准备就绪探针失败:获取http://10.244.10.48:10254/healthz:net / http:请求已取消(在等待标头时超过了Client.Timeout) 35m警告不健康的pod / nginx-ingress-controller-7cfb747d6c-4n4nz就绪性探针失败:获取http://10.244.10.48:10254/healthz:net / http:在等待连接时被取消请求(在等待标头时超过了Client.Timeout)
curl -I http://10.244.10.48:10254/healthz HTTP / 1.1 200 OK 日期:2019年9月11日星期三11:15:56 GMT 内容长度:2 内容类型:文本/纯文本; charset = utf-8
答案 0 :(得分:0)
您日志中的错误清楚地说明了特定nginx-ingress-controller*
Pod的运行状况检查问题。由于 Readiness 和 Liveness probes由kubelet节点代理完全管理,因此,我会仔细检查kubelet
服务,为了获取任何相关的错误或可疑事件:
$ sudo systemctl status kubelet -l
$ sudo journalctl -u kubelet
因此,尽管您成功测试了kubelet
个针对curl
端点的请求,但从/health
节点到K8s API服务器的连接可能会出现问题。
同时,您可以从Nginx Ingress控制器的Pod中检查日志并检查引导事件:
kubectl logs $(kubectl get po -l app=nginx-ingress -o jsonpath='{.items[0].metadata.name}')
我还将检查起源nginx-ingress-controller*
Pod所在的K8s Node的容量,并观察整个集群中已分配对象的整体资源利用率。
我建议您查看官方的 Nginx Ingress-Controller 故障排除document,以获取更多调查方法。
答案 1 :(得分:0)
我会说它不与Nginx控制器连接,而是与Kubernetes节点连接。你见过这个吗?