dns解析问题解决

This commit is contained in:
zhanggangyong
2026-02-03 12:25:40 +00:00
parent 749e97cbe2
commit 0ddf2681ec
15 changed files with 2610 additions and 51 deletions
+56 -7
View File
@@ -390,18 +390,33 @@ async def create_agent(request: CreateAgentRequest, db: Session = Depends(get_db
)
# 步骤3: 获取服务端口
service_port = k8s_manager.TEMPLATE_PORTS.get(request.template)
# OpenClaw 使用 18789 端口(沙箱镜像会自动启用)
if request.template == "openclaw":
service_port = 18789
else:
service_port = k8s_manager.TEMPLATE_PORTS.get(request.template)
# 步骤4: 创建 LoadBalancer Service(AKS 会自动分配外网 IP)
# 步骤4: 创建 Service(OpenClaw 已在 create_openclaw_deployment 中自动创建 Service 和 Ingress)
service_info = None
dns_info = None
if service_port:
# OpenClaw 使用 Ingress + HTTPS,不需要 LoadBalancer Service
if request.template == "openclaw":
logger.info("OpenClaw 使用 Ingress + HTTPS,跳过 LoadBalancer Service 创建")
# Service 和 Ingress 已在 create_openclaw_deployment 中自动创建
# 从 result 中获取访问信息
if "access_info" in result:
service_info = {
"name": f"{request.name}-service",
"type": "ClusterIP",
"note": "OpenClaw 使用 Ingress + HTTPS 访问"
}
elif service_port:
try:
import time
time.sleep(2) # 等待Pod启动
# 创建 LoadBalancer Service
# 创建 LoadBalancer Service(非 OpenClaw 模板)
service_info = temp_manager.create_service(
service_name=f"{request.name}-service",
namespace=agent_namespace,
@@ -465,11 +480,17 @@ async def create_agent(request: CreateAgentRequest, db: Session = Depends(get_db
"labels": pod.metadata.labels
}
# 添加 LoadBalancer Service 信息到响应
if service_info:
# 添加 Service 信息到响应
# OpenClaw 的访问信息已在 create_openclaw_deployment 中设置
if request.template == "openclaw":
# OpenClaw 使用 Ingress + HTTPS,访问信息已在 result 中
if "access_info" in result and result["access_info"].get("https_url"):
logger.info(f" - HTTPS 访问: {result['access_info']['https_url']}")
logger.info(f" - 注意: 使用自签名证书,浏览器会显示安全警告")
elif service_info:
result["service_info"] = service_info
# 构建访问信息
# 构建访问信息(非 OpenClaw 模板)
external_ip = service_info.get("external_ip")
if external_ip:
@@ -625,6 +646,34 @@ async def delete_agent(agent_name: str, db: Session = Depends(get_db)):
except Exception as e:
logger.warning(f"删除 DNS 记录失败(可忽略): {str(e)}")
# 检查是否是 OpenClaw 类型的 Agent
is_openclaw = False
if db_agent and db_agent.agent_framework:
# 从数据库记录判断
pass
# 通过命名空间中的资源判断是否为 OpenClaw
try:
computed_ns = f"agent-{agent_name}".lower().strip('-')[:63]
temp_manager = K8sManager(namespace=computed_ns, kubeconfig_path=KUBECONFIG_PATH)
# 尝试查找 OpenClaw 特有的资源
try:
temp_manager.v1.read_namespaced_config_map(name=f"{agent_name}-config", namespace=computed_ns)
is_openclaw = True
logger.info(f"检测到 OpenClaw Agent: {agent_name}")
except:
pass
except:
pass
# 如果是 OpenClaw,先清理其特有资源
if is_openclaw:
try:
logger.info(f"清理 OpenClaw 专用资源...")
temp_manager.delete_openclaw_deployment(agent_name)
except Exception as e:
logger.warning(f"清理 OpenClaw 资源失败(可忽略): {e}")
# 步骤2: 删除 Agent 的独立命名空间(会自动删除Pod、Service等所有资源)
result = k8s_manager.delete_agent_namespace(agent_name=agent_name)
# region agent log