【发布时间】:2020-02-13 00:59:38
【问题描述】:
我设法在 kubernetes 集群上部署了一个 python 应用程序。 python 应用程序映像部署在 AWS ECR(弹性容器注册表)。
我的部署是:
(NAME)charting-rest-server
(READY)1/1
(UP-TO-DATE )1
(可用)1
(AGE)33m
(CONTAINERS)charting-rest-server
(图像) *****.dkr.ecr.eu-west-2.amazonaws.com/charting-rest-server:latest
(SELECTOR )app=图表休息服务器
我的服务是:
(NAME)charting-rest-server-service
(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 时,我应该能够从外部访问负载均衡器,它会将我路由到我的 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
我已经尝试了 cmets 的建议,使用入口实例,但我最终只花费了大量时间试图了解它们是如何工作的,“我做错了什么吗?/等等。
我将把我使用的 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
我被这个问题困扰了很长时间,所以我希望能得到一些帮助。
【问题讨论】:
-
您是否有一个入口对象来为您的应用程序设置 http 路径路由?
kubectl get ingress -
请为您的 pod、服务和部署发布
yaml文件。如果你也这样做的话。 -
更新问题
标签: kubernetes kubectl kubernetes-service amazon-ecr