微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Microk8在GCE实例上和GKE custer之间的Istio Multicluster

如何解决Microk8在GCE实例上和GKE custer之间的Istio Multicluster

我正在尝试在Google Compute Engine的Ubuntu 18.04实例和GKE集群上安装的Microk8s 1.18 / Stable之间设置Istio 1.7 MultiCluster。 GKE零件一切正常。但是我对microk8上的istio-ingressgateway有疑问。

当我检查Microk8s单节点群集的名称空间“ istio-system”中的服务时,我发现“ istio-ingressgateway”处于“待定”状态。

NAME                                TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                                                      AGE
service/grafana                     ClusterIP      10.152.183.215   <none>        3000/TCP                                                     10m
service/istio-egressgateway         ClusterIP      10.152.183.180   <none>        80/TCP,443/TCP,15443/TCP                                     10m
service/istio-ingressgateway        LoadBalancer   10.152.183.233   <pending>     15021:32648/TCP,80:30384/TCP,443:31362/TCP,15443:30810/TCP   10m
service/istiocoredns                ClusterIP      10.152.183.70    <none>        53/UDP,53/TCP                                                10m
service/istiod                      ClusterIP      10.152.183.20    <none>        15010/TCP,15012/TCP,15014/TCP,853/TCP                10m
service/jaeger-agent                ClusterIP      None             <none>        5775/UDP,6831/UDP,6832/UDP                                   10m
service/jaeger-collector            ClusterIP      10.152.183.50    <none>        14267/TCP,14268/TCP,14250/TCP                                10m
service/jaeger-collector-headless   ClusterIP      None             <none>        14250/TCP                                                    10m
service/jaeger-query                ClusterIP      10.152.183.142   <none>        16686/TCP                                                    10m
service/kiali                       ClusterIP      10.152.183.135   <none>        20001/TCP                                                    10m
service/prometheus                  ClusterIP      10.152.183.23    <none>        9090/TCP                                                     10m
service/tracing                     ClusterIP      10.152.183.73    <none>        80/TCP                                                       10m
service/zipkin                      ClusterIP      10.152.183.163   <none>        9411/TCP                                                     10m

好吧,我知道microk8s不知道它安装在GCP内运行的VM上,因此无法像在GKE中轻松地为LoadBalancer类型的服务那样在GCP中创建网络负载平衡器。 因此,我手动创建了LB(使其类似于GKE创建的LB),并尝试将其附加到现有的“ istio-ingressgateway”服务。

我跑了

kubectl edit svc -n istio-system istio-ingressgateway

并尝试以与GKE中istio-ingressgateway相同的方式和语法放置此LB的IP:

...
  selector:
    app: istio-ingressgateway
    istio: ingressgateway
    release: istio
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer:
    ingress:
    - ip: 11.22.33.44

它不起作用:

  selector:
    app: istio-ingressgateway
    istio: ingressgateway
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer: {}

所以,我的问题是:

  1. 是否可以使Microk8知道它正在GCP上的VM上运行,并使其能够在“网络服务>负载平衡”中创建TCP LB?也许可以将某些注释添加到LoadBalancer类型的服务的Yaml中?
  2. 我发现一些信息,如果云基础设施不支持自动LB创建,那么我们可以使用istio-ingressgateway的主机IP和NodePort。

如果设置了EXTERNAL-IP值,则您的环境具有可用于入口网关的外部负载平衡器。如果EXTERNAL-IP值为(或永久),则您的环境未为入口网关提供外部负载平衡器。在这种情况下,您可以使用服务的节点端口访问网关。

但这不是为MultiCluster设置编写的。对于MultiCluster,他们建议融合L4 LB:

每个群集中的istio-ingressgateway服务的IP地址必须可以从其他每个群集访问,最好使用L4网络负载平衡器(NLB)。并非所有的云提供商都支持NLB,并且某些云提供商需要特殊的注释才能使用它们,因此,请查阅您的云提供商的文档,以为服务对象类型负载均衡器启用NLB。在不支持NLB的平台上进行部署时,可能需要修改运行状况检查以使负载均衡器注册入口网关

是否可以使用NodePort在Microk8(GCE中的VM)和GKE集群之间进行Istio MultiCluster设置?

非常感谢!

帕维尔

解决方法

已解决!

使用istio-ingressgateway(31732)的Microk8的主机IP和端口“ tls”的NodePort值没有问题:

  - name: tls
    nodePort: 31732
    port: 15443
    protocol: TCP
    targetPort: 15443

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。