无法访问 Kubernetes 上的 LoadBalancer 服务



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

(名称(charting-rest-server (
READY(1/1 (
UP-TO-DATE(1
(AVAILABLE(1 (
AGE(33m (CONTAINERS(charting-rest-server (

IMAGES( *****.dkr.ecr.eu-west-2.amazonaws.com/charting-rest-server:latest
(SELECTOR(app=charting-rest-server

我的服务是:

(名称(charting-rest-server-service (
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=charting-rest-server

根据这个AWS指南,当我这样做时curl *****.us-west-2.elb.amazonaws.com:80我应该能够从外部访问负载均衡器,它将把我路由到我的pod的ip。
但我得到的只是

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



想想看,如果我想访问我的 pod 并发送一些请求,我应该有一个像111.111.111.111这样的外部 ip(obv 一个例子(。


编辑


部署的 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文件放在这里,但它没有改变,因为我的地址字段为空 - 没有要使用的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

我被困在这个问题上很长时间了,所以我将不胜感激。

您已经创建了一个类型为LoadBalancerService,但看起来您配置的端口不正确。

您的Deployment是用containerPort: 5000创建的,您的Service指向targetPort: 9376。这些需要匹配要暴露Deployment

如果您很难为Service编写yaml,您可以使用以下 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

我还推荐本指南教程:在您的 AWS 快速入门 Kubernetes 集群上公开服务。

如果您需要对 http 规则进行更多控制,请考虑使用ingress,您可以阅读有关 Amazon EKS 上的 ALB 入口控制器的更多信息,也可以阅读有关在 Amazon EKS 上使用网络负载均衡器和 NGINX 入口控制器的更多信息。

相关内容

  • 没有找到相关文章

最新更新