如何解决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: {}
所以,我的问题是:
- 是否可以使Microk8知道它正在GCP上的VM上运行,并使其能够在“网络服务>负载平衡”中创建TCP LB?也许可以将某些注释添加到LoadBalancer类型的服务的Yaml中?
- 我发现一些信息,如果云基础设施不支持自动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 举报,一经查实,本站将立刻删除。