0

我正在尝试使用 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 也不起作用。请让我知道是否有任何问题。

谢谢,

4

2 回答 2

0

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

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

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

于 2018-02-02T17:22:04.007 回答
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 来访问 pod。如果它不起作用,请检查您的容器是否真的对端口 80 上的传入请求做出反应。

于 2018-10-20T11:28:37.610 回答