繁体   English   中英

EKS 集群未在 Ingress controller 上显示我的 IP

[英]EKS cluster is not showing my an IP on the Ingress controller

我是 K8S 的新手,所以请保持温柔。 我有一个测试 hello world Flask 应用程序,我想将它部署在 EKS 上。 我正在使用下面的链接使用 AWS 负载均衡器 Controller 插件。 最后,当我检查部署时,它显示没有任何问题,如链接所述。 https://docs.aws.amazon.com/eks/latest/userguide/aws-load-balancer-controller.html

当我应用下面的三个文件时,它们都正确应用并且我看到了 pod,但是在入口处我没有看到外部 IP 地址并且无法访问我的 Flask 应用程序。

我的目标是让 AWS 创建一个虚拟的 DNS 名称,然后我可以将我的公共 DNS 名称作为 CNAM 条目指向它。 此外,Ingress 应该在端口 80 中,然后应该在内部转发到 Flask 应用程序的端口 5000。

我错过了什么? 有人可以指出我正确的方向吗?

入口.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: "flask-test-ingress"
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: ip
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]'
  labels:
    app: hello-world
spec:
  rules:
    - host: testing.somesite.com
      http:
        paths:
            - path: /
              pathType: Prefix
              backend:
                service:
                  name: "hello-world-service"
                  port:
                    number: 80

部署.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-world
spec:
  selector:
    matchLabels:
      app: hello-world
  replicas: 2
  template:
    metadata:
      labels:
        app: hello-world
    spec:
      containers:
      - name: hello-world
        image: gitlab.privaterepo.com:5050/jmartinez/flask_helloworld:v4
        ports:
        - containerPort: 5000
          protocol: TCP
      imagePullSecrets:
      - name: regcred

服务.yaml

apiVersion: v1
kind: Service
metadata:
  name: hello-world-service
spec:
  selector:
    app: hello-world
  type: NodePort
  ports:
  - protocol: "TCP"
    port: 80
    targetPort: 5000
    nodePort: 30000

终于让它工作了。 当我意识到 ALB 不是自动创建时,我研究并找到了解决方案。 我必须从注释中删除 ingress.class 值并删除主机。 所以现在我的入口看起来像下面这样。 删除旧的入口并重新应用这个入口后,我等了大约 10 分钟,我的 hello world 应用程序现在正在运行。

入口.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: "flask-test-ingress"
  annotations:
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: ip
  labels:
    app: hello-world
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
            - path: /
              pathType: Prefix
              backend:
                service:
                  name: "hello-world-service"
                  port:
                    number: 80

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM