【发布时间】:2021-01-20 06:09:44
【问题描述】:
我有一个带有 VPC 的 EKS 集群,其中包含几个 pod 和服务 一个 pod 连接到使用 LoadBalancer 类型定义的服务。 负载均衡器是内部的(在 PVC 上运行)
我在部署 pod 和服务后遇到了奇怪的问题:
部署完成后,我运行“kubectl get svc”并复制外部 IP,IP 看起来像这样:
internal-XXXXXXXXXXXXXXXXXXXXX.<region>.elb.amazonaws.com
我测试我的笔记本电脑(连接到 VPC)的连接并运行以下命令
telnet internal-XXXXXXXXXXXXXXXXXXXXX.<region>.elb.amazonaws.com 8081
得到以下回复
Trying 10.0.0.1 (some internal IP)...
Connected to internal-XXXXXXXXXXXXXXXXXXXXX.<region>.elb.amazonaws.com
所以结果基本上说我可以访问服务后面的 pod,但是当我运行 WGET 命令时,我得到了以下结果
--2020-10-05 13:55:14-- http://internal-XXXXXXXXXXXXXXXXXXXXX.<region>.elb.amazonaws.com:8081/
Resolving internal-XXXXXXXXXXXXXXXXXXXXX.<region>.elb.amazonaws.com (internal-XXXXXXXXXXXXXXXXXXXXX.<region>.elb.amazonaws.com)... 10.0.0.1, 10.0.0.2
Connecting to internal-XXXXXXXXXXXXXXXXXXXXX.<region>.elb.amazonaws.com (internal-XXXXXXXXXXXXXXXXXXXXX.<region>.elb.amazonaws.com)|10.0.0.1|:8081... connected.
HTTP request sent, awaiting response... Read error (Operation timed out) in headers.
Retrying.
但是当我在 EKS 上运行的其他 pod 中运行相同的 WGET 命令时,我得到了有效响应(下载了 index.html 文件)
因此,似乎只能从 EKS 中的其他 pod 访问该 pod,但不能从 EKS 外部访问该 pod(尽管有与该服务的连接)
任何人也遇到同样的问题并可以提供帮助吗? 这是我的 pod 和服务描述输出:
服务:
Name: service
Namespace: default
Labels: app.kubernetes.io/managed-by=Helm
Annotations: meta.helm.sh/release-name: help_repo
meta.helm.sh/release-namespace: default
service.beta.kubernetes.io/aws-load-balancer-internal: true
Selector: app=test-app
Type: LoadBalancer
IP: 172.X.X.X
LoadBalancer Ingress: internal-XXXXXXXXXXXXXXXXXXXXX.<region>.elb.amazonaws.com
Port: rpc 6123/TCP
TargetPort: 6123/TCP
NodePort: rpc 32648/TCP
Endpoints: **<same-pod-ip>**:6123
Port: blob 6124/TCP
TargetPort: 6124/TCP
NodePort: blob 31041/TCP
Endpoints: **<same-pod-ip>**:6124
Port: ui 8081/TCP
TargetPort: 8081/TCP
NodePort: ui 30608/TCP
Endpoints: **<same-pod-ip>**:8081
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
吊舱:
Name: test-app-ff8c566c7-rfkrh
Namespace: default
Priority: 0
Node: <node ip>
Start Time: Mon, 05 Oct 2020 13:42:19 +0300
Labels: app=test-app
pod-template-hash=ff8c566c7
Annotations: kubernetes.io/psp: eks.privileged
Status: Running
IP: **<same-pod ip>**
IPs:
IP: **<same-pod ip>**
Controlled By: ReplicaSet/test-app-ff8c566c7
Containers:
test-app:
Container ID: docker://XXXXXXXXX
Image: ECR_URL
Ports: 6123/TCP, 6124/TCP, 8081/TCP
Host Ports: 0/TCP, 0/TCP, 0/TCP
Args: <run app command>
State: Running
Started: Mon, 05 Oct 2020 13:42:33 +0300
Ready: True
Restart Count: 0
Liveness: tcp-socket :6123 delay=30s timeout=1s period=60s #success=1 #failure=3
Environment: <none>
谢谢!
【问题讨论】:
-
你解决了吗?
标签: kubernetes kubernetes-pod amazon-eks aws-load-balancer