这是我的
gateways
:helm template ./istio/install/kubernetes/helm/istio --name istio \
--namespace istio-system --values ./mesh/values.yaml | kubectl apply -f -
#1 楼
我已经通过更新网关清单解决了问题。不知道为什么添加多个“匹配项”时会发生错误。
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: istio-gateway
spec:
selector:
istio: ingressgateway #default istio ingressgateway
servers:
- port:
number: 80
name: http-istio-gateway
protocol: HTTP
hosts:
- "*"
tls:
httpsRedirect: true
- port:
number: 443
name: https-istio-gateway
protocol: HTTP
hosts:
- "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: api-gateway
spec:
gateways:
- istio-gateway
hosts:
- "*"
http:
- match:
- uri:
prefix: "/socket.io"
route:
- destination:
host: api-gateway-ws.default.svc.cluster.local
port:
number: 5001
websocketUpgrade: true
- route:
- destination:
host: api-gateway.default.svc.cluster.local
port:
number: 5000
#2 楼
我遇到了相同的错误,但有不同的问题。服务端口需要添加一个名称。 https://github.com/istio/istio/issues/19966。并且他们需要遵循以下格式(协议后缀)https://istio.io/docs/ops/deployment/requirements/ports:
- name: https # Use http or https
protocol: TCP
port: 8080
targetPort: 8080
#3 楼
将大型虚拟服务和目标规则拆分为多个资源:这种配置的缺点是,任何基础微服务的其他配置(例如,路由规则)也需要包含在此单个配置文件中。 >参考:https://istio.io/docs/ops/best-practices/traffic-management/在此处输入链接说明#4 楼
这很可能与DOCKER中运行的应用程序与DOCKER配置中公开的端口不同的端口不匹配Docker文件
EXPOSE <PORT>
应该与应用程序启动的端口相同。网关可以绑定到容器端口,但无法与应用程序通信。#5 楼
有时在应用Istio mTLS时会发生这种情况,因此请先尝试在相关名称空间中禁用mTLS。 (尤其是如果您在Pod中使用某种gRPC)kubectl get peerauthentication --all-namespaces
评论
日志表示什么?@ 030:我认为引导程序和istio-proxy之间的同步数据存在问题。第一次启动服务时,无法登录。但是,如果我删除所有服务并再次启动它,它就可以工作了!