华为云K8s切换Istio遇到的问题

1.istio-ingressgateway 31380端口不通(安全组端口已开放)

telnet 31380不通(connection refuesed)

解决方法:

部署istio路由配置后自己就通了(刚安装完istio一个服务也没有,之后部署gateway+virtualService+destinationRule后即可访问31380端口)

参考:1.1.1 Connection Refused - Fresh Install #13057

2.domainName -> ingress_host:ingress_port映射

前方案(不知道谁整的架构)-  已弃用:

(1)在dnsPod(dns服务器)上将指定域名(特定或*pro.xxx.com形式)映射到华为云LB外网Ip;

(2)在LB上添加监听器监听80端口;

(3)后端服务器组进入master-01:80端口;

(4)进入master-01后通过自己搭建的nginx转到Istio ingress_host:ingress_port;

也就是所有外部流量经由Dns服务器后被转发到华为云入口(LB 80端口),之后通过LB将外网流量引入到集群内部节点,而在该集群内部节点通过nginx将流量再次转发到istio-ingressgateway(ingress_host:ingress_port);

目前方案:

(1)在dnsPod(dns服务器)上将指定域名(特定或*pro.xxx.com形式)映射到华为云LB外网Ip;

(2)在LB上添加监听器监听80端口;

(3)后端服务器组直接指向Istio ingress_host:ingress_port;

优化后的方案就是直接通过LB将流量指向Istio ingress_host:ingress_port,不经过Nginx转发
(不知道以前为什么要经过Nginx);

3.客户端报426

426 Upgrade Required 

由于在解决第2个问题端口映射时采用了nginx方案,故导致了客户端收到Server: nginx/1.6.2返回的429(如下图);

解决方法:

nginx反向代理默认走的http 1.0版本,但是被反向代理的服务器(具体tomcat应用)是1.1版本的,
所以在反向代理的时候加上如下设置即可:

location / {
         proxy_http_version 1.1;
         proxy_pass http://192.168.6..115:31380;
    }

4.前端容器nginx转发服务报503

前端容器中配置了个nginx,会将该前端容器中/dspt_service转发到集群内部服务,例如转发到dspt-service.tsp,配置如下:

upstream my-gateway {
      server dspt-service.tsp weight=5;
}

server {
        listen       80;
        server_name xxx.yyy.com;


        #前台页面
        location / {
            alias /usr/share/nginx/mx-web/;
            index login.html;
        }

        #后台服务
        location /dspt_service {
            proxy_pass      http://my-gateway;
            proxy_set_header           Host $host;
            proxy_set_header           X-Real-IP $remote_addr;
            proxy_cache_valid all 1m;
            proxy_http_version 1.1;
        }
}

例如在浏览器中通过xxx.yyy.com访问到前端容器中的登录页面login.html,在浏览器中通过xxx.yyy.com/dspt_service即可访问到集群内的dspt-service.tsp服务,之前在K8s环境下以上配置没有问题,但是切到Istio后,再在浏览器中访问xxx.yyy.com/dspt_service则报503(Service Unavalible),由此猜想到应该是http请求头Host有问题(请求头Host可以用来解析虚拟主机概念中的具体服务),将请求头Host修改为相应服务的请求域名即可,即将上面的Host修改为具体服务的域名dspt-service.tsp,修改后如下:

upstream my-gateway {
      server dspt-service.tsp weight=5;
}

server {
        listen       80;
        server_name xxx.yyy.com;


        #前台页面
        location / {
            alias /usr/share/nginx/mx-web/;
            index login.html;
        }

        #后台服务
        location /dspt_service {
            proxy_pass      http://my-gateway;
            proxy_set_header           Host dspt-service.tsp;
            proxy_set_header           X-Real-IP $remote_addr;
            proxy_cache_valid all 1m;
            proxy_http_version 1.1;
        }
}

发布了56 篇原创文章 · 获赞 6 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/luo15242208310/article/details/99748117