簡體   English   中英

ALB 上的 Istio 504 到 Istio 網關以外的 EKS 節點所在

[英]Istio 504 on ALB to EKS node other than Istio gateway is located

漏洞描述

我正在使用 EKS (1.23) 和 ALB。 ALB 正在使用 ACM 提供的證書終止 TLS。

使用 terraform 我在 EKS 集群中安裝了以下 helm 圖表:

  • istio-base
  • istiod
  • 網關

所有1.15.0版本。

集群上配置的其他東西:

  • aws_security_group_rules,入口和出口,在端口 15000-15090 的 EKS 節點上
  • 所需的 k8s 命名空間
  • 需要 k8s ingress 通過 alb-controller 配置 ALB
  • ALB 所需的 ACM 證書
  • 需要 Route53 DNS 條目

所有這些都很常見,所以我認為那里沒有什么奇怪的東西。 我在沒有 Istio 的情況下在多個地方配置了它。

我還添加了一些 httpbin ServiceDeployment以及相關的GatewayVirtualService

在入口中,我配置了 2 個路徑(除了 ALB ssl-redirect指令):

  • /healthz/ready指向status-port
  • 然后/指向http2

Ingress-gateway 服務是 NodePort 類型,這是此類設置所必需的。

(重要)集群中有 2 個節點。

AWS 控制台目標組詳細信息頁面顯示 2/2 目標是健康的。

太...

當我輸入地址https://httpbin.somedomain.com ,每秒請求都會收到504 Gateway Timeout 當我輸入https://httpbin.somedomain.com/healthz/ready時,我每次都會得到 200。 當我將集群中的節點數量增加到 3 時,3 個請求中有 2 個會出現 504。

我很清楚,這與機器上的 ALB 循環有關……但是為什么呢? status-port始終為 200。

版本

$ istioctl version
client version: 1.15.0
control plane version: 1.15.0
data plane version: 1.15.0 (3 proxies)
$ kubectl version --short
Client Version: v1.23.2
Server Version: v1.23.7-eks-4721010
$ helm version --short
v3.8.0+gd141386

附加信息

$ istioctl bug-report

Target cluster context: v2-xxx

Running with the following config: 

istio-namespace: istio-system
full-secrets: false
timeout (mins): 30
include: {  }
exclude: { Namespaces: kube-node-lease,kube-public,kube-system,local-path-storage }
end-time: 2022-09-27 17:29:26.34498 +0200 CEST



Cluster endpoint: https://yyy.yl4.eu-west-1.eks.amazonaws.com
CLI version:
version.BuildInfo{Version:"1.15.0", GitRevision:"e3364ab424b70ca8ee1ca76cb0b3afb73476aaac", GolangVersion:"go1.19", BuildStatus:"Clean", GitTag:"1.15.0"}

The following Istio control plane revisions/versions were found in the cluster:
Revision default:
&version.MeshInfo{
    {
        Component: "pilot",
        Info:      version.BuildInfo{Version:"1.15.0", GitRevision:"e3364ab424b70ca8ee1ca76cb0b3afb73476aaac", GolangVersion:"go1.19", BuildStatus:"Clean", GitTag:"1.15.0"},
    },
}

The following proxy revisions/versions were found in the cluster:
Revision default: Versions {1.15.0}


Fetching proxy logs for the following containers:

argocd//argo-cd-argocd-application-controller-0/application-controller
argocd/argo-cd-argocd-applicationset-controller/argo-cd-argocd-applicationset-controller-9dddcffbf-zrcgl/applicationset-controller
argocd/argo-cd-argocd-dex-server/argo-cd-argocd-dex-server-75c975ccb7-xmd82/dex-server
argocd/argo-cd-argocd-notifications-controller/argo-cd-argocd-notifications-controller-5854964cbf-z8nlr/notifications-controller
argocd/argo-cd-argocd-redis/argo-cd-argocd-redis-664b98cfd7-lndsf/argo-cd-argocd-redis
argocd/argo-cd-argocd-repo-server/argo-cd-argocd-repo-server-75f49f7ccf-xsblh/repo-server
argocd/argo-cd-argocd-server/argo-cd-argocd-server-6599d8d846-dqr6s/server
first/httpbin/httpbin-7bffdcffd-2klzj/httpbin
first/httpbin/httpbin-7bffdcffd-2klzj/istio-proxy

...

istio-ingress-internal/internal/internal-554ddcb684-kr52c/istio-proxy
istio-ingress-internet-facing/internet-facing/internet-facing-555fd48d8d-2tx74/istio-proxy
istio-system/istiod/istiod-86cd5997bb-r6797/discovery

...

Fetching Istio control plane information from cluster.

Running istio analyze on all namespaces and report as below:
Analysis Report:
Info [IST0102] (Namespace argocd) The namespace is not enabled for Istio injection. Run 'kubectl label namespace argocd istio-injection=enabled' to enable it, or 'kubectl label namespace argocd istio-injection=disabled' to explicitly mark it as not needing injection.
Info [IST0102] (Namespace default) The namespace is not enabled for Istio injection. Run 'kubectl label namespace default istio-injection=enabled' to enable it, or 'kubectl label namespace default istio-injection=disabled' to explicitly mark it as not needing injection.
Info [IST0118] (Service argocd/argo-cd-argocd-applicationset-controller) Port name webhook (port: 7000, targetPort: webhook) doesn't follow the naming convention of Istio port.

...

Creating an archive at /Users/zzz/bug-report.tar.gz.
Cleaning up temporary files in /var/folders/l4/82mt4l7x4r5dzp1j4ppxqqzm0000gn/T/bug-report.
Done.

原題在這里

我通過允許 EKS 節點組中的機器之間允許端口80解決了這個問題。 我不明白為什么它對 TBH 有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM