无法在Kubernetes上访问LoadBalancer服务

问题描述 投票:0回答:1

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

NAME)租赁服务器(READY)1/1(UP-TO-DATE)1(AVAILABLE)1(AGE )33分钟(CONTAINERS)租赁服务器(IMAGES)*****。dkr.ecr.eu-west-2.amazonaws.com/charting-rest-server:latest(< [SELECTOR)app =图表休息服务器

我的服务是:

NAME

)租赁服务器服务(TYPE)LoadBalancer(CLUSTER-IP)10.100.4.207(EXTERNAL-IP)***** **。eu-west-2.elb.amazonaws.com(PORT(s))8765:32735 / TCP(AGE)124m(SELECTOR)app = chart-rest-服务器据此AWS guide,当我执行curl *****.us-west-2.elb.amazonaws.com:80时,我应该可以从外部访问Load Balancer,该负载均衡器会将我路由到吊舱的ip。但是我得到的只是

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

如果我想访问我的pod并发送一些请求,请考虑一下,我应该有一个像111.111.111.111这样的external-ip(示例)。

编辑

部署的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

我在这个问题上停留了很长时间,所以我将不胜感激。
kubernetes kubectl kubernetes-service amazon-ecr
1个回答
1
投票
您已经创建了类型为ServiceLoadBalancer,但是看起来您配置的端口不正确。

您的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,您可以阅读有关ingressALB Ingress Controller on Amazon EKS的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.