赞
踩
先说结论,是因为k8s中使用了服务网格 istio,Istio有一个安装选项,global.outboundTrafficPolicy.mode,它配置 Sidecar 对外部服务(那些没有在Istio 的内部服务注册中定义的服务)的处理方式。如果这个选项设置为 ALLOW_ANY, Istio代理允许调用未知的服务。如果这个选项设置REGISTRY_ONLY,那么 Istio 代理会阻止任何没有在网格中定义的 HTTP服务或 service entry 的主机。ALLOW_ANY 是默认值,不控制对外部服务的访问,方便你快速地评估Istio。尽管这为入门 Istio 带来了方便,但是,通常情况下,配置更严格的控制是更可取的。当k8s平台运维人员配置成REGISTRY_ONLY,就导致了网格内服务都访问不到网格外的数据库导致。
通过设置ServiceEntry可以解决该问题。
系统突然全部转圈圈,前端返回超时。
nc -zv 10.xxx.xxx.xxx 3306
通过增加ServiceEntry来允许外部访问。
kubectl apply -f - <<EOF apiVersion: networking.istio.io/v1alpha3 kind: ServiceEntry metadata: name: mysqldb spec: hosts: - mysqldb.svc.remote ports: - number: 3306 name: mysql protocol: MySQL location: MESH_EXTERNAL resolution: STATIC endpoints: - address: 10.xxx.xxx.xxx ports: mysql: 3306 EOF
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。