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

指定主机并启用HTTP重定向时,ISTIO失败

冷英博
2023-03-14
kind: VirtualService
metadata:
  name: app-lab-app
  namespace: my-namespace
spec:
  gateways:
    - istio-system/ingressgateway
  hosts:
    - hostname1.lab
  http:
  - match:
    route:
    - destination:
        host: search-head-service
        port:
          number: 8000

当我试图通过cURL访问此服务时,我收到以下错误(32271是映射到ingressgateway上的端口80的主机端口):

curl -Hhost:hostname1.lab http://10.20.1.108:32271/ -L
curl: (7) Failed to connect to hostname1.lab port 80: Connection refused

问题是..endpoint执行重定向。我可以到达第一个网站,但一旦重定向发生,它就失败了

我可以通过删除规范中的主机名并将其更改为“*”来实现这一点,但这不会帮助我实现基于主机的负载平衡。

编辑:ingress-gateway配置(kubectl description pod/Ingress-Gateway-xxxx)

Name:         istio-ingressgateway-657df8bc75-cmghw
Namespace:    istio-system
Priority:     0
Node:         ip-10-20-1-108.us-west-2.compute.internal/10.20.1.108
Start Time:   Tue, 21 Apr 2020 13:22:48 -0500
Labels:       app=istio-ingressgateway
              chart=gateways
              heritage=Tiller
              istio=ingressgateway
              pod-template-hash=657df8bc75
              release=istio
              service.istio.io/canonical-name=istio-ingressgateway
              service.istio.io/canonical-revision=1.5
Annotations:  cni.projectcalico.org/podIP: 10.192.1.36/32
              kubernetes.io/psp: 00-privileged
              sidecar.istio.io/inject: false
Status:       Running
IP:           10.192.1.36
IPs:
  IP:           10.192.1.36
Controlled By:  ReplicaSet/istio-ingressgateway-657df8bc75
Containers:
  istio-proxy:
    Container ID:  docker://bfa29df838cd1e42a24674838bbf8454c8d56ec898b1833563f1b89a19a38030
    Image:         docker.io/istio/proxyv2:1.5.0
    Image ID:      docker-pullable://docker.io/istio/proxyv2@sha256:89b5fe2df96920189a193dd5f7dbd776e00024e4c1fd1b59bb53867278e9645a
    Ports:         15020/TCP, 80/TCP, 443/TCP, 15029/TCP, 15030/TCP, 15031/TCP, 15032/TCP, 31400/TCP, 15443/TCP, 15011/TCP, 8060/TCP, 853/TCP, 15090/TCP
    Host Ports:    0/TCP, 80/TCP, 443/TCP, 0/TCP, 0/TCP, 0/TCP, 0/TCP, 0/TCP, 0/TCP, 0/TCP, 0/TCP, 0/TCP, 0/TCP
    Args:
      proxy
      router
      --domain
      $(POD_NAMESPACE).svc.cluster.local
      --proxyLogLevel=warning
      --proxyComponentLogLevel=misc:error
      --log_output_level=default:info
      --drainDuration
      45s
      --parentShutdownDuration
      1m0s
      --connectTimeout
      10s
      --serviceCluster
      istio-ingressgateway
      --zipkinAddress
      zipkin.istio-system:9411
      --proxyAdminPort
      15000
      --statusPort
      15020
      --controlPlaneAuthPolicy
      NONE
      --discoveryAddress
      istio-pilot.istio-system.svc:15012
      --trust-domain=cluster.local
    State:          Running
      Started:      Tue, 21 Apr 2020 13:22:50 -0500
    Ready:          True
    Restart Count:  0
    Limits:
      cpu:     2
      memory:  1Gi
    Requests:
      cpu:      10m
      memory:   40Mi
    Readiness:  http-get http://:15020/healthz/ready delay=1s timeout=1s period=2s #success=1 #failure=30
    Environment:
      JWT_POLICY:                   first-party-jwt
      PILOT_CERT_PROVIDER:          istiod
      ISTIO_META_USER_SDS:          true
      CA_ADDR:                      istio-pilot.istio-system.svc:15012
      NODE_NAME:                     (v1:spec.nodeName)
      POD_NAME:                     istio-ingressgateway-657df8bc75-cmghw (v1:metadata.name)
      POD_NAMESPACE:                istio-system (v1:metadata.namespace)
      INSTANCE_IP:                   (v1:status.podIP)
      HOST_IP:                       (v1:status.hostIP)
      SERVICE_ACCOUNT:               (v1:spec.serviceAccountName)
      ISTIO_META_WORKLOAD_NAME:     istio-ingressgateway
      ISTIO_META_OWNER:             kubernetes://apis/apps/v1/namespaces/istio-system/deployments/istio-ingressgateway
      ISTIO_META_MESH_ID:           cluster.local
      ISTIO_AUTO_MTLS_ENABLED:      true
      ISTIO_META_POD_NAME:          istio-ingressgateway-657df8bc75-cmghw (v1:metadata.name)
      ISTIO_META_CONFIG_NAMESPACE:  istio-system (v1:metadata.namespace)
      ISTIO_META_ROUTER_MODE:       sni-dnat
      ISTIO_META_CLUSTER_ID:        Kubernetes
    Mounts:
      /etc/istio/ingressgateway-ca-certs from ingressgateway-ca-certs (ro)
      /etc/istio/ingressgateway-certs from ingressgateway-certs (ro)
      /etc/istio/pod from podinfo (rw)
      /var/run/ingress_gateway from ingressgatewaysdsudspath (rw)
      /var/run/secrets/istio from istiod-ca-cert (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from istio-ingressgateway-service-account-token-7ssdg (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  istiod-ca-cert:
    Type:      ConfigMap (a volume populated by a ConfigMap)
    Name:      istio-ca-root-cert
    Optional:  false
  podinfo:
    Type:  DownwardAPI (a volume populated by information about the pod)
    Items:
      metadata.labels -> labels
      metadata.annotations -> annotations
  ingressgatewaysdsudspath:
    Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:     
    SizeLimit:  <unset>
  ingressgateway-certs:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  istio-ingressgateway-certs
    Optional:    true
  ingressgateway-ca-certs:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  istio-ingressgateway-ca-certs
    Optional:    true
  istio-ingressgateway-service-account-token-7ssdg:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  istio-ingressgateway-service-account-token-7ssdg
    Optional:    false
QoS Class:       Burstable
Node-Selectors:  istio-ingressgateway=true
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:          <none>

共有1个答案

晋涛
2023-03-14

虽然我仍然想知道最初发生了什么,但一位ISTIO大师让我应用了下面的补丁。这些步骤在所有节点上创建一个ISTIO网关(而不是入口网关),并带有相应的标签:

步骤1-标记某些节点:

kubectl label nodes <hostname> istio-ingressgateway=true
kubectl label nodes <hostname> istio-ingressgateway=true

步骤2-将补丁保存到类似patch.json的文件中:

   "spec": {
      "replicas": 2,
      "template": {
         "spec": {
            "nodeSelector": {"istio-ingressgateway" : "true"},
            "containers": [
               {"name" : "istio-proxy", "ports": [{"containerPort" : 80, "hostPort" : 80, "protocol": "TCP"}, {"containerPort":443, "hostPort": 443, "protocol" : "TCP"}]}
            ]
         }
      }
   }
}
kubectl -n istio-system patch deployment/istio-ingressgateway --patch "$(cat patch.json)"
 类似资料:
  • 我知道这个问题已经被问过很多次了。然而,我似乎无法将其用于我的场景。 我想将所有 http 流量重定向到 https,并将 https 根重定向到登录页面。这是我在 vhost.conf 文件中的虚拟主机。 https根登录重定向工作正常。但是,我无法让超文本传输协议https重定向工作。我尝试了各种建议,如; 根据这里的各种帖子。但是其中一些不起作用,在一些建议中,有评论提到查询字符串不适用于变

  • 本规范广泛采用了HTTP重定向,有此客户端或授权服务器引导资源所有者的用户代理到另一个目的地址。虽然本规范中的例子演示了HTTP 302状态码的使用,但是任何其他通过用户代理完成重定向的方法都是允许的并被考虑作为实现细节。

  • 请不要向我推荐超过173票的长而详细的帖子。这对我不起作用。我也试过很多其他的(1,2,3,4)。他们都给我太多的重定向或错误500。因此,我的问题是: 用我的电流。htaccess,这就是发生的情况: https://www.dukescasino.com/-工作完美 https://dukescasino.com/-重定向到上面的内容,这很好 下面的两个选项加载罚款,但它应该重定向到https

  • 我需要配置我的Tomcat 9服务器,将http重定向到https流量。 我尝试过: > < li> 对http端口使用连接器,并具有指向安全连接器的redirectPort属性。 在web.xml底部包括一个安全约束链接,它适用于其他不使用虚拟主机的Tomcat服务器 连接器 安全约束 服务器中的主机配置.xml < Li > https://example 2 . com-Works < Li

  • 我正在配置Tomcat以支持HTTP(端口8080)和HTTPS(端口8443)。server.xml,如果我这样配置: 对超文本传输协议://SERVER_IP: 8080的所有访问都将定向到https://SERVER_IP: 8443。如何禁用重定向,并允许超文本传输协议和https访问? 我尝试删除,但它不起作用。

  • 在Chrome上有一个关于相同问题的类似问题,在Chrome上有一个解决它的答案。 当我尝试转到时,Firefox会将我重定向到。为什么?如果我打开一个隐姓埋名的窗口,就不会发生这种情况。在我解决这个之前我不能继续发展。请帮忙。