【问题标题】:getting 502 Bad Gateway on eks aws-alb-ingress在 eks aws-alb-ingress 上获得 502 Bad Gateway
【发布时间】:2022-01-13 19:01:07
【问题描述】:

我使用 terraform-aws-modules/eks/aws 作为模块,通过 Terraform 在 AWS 中创建了一个 EKS 集群。该集群有一个使用 nodeport 作为服务和入口的 pod(golang 应用程序)。我遇到的问题是,当我到达端点时,我得到了 502 bad gateway。

我的配置:

部署:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: golang-deployment
  labels:
    app: golang-app
spec:
  replicas: 1
  selector:
    matchLabels:
      name: golang-app
  template:
    metadata:
      labels:
        name: golang-app
    spec:
      containers:
      - name: golang-app
        image: 019496914213.dkr.ecr.eu-north-1.amazonaws.com/goland:1.0
        ports:
          - containerPort: 9000

服务:

kind: Service
apiVersion: v1
metadata:
  name: golang-service
spec:
  type: NodePort
  selector:
    app: golang-app
  ports:
    - protocol: TCP
      port: 9000
      targetPort: 9000

入口:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: app
  annotations:
    alb.ingress.kubernetes.io/scheme: internet-facing
    kubernetes.io/ingress.class: alb
  labels:
    app: app
spec:
  rules:
    - http:
        paths:
          - path: /api/v2
            pathType: ImplementationSpecific
            backend:
              service:
                name: golang-service
                port:
                  number: 9000



kubectl get service
golang-service    NodePort    172.20.44.34     <none>        9000:32184/TCP   106m

集群和节点的安全组由 terraform-aws-modules/eks/aws 模块创建。

我检查了几件事情:

kubectl port-forward golang-deployment-5894d8d6fc-ktmmb 9000:9000

工作!我可以在我的计算机中使用 localhost:9000 看到 golang 应用程序

kubectl exec curl -i --tty nslookup golang-app

Server:    172.20.0.10
Address 1: 172.20.0.10 kube-dns.kube-system.svc.cluster.local

Name:      golang-app
Address 1: 172.20.130.130 golang-app.default.svc.cluster.local

工作!

kubectl exec curl -i --tty curl golang-app:9000

curl: (7) Failed to connect to golang-app port 9000: Connection refused

不工作

有什么想法吗?

【问题讨论】:

    标签: kubernetes amazon-eks


    【解决方案1】:

    您应该调用服务而不是部署。

    golang-service 是 svc 名称而不是部署名称

    kubectl exec curl -i --tty curl golang-service:9000
    

    【讨论】:

    • 我试过了,没用。我也一样: curl: (7) 无法连接到 golang-service 端口 9000:连接被拒绝
    • 你想在内部卷曲吗?还是在外面使用 alb ?通过互联网使用 alb 端点?
    • 我正在从我的计算机上执行 curl。我有 kubectl 配置指向 aws 集群。
    • 知道了,所以就像您在 curl 容器中执行 exec 并从那里尝试访问服务一样吗?
    • 是的,curl 是一个 pod,所以我尝试使用 curl golang-service:9000 从一个 pod(curl) 访问另一个 (golang-app)
    猜你喜欢
    • 2019-09-15
    • 2021-03-04
    • 2019-06-28
    • 2020-11-02
    • 2020-06-14
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多