0

我试图在 EKS 集群上应用服务externalIPs 功能。

我所做的

我创建了 EKS 集群eksctl

eksctl create cluster --name=test --region=eu-north-1 --nodes=1

我已经打开了所有安全组以确保我没有防火墙问题。ACL 也允许所有流量。我将公共 IP 用于唯一可用的工作节点,并尝试通过简单的服务 + 部署来使用它。这应该只有 1 个部署和 1 个副本集和 1 个 pod 和 nginx。这应该附加到每个人都可以访问的具有外部/公共 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服务端口转发到 localhost,我可以看到输出 ( 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
$ curl 13.51.55.82:80
curl: (7) Failed to connect to 13.51.55.82 port 80: Connection refused

想法

对我来说,服务似乎没有连接到节点本身。当我 ssh 到节点并在端口 80 上设置简单的 Web 服务器时,它会立即响应。

我知道我可以使用 NodePort,但就我而言,我最终希望使用固定端口 4000,而 NodePort 只允许我使用 30000-32768 范围内的端口。

问题

我希望能够在低于 30000 的某个端口上通过公共 IP 卷曲我的服务(NodePort 不适用)。如何使其与 EKS 集群上的 Kubernetes 服务外部 IP 一起使用?

编辑我:

仅供参考:我不想使用 LoadBalancer。

4

0 回答 0