Kubernetes 我应该如何在EKS服务中使用externalIPs?

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:

我试图在EKS集群上应用服务

我做什么 我已经用
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