ingress异常导致整体网络不可用

2019-08-23  本文已影响0人  洛子墟

k8s中刷新nginx失败,导致整个网络不可用

测试环境中所有新发布的应用全都不可用,瘫痪的1个小时左右.
一路查下来发现问题是nginx刷新异常,记录一下.

基础环境

现象

新发布的应用无法访问,频繁出现504错误.

问题描述

k8s的集群中使用了Nginx作为反向代理.
如果你发布一个新的应用,Ingress会根据规则动态的把配置文件写入到Nginxdefault.conf中,此时会校验upstream是否存在,如果不存在则会刷新失败.

location / {
    ....
    if ($http_foo = "bar") {  //完全匹配
    #if ($http_foo ~ "bar") {  //正则匹配
           proxy_pass http://default-new-nginx-80;
           break;
    }
    proxy_pass http://default-old-nginx-80;
    ....
}

问题来了,除了k8s的正常流程外,我们还会通过发布系统来控制应用的生命周期,相当于废除了k8s的控制.
实现了此套方案后只要通过k8s系统直接删除pod或者扩容等操作都会造成异常.
所以现在考虑更优解.

上一篇 下一篇

猜你喜欢

热点阅读