我正在尝试使用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,但它说请求超时。我可以看到,应用程序/端口一切都已启动&好的。
请检查以下按钮:
我不理解为什么即使应用程序在kubernetes集群上运行且没有错误,Azure容器服务公开的公共IP也不起作用。如果出现任何问题,请告诉我。
谢谢,
答案 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上的传入请求。