无法在互联网上访问AWS上的公开k8s服务

时间:2017-10-10 22:02:01

标签: amazon-web-services docker kubernetes kubectl

我的AWS ECR上有一个名为hello-node的图像(在帖子底部描述)。如果我在本地运行并转到localhost:8080,我会看到" hello world。"

在我在AWS上的节点上运行:

kubectl run hello-node --image=xxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/hello-node:v1 --port=8080(帐号已被屏蔽)

然后:

kubectl expose deployment hello-node --type="LoadBalancer"

如果我跑:

kubectl describe service hello-node

我看到了(信息编辑)

Name:           hello-node
Namespace:      default
Labels:         run=hello-node
Annotations:        <none>
Selector:       run=hello-node
Type:           LoadBalancer
IP:         xx.xx.xx.xx
LoadBalancer Ingress:   xxxxxxxxx-xxxxxx.us-east-1.elb.amazonaws.com
Port:           <unset> 8080/TCP
NodePort:       <unset> 32059/TCP
Endpoints:      xx.xx.xx.xx:8080
Session Affinity:   None

我正在尝试在线访问我的hello-node服务。我想在我的浏览器中找到一些网址或IP地址,并查看“你好世界”。&#39;

我已尝试访问上面列出的IP,LoadBalancer Ingress和Endpoints,但这些网站未在我的浏览器中加载。 如何在互联网上访问此服务? 如果需要,我会提供更多信息。

注意:如果我kubectl port-forward hello-node-621867969-ztxnr 8080,那么我可以在我的机器上的localhost:8080上访问它,所以至少有一些工作。

hello-node服务:

Source here under 'Create an app, package it in a container and publish to a Docker registry' section

server.js:

var http = require('http');
var handleRequest = function(request, response) {
  response.writeHead(200);
  response.end("Hello World!");
}
var www = http.createServer(handleRequest);
www.listen(8080);

Dockerfile:

FROM node:6.9.2
EXPOSE 8080
COPY server.js .
CMD node server.js

运行docker build -t hello-node:v1 .

运行docker tag hello-node:v1 AWS_ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com/hello-node:v1

运行docker push AWS_ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com/hello-node:v1(放入我的帐户和区域信息,我确认它已上传到我的ECR)

然后我运行了我在本文开头列出的两个kubectl命令。

1 个答案:

答案 0 :(得分:0)

我可以通过<loadbalanceringress>:<port>访问它。老实说,我不记得我是否曾经尝试过(我试过了很多地址:端口组合。