【发布时间】:2020-09-06 18:22:06
【问题描述】:
我找不到任何类似的问题,通常这种类型的问题是选择器不正确或服务中的某些问题。几个小时以来我一直在努力解决这个问题,但找不到问题。
背景:
我正在使用 Azure Pipeline 构建解决方案,将其容器化并将其推送到 Azure Container Registry。该解决方案包含一个 .net 核心控制台应用程序,它只是未更改的模板(天气预报模板)。然后我使用 kubectl apply 创建部署和 LoadBalancer 服务(我没有使用管道发布到 AKS,而是 AKS 从 ACR 中提取)。
应用程序运行良好。日志显示它们启动并侦听正确的端口。该服务被分配了一个公共 IP。命中 IP 超时。
我可以在 Azure 中看到 LoadBalancer 和所有 PublicIPAddresses。它们似乎都配置正确。在仪表板中,我可以看到服务已映射到特定的 pod(因此选择器正在工作)。
同时:
我应用了hello-kubernetes 示例应用。这与我的设置基本相同并且工作正常。
我区分了服务和部署的清单(将我的与 hello-kubernetes 进行比较),除了 guid 和名称之外,它们是相同的。
我拆除了整个 Kubernetes 集群并创建了一个新集群。结果一样。
我删除了服务并重新创建了它,获得了一个新的公共 IP。结果一样。
http 和 https 我都试过了。
这是清单:
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: api
labels:
app: api
spec:
replicas: 1
selector:
matchLabels:
app: api
template:
metadata:
labels:
app: api
spec:
containers:
- name: api
image: someimage:1.0.52
ports:
- containerPort: 5001
- containerPort: 5000
---
apiVersion: v1
kind: Service
metadata:
name: api
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 5001
selector:
app: api
---
请告诉我这个清单明显有问题!
[更新] 我添加了一个中间件,当有请求进入时,它会输出一条控制台行。事实证明,请求正在进入应用程序并得到处理,但浏览器/邮递员仍然超时。
[已解决]
问题是默认的 .NetCore 应用程序有一个中间件将 http 重定向到 https,由于端口未绑定而失败。
【问题讨论】:
-
请考虑添加解决方案作为答案,而不是作为初始问题的编辑
标签: kubernetes .net-core azure-pipelines azure-aks azure-container-registry