暴露K8S服務我有我的AWS ECR(在後的底部描述)名爲hello節點的圖像。如果我在本地運行它並轉到localhost:8080,我會看到「hello world」。無法在AWS訪問互聯網
在我的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
我想在線訪問我打招呼節點的服務(信息編輯)。我想在瀏覽器中訪問某個網址或IP地址,並查看「hello world」。
我試圖去上面列出的IP,負載平衡器入口和端點,但這些網站沒有在瀏覽器中加載。 我怎樣才能在互聯網上訪問此服務?如果需要,我會提供更多信息。
注意:如果我這樣做kubectl port-forward hello-node-621867969-ztxnr 8080
那麼我可以訪問它在localhost:我的機器上8080,這樣的東西是至少工作。
你好節點服務:
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
命令。