无法在Kubernetes上访问LoadBalancer服务

我设法在kubernetes集群上部署了一个python应用程序。 python应用程序映像已部署在AWS ECR(弹性容器注册表)上。
我的部署是:

NAME )租赁服务器服务器
就绪)1/1
最新日期)1
可用)1
AGE )33m
容器)图表-其余服务器
图像)*****。dkr.ecr.eu-west-2.amazonaws.com/charting-rest-server:latest
( SELECTOR )app = charting-rest-server

我的服务是:

NAME )租赁服务器服务
TYPE )LoadBalancer
CLUSTER-IP )10.100.4.207
EXTERNAL-IP )*******。eu-west-2.elb.amazonaws.com
端口))8765:32735 / TCP
AGE )124m
SELECTOR )app = charting-rest-server

根据此AWS guide,当我执行curl *****.us-west-2.elb.amazonaws.com:80时,我应该可以从外部访问Load Balancer,该负载均衡器会将我路由到吊舱的ip。
但是我得到的只是

(6)无法解析主机:*******。eu-west-2.elb.amazonaws.com



如果我想访问我的pod并发送一些请求,请考虑一下,我应该有一个外部IP,例如111.111.111.111(例如)。


编辑


部署的Yaml为:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: charting-rest-server
spec:
  selector:
    matchLabels:
      app: charting-rest-server
  replicas: 1
  template:
    metadata:
      labels:
        app: charting-rest-server
    spec:
      containers:
      - name: charting-rest-server
        image: *****.eu-west-2.amazonaws.com/charting-rest-server:latest
        ports: 
          - containerPort: 5000


服务的Yaml:

apiVersion: v1
kind: Service
metadata:
  name:  charting-rest-server-service
spec:
  type: LoadBalancer
  selector:
    app: charting-rest-server
  ports:
    - protocol: TCP
      port: 80
      targetPort: 5000

我已经使用入口实例尝试了注释中的建议,但最终我只花了很多时间试图理解它们的工作原理,“我做错了吗?” / etc。

我将把我使用的yaml文件放在这里,但是由于我的ADDRESS字段为空-没有IP可使用,因此它没有变化。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: charting-rest-server-ingress
spec:
  rules:
  - host: charting-rest-server-service
    http:
      paths:
      - path:/
        backend:
          serviceName: charting-rest-server-service
          servicePort: 80

我在这个问题上停留了很长时间,所以我希望获得一些帮助。

whui0919 回答:无法在Kubernetes上访问LoadBalancer服务

您已经创建了Service类型的LoadBalancer,但是您似乎配置了错误的端口。

您的Deployment是用containerPort: 5000创建的,而您的Service指向targetPort: 9376。那些需要匹配才能公开Deployment

如果您很难为yaml编写Service,则可以使用以下kubectl命令公开Deployment

kubectl expose --namespace=tick deployment charting-rest-server --type=LoadBalancer --port=8765 --target-port=5000 --name=charting-rest-server-service

修复这些端口后,您将能够使用其主机名从外部访问该服务:

status:
  loadBalancer:
    ingress:
    - hostname: aba02b223436111ea85ea06a051f04d8-1294697222.eu-west-2.elb.amazonaws.com

我还推荐本指南Tutorial: Expose Services on your AWS Quick Start Kubernetes cluster

如果您需要对http规则进行更多控制,请考虑使用ingress,您可以阅读有关ALB Ingress Controller on Amazon EKS以及Using a Network Load Balancer with the NGINX Ingress Controller on Amazon EKS的更多信息。

本文链接:https://www.f2er.com/2683341.html

大家都在问