我在EKS(亚马逊)创建了一个新的k8s集群部署istio
,版本是1.2.2
。
istio的安装参考:https://istio.io/docs/setup/kubernetes/install/helm/
然后,我使用helm默认配置文件(推荐用于生产)部署了istio,运行了100个微服务,但是,我的服务可以调用http的站点,但不能调用外部安全站点(如:https://orchome.com 等)
错误如下:
curl: (35) error:1400410B:SSL routines:CONNECT_CR_SRVR_HELLO:wrong version number
不知道哪里不对,请问有人知道吗?
你这个错像是istio的bug(参考istio/istio#14520),,如果你的群集中有任何
Kubernetes Service
,如果它在端口443上进行监听,但其名称以http
而不是https
开头,它就会中断所有出站HTTPS连接。以下是个有问题的示例:
apiVersion: v1 kind: Service metadata: name: breaks-istio annotations: service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:... service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http spec: selector: ... ports: - name: http-ssl # <<<< 问题就在这里 port: 443 targetPort: http
Kubernetes Service需要公开端口443以配置负载均衡器,但它接收到了普通的未加密HTTP的。将名称改为:https 或 tcp-https 就好了。
你搜索你的集群,找到侦听端口443的Service,并确保端口名称不以
http -....
开头,就好了谢谢大神回复,我发了有个“http-metrics”的名字在443端口上。我删除了那个svc,问题就解决了。
你的答案