当前位置: 首页 > 知识库问答 >
问题:

Kubernetes吊舱在部署istio服务网格后无法发出https请求

梁韬
2023-03-14

我正在探索托管在EKS(亚马逊)上的k8s集群上的istio服务网格。

我尝试在一个新的k8s集群上部署istio-1.2.2,demo.yml文件用于bookapp演示,大多数用例我都理解得很好。

然后,我在我现有的开发集群上使用helm默认配置文件推荐用于生产)部署了istio,运行了100个微服务,我注意到我的服务可以调用超文本传输协议endpoint,但不能调用外部安全endpoint(https://www.google.com等)。)

我正在得到:

curl:(35)错误:1400410B:SSL例程:CONNECT\u CR\u SRVR\u HELLO:版本号错误

虽然我可以从我的测试集群调用外部httpsendpoint。

为了验证,我检查了出口策略,它是mode:ALLOW_ANY,在两个集群中。

现在,我从我的开发集群中完全删除了istio,并安装了demo.yml进行测试,但现在这也不起作用。

我试图将我的问题与此联系起来,但没有取得任何成功。

https://discuss.istio.io/t/serviceentry-for-https-on-httpbin-org-resulting-in-connect-cr-srvr-hello-using-curl/2044

我不明白我错过了什么或我做错了什么。

注意:我指的是此设置:https://istio.io/docs/setup/kubernetes/install/helm/

共有1个答案

裴俊智
2023-03-14

这很可能是Istio中的一个错误(例如,请参阅istio/istio#14520):如果您在集群中的任何位置有任何库伯内特斯服务对象,该对象在端口443上侦听,但其名称以超文本传输协议(而不是https),它将断开所有出站HTTPS连接。

我命中的实例涉及配置AWS负载均衡器来执行TLS终止。库伯内特斯服务需要公开端口443来配置负载均衡器,但它接收未加密的纯HTTP。

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 # <<<< THIS NAME MATTERS
      port: 443
      targetPort: http

当我尝试过这一点时,将名称:更改为httpstcp-https似乎是可行的。这些名称前缀对Istio很重要,但我没有立即发现告诉Istio端口是HTTPS(即使它实际上不提供TLS)与普通的未解释TCP之间有任何功能上的区别。

您确实需要搜索集群,找到侦听端口443的每个服务,并确保端口名不以http-

 类似资料:
  • 我已经在一组运行Centos7的VM上安装了Kubernetes V1.13.10。当我部署吊舱时,它们可以相互连接,但不能连接到集群之外的任何东西。CoreDNS吊舱在日志中有以下错误: IPs 10.20.10.51和10.20.10.52是内部DNS服务器,可以从节点访问。我从DNS服务器捕获了Wireshark数据,我看到流量来自CoreDNS pod IP地址172.21.0.33。DN

  • 当我试图将服务部署到集群时,我得到的错误是:“创建吊舱沙箱失败”。容器的状态仍然停留在“containercreating”上。我遵循了以下教程:https://docs.microsoft.com/en-us/virtualization/windowscontainers/kubernetes/getting-starting-kubernetes-windows 我有一个两节点Kuberne

  • 然后用 我可以看到新的豆荚开始,旧的豆荚终止。我想知道,一旦旧的pod被终止,并且从中消失,我还能找到它们的pod名称吗?

  • 根据Kubernetes文档,部署和副本集之间有1:1的对应关系。类似地,根据replicas属性,一个ReplicaSet可以管理n个相同性质的豆荚。这是正确的认识吗? 从逻辑上讲(假设部署是一个包装器/控制器),我认为部署可以有多个副本集,每个副本集可以有多个豆荚(相同或不同种类)。如果这个说法是正确的,有人可以分享一个例子K8S模板吗?

  • 我最近设置了一个多机器库伯内特斯集群w/Docker和Flannel。我在子网上设置了Flannel,这样主机A上分配IP为的容器可以ping主机B上分配IP为的容器。 我已经设置了 Kubernetes 及其所有各种组件(、 、、),我可以成功地围绕集群启动部署和 pod。 我在集群上部署了Redis服务和webapp pod。在我的webapp pod上,环境变量<code>REDIS_SER

  • 我对Kubernetes是新来的。 我发现了2个pod优先级选项-优先级类别和服务质量。它们之间有什么不同? (https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/https://kubernetes.io/docs/tasks/configure-pod-container/quality-servi