如何使用Azure容器服务将{Kubernetes pod'公开到公共Internet

时间:2018-02-02 12:23:40

标签: docker kubernetes containers azure-container-service azure-container-registry

我正在尝试使用Azure容器服务和Azure容器注册表在Kubernetes中运行.NET Core 2 Docker映像。

我已经成功创建了一个pod&运行得很好。后来我使用命令kubectl expose deployment depl-name --type=LoadBalancer --port=8086 --target-port=8086&部署了一项服务。我使用命令kubectl get services检查了服务详细信息,但Azure公开的外部IP根本不起作用。我试图ping该IP,但它说请求超时。我可以看到,应用程序/端口一切都已启动&好的。

请检查以下按钮:

enter image description here

enter image description here

enter image description here

enter image description here

我不理解为什么即使应用程序在kubernetes集群上运行且没有错误,Azure容器服务公开的公共IP也不起作用。如果出现任何问题,请告诉我。

谢谢,

2 个答案:

答案 0 :(得分:0)

您使用的命令与" kubectl get services"的输出不匹配。您使用--port = 8080表示公开公开端口8080但get服务调用显示端口80被暴露。他们不匹配,所以这没有意义。您还没有告诉kubectl要映射到的容器上的哪个端口,不确定默认值是什么。试试这个:

kubectl expose deployment depl-name --type=LoadBalancer --port=80 --target-port=80

当然替换场景的正确端口号。如果仍然无法正常工作,请进入Azure门户并查看您的群集。您应该看到一个新的Load Balancer(名称中没有k8s-master的那个)。打开它并检查负载平衡规则。

答案 1 :(得分:0)

您可以验证集群中有哪些部署

kubectl get deployments --all-namespaces

您应该会得到一个这样的列表

NAMESPACE     NAME                      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
default       my-deployment             1         1         1            1           28m

然后,公开所需的部署

kubectl expose deployment my-deployment --type=LoadBalancer --port=8086 --target-port=80 --name=my-service

您现在应该可以通过浏览到13.65.243.33:8086来访问窗格。如果它不起作用,请检查您的容器是否真的响应端口80上的传入请求。