134 lines
3.5 KiB
Markdown
134 lines
3.5 KiB
Markdown
# OpenClaw 网络访问问题详细检查报告
|
|
|
|
## 检查时间
|
|
2026-02-03
|
|
|
|
## 检查结果
|
|
|
|
### ✅ 已确认正常的部分
|
|
|
|
1. **NSG 规则已配置**
|
|
- 规则名称: `k8s-azure-lb_allow_IPv4_556f7044ec033071ec0dfcf7cd85bc93`
|
|
- 优先级: 501
|
|
- 访问: Allow
|
|
- 协议: Tcp
|
|
- 源地址: Internet
|
|
- 目标端口: 80, 443
|
|
- 目标地址: 40.65.173.54 ✅
|
|
|
|
2. **LoadBalancer 配置正常**
|
|
- Public IP: `40.65.173.54`
|
|
- SKU: Standard
|
|
- 状态: Succeeded
|
|
- Zones: 1, 2, 3
|
|
|
|
3. **Ingress Controller 运行正常**
|
|
- Pods: 2 个都在运行
|
|
- 监听端口: 80, 443 ✅
|
|
- Service Endpoints: 正常
|
|
|
|
4. **Kubernetes 资源正常**
|
|
- Pod: Running (2/2)
|
|
- Service: Endpoints 正确
|
|
- Ingress: 配置正确,已同步
|
|
|
|
### ❌ 问题现象
|
|
|
|
从外部网络访问 `40.65.173.54:80` 和 `443` 端口超时
|
|
|
|
### 可能的原因
|
|
|
|
虽然 NSG 规则已配置,但可能存在以下情况:
|
|
|
|
1. **规则优先级问题**
|
|
- 可能有更高优先级的 Deny 规则覆盖了 Allow 规则
|
|
- 需要检查所有 Inbound 规则的优先级顺序
|
|
|
|
2. **网络路由问题**
|
|
- 可能有路由表规则影响流量
|
|
- 需要检查 VNet 的路由配置
|
|
|
|
3. **LoadBalancer 健康检查问题**
|
|
- LoadBalancer 可能认为后端不健康
|
|
- 需要检查 LoadBalancer 的健康检查配置
|
|
|
|
4. **Azure 平台层面的限制**
|
|
- 可能有订阅级别的网络策略
|
|
- 可能有其他安全策略影响
|
|
|
|
## 建议的排查步骤
|
|
|
|
### 步骤 1: 检查所有 NSG 规则的优先级
|
|
|
|
```bash
|
|
az network nsg rule list \
|
|
--nsg-name aks-agentpool-50066007-nsg \
|
|
--resource-group mc_taiji-ai-pda_taiji-ai-pda_southeastasia \
|
|
--query "[?direction=='Inbound'].{name:name, priority:priority, access:access, destinationPortRanges:destinationPortRanges}" \
|
|
-o table
|
|
```
|
|
|
|
**重要**: 检查是否有优先级 < 501 的 Deny 规则
|
|
|
|
### 步骤 2: 检查 LoadBalancer 健康检查
|
|
|
|
在 Azure Portal 中:
|
|
1. 找到 LoadBalancer: `kubernetes`
|
|
2. 检查健康探测(Health Probes)状态
|
|
3. 检查后端池(Backend Pools)中的实例状态
|
|
|
|
### 步骤 3: 检查 VNet 路由表
|
|
|
|
```bash
|
|
az network route-table list --query "[].{name:name, resourceGroup:resourceGroup}" -o table
|
|
```
|
|
|
|
### 步骤 4: 从 Azure 内部测试
|
|
|
|
尝试从 Azure 内部的另一个资源(如另一个 VM 或 Container Instance)测试访问
|
|
|
|
### 步骤 5: 检查 Azure 订阅的网络限制
|
|
|
|
在 Azure Portal 中检查:
|
|
- 订阅的网络策略
|
|
- 资源组的网络策略
|
|
- 是否有 Azure Policy 限制网络访问
|
|
|
|
## 临时解决方案
|
|
|
|
如果急需访问,可以考虑:
|
|
|
|
1. **使用 NodePort 直接访问**
|
|
```bash
|
|
# 获取 NodePort
|
|
kubectl get svc -n ingress-nginx ingress-nginx-controller
|
|
# 然后通过节点的公网 IP + NodePort 访问
|
|
```
|
|
|
|
2. **使用 kubectl port-forward**
|
|
```bash
|
|
kubectl port-forward -n ingress-nginx svc/ingress-nginx-controller 8080:80
|
|
# 然后访问 http://localhost:8080
|
|
```
|
|
|
|
3. **检查是否有其他 LoadBalancer**
|
|
- 可能需要在 Azure Portal 中检查是否有多个 LoadBalancer
|
|
- 确认使用的是正确的 LoadBalancer
|
|
|
|
## 下一步行动
|
|
|
|
1. ✅ 已确认 NSG 规则存在
|
|
2. ⏳ 需要检查规则优先级顺序
|
|
3. ⏳ 需要检查 LoadBalancer 健康检查状态
|
|
4. ⏳ 需要从 Azure 内部测试访问
|
|
5. ⏳ 需要检查是否有其他网络限制
|
|
|
|
## 联系信息
|
|
|
|
如果问题持续,建议:
|
|
1. 在 Azure Portal 中打开支持请求
|
|
2. 提供 LoadBalancer 和 NSG 的详细信息
|
|
3. 说明已配置的 NSG 规则但仍然无法访问
|
|
|
|
|