Kubernetes 我应该如何在EKS服务中使用externalIPs?
我试图在EKS集群上应用服务 我做什么 我已经用Kubernetes 我应该如何在EKS服务中使用externalIPs?,kubernetes,amazon-eks,eksctl,Kubernetes,Amazon Eks,Eksctl,我试图在EKS集群上应用服务 我做什么 我已经用eksctl创建了EKS集群: eksctl create cluster --name=test --region=eu-north-1 --nodes=1 我已打开所有安全组,以确保我没有防火墙问题。ACL还允许所有通信。 我将公共IP作为唯一可用的工作节点,并尝试将其用于简单的服务+部署。 这应该只有1个部署,1个replicaset和1个带有nginx的pod。这应该连接到具有每个人都可以访问的外部/公共IP的服务 apiVersion:
eksctl
创建了EKS集群:
eksctl create cluster --name=test --region=eu-north-1 --nodes=1
我已打开所有安全组,以确保我没有防火墙问题。ACL还允许所有通信。
我将公共IP作为唯一可用的工作节点,并尝试将其用于简单的服务+部署。
这应该只有1个部署,1个replicaset和1个带有nginx的pod。这应该连接到具有每个人都可以访问的外部/公共IP的服务
apiVersion: apps/v1
kind: Deployment
metadata:
name: app
spec:
replicas: 1
selector:
matchLabels:
app: app
template:
metadata:
labels:
app: app
spec:
containers:
- name: nginx
image: nginx
---
apiVersion: v1
kind: Service
metadata:
name: app
labels:
app: app
spec:
ports:
- port: 80
targetPort: 80
selector:
app: app
externalIPs:
- 13.51.55.82
当我应用它时,一切似乎都很好。我可以将我的app
服务转发到本地主机,我可以看到输出(kubectl port forward svc/app 9999:80
->curl localhost:9999
)
但问题是我无法通过公共IP访问此服务
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
app ClusterIP 10.100.140.38 13.51.55.82 80/TCP 49m
kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 62m
思想
对我来说,服务似乎没有连接到节点本身。当我ssh到节点并在端口80上设置简单web服务器时,它会立即响应
我知道我可以使用NodePort,但在我的情况下,我希望最终使用固定端口4000,NodePort只允许我使用30000-32768范围内的端口
问题:
我希望能够在30000以下的特定端口上通过公共IP卷曲我的服务(NodePort不适用)。
如何在EKS集群上使用Kubernetes服务externalIPs
编辑一:
仅供参考:我不想使用LoadBalancer。我不认为外部服务能像您期望的那样工作。外部服务意味着将集群内使用的dns条目映射到集群外,就像您在集群外有一个ip地址的Postgres,然后您可以在集群中创建一个称为“Postgres”的服务,您的POD可以使用该服务。您可以选择节点报告(位于部署它们的节点上)或负载平衡器。最后但并非最不重要的一点是,您可以选择使用ingresses,但我不知道这是否适用于您的案例。谢谢@verodigiorgio的回答。我怀疑我没有完全理解这个概念。
$ curl 13.51.55.82:80
curl: (7) Failed to connect to 13.51.55.82 port 80: Connection refused