kubernetes - Istio + minikube + Nginx (React)。无法从浏览器或 CURL 访问

标签 kubernetes minikube istio

当我在没有入口网关的情况下部署时,我可以通过端口转发直接访问浏览器中应用程序的 LoadBalancer。但是通过入口网关它不起作用。
Sidecars 注入(inject)已启用!

Istio v1.4.0
Minukube v1.5.2
Kubernetes v1.16.0

Istio 安装:

istioctl manifest apply \
  --set values.global.mtls.enabled=false \
  --set values.tracing.enabled=true \
  --set values.kiali.enabled=true \
  --set values.grafana.enabled=true \
--namespace istio-system

比使用 NGINX 部署 React。
# Frontend service
apiVersion: v1
kind: Service
metadata:
  name: front-web
  namespace: demo
spec:
  type: NodePort
  selector:
    app: front-web
  ports:
    - name: http
      port: 80

---
# Frontend app
apiVersion: apps/v1
kind: Deployment
metadata:
  name: front-web
  namespace: demo
  labels:
    app: front-web
spec:
  replicas: 1
  selector:
    matchLabels:
      app: front-web
  template:
    metadata:
      labels:
        app: front-web
    spec:
      containers:
      - name: front-web
        image: sergeygreat/front-web:v1.0.3
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80

网关

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: demo-gw
  namespace: demo
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*"
---

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: demo-vs
  namespace: demo
spec:
  hosts:
  - "*"
  gateways:
  - demo-gw
  http:
  - match:
    - uri:
        exact: /
    route:
    - destination:
        port:
          number: 80
        host: front-web.default.svc.cluster.local  # <- tryed just `front-web`, no luck
>> kubectl get svc -n istio-system

istio-ingressgateway LoadBalancer 10.104.158.110 <pending> 80:31332/TCP,...



一切都在运行,但无法通过 http://minikube 访问ip:31332 ???

对于浏览器中的 80 端口:http://minikube_ip - 404 Not Found openresty/1.15.8.2对于浏览器中的端口 31332:http://minikube_ip:31332 - 503 错误

minikube ssh


$ curl -i http://localhost:31332
HTTP/1.1 503 Service Unavailable
date: Mon, 16 Dec 2019 16:04:32 GMT
server: istio-envoy
content-length: 0

$ curl -i http://192.168.99.101:31332
HTTP/1.1 503 Service Unavailable
date: Mon, 16 Dec 2019 16:04:45 GMT
server: istio-envoy
content-length: 0

可以请人帮忙吗?

最佳答案

尝试重新创建 minikube:

>>minikube stop
>>minikube delete
>>minikube start --memory=16384 --cpus=4 --vm-driver=virtualbox --kubernetes-version=v1.16.0

如果没有帮助尝试绑定(bind)到另一个端口:
- Deployment set to 80
- Service type should be NodePort and bind it to port 8080 targetPort:80
- VirtualService host "*" port 8080

它应该工作!

如果不尝试从 VirtualService 中删除此部分:
- match:
    - uri:
        exact: /

关于kubernetes - Istio + minikube + Nginx (React)。无法从浏览器或 CURL 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59360167/

相关文章:

kubernetes - Kubernetes Kubeadm初始化时出错

docker - Kubernetes 服务连接被拒绝,如何访问服务?

kubernetes - 没有选择器的kubernetes headless service的使用场景是什么?

kubernetes - kubectl 补丁无法应用于 ConfigMap 数据

azure - 在github中维护K8S资源的最佳实践

kubernetes - Minikube 中 api-server 的身份验证机制如何更改?

kubernetes - Istio 分布式跟踪仅显示 1 个跨度

elasticsearch - Istio fluentd 适配器以字节形式发送 IP 地址

IstioOperator 和 sidecar 自动注入(inject)

python - 如何将 Airflow worker 的数量安装到 Airflow kubernetes pod 运算符(operator)?