diff --git a/apps/api/src/services/executor.py b/apps/api/src/services/executor.py index 83459a21..982df79a 100644 --- a/apps/api/src/services/executor.py +++ b/apps/api/src/services/executor.py @@ -122,7 +122,15 @@ class ActionExecutor: try: load_incluster_config() config_source = "in-cluster" - logger.info("k8s_using_incluster_config") + # 2026-04-09 Claude Sonnet 4.6: K3s ClusterIP 10.43.0.1 在 Pod 內不可達 + # K8S_API_SERVER_URL 可覆蓋 host(e.g. https://192.168.0.120:6443) + import os + from kubernetes_asyncio.client import configuration as k8s_conf + override_url = os.environ.get("K8S_API_SERVER_URL", "").strip() + if override_url: + k8s_conf.Configuration.get_default_copy().host = override_url + config_source = f"in-cluster+override({override_url})" + logger.info("k8s_using_incluster_config", override=bool(override_url)) except ConfigException: # 不在 K8s 內部,嘗試 kubeconfig 檔案 kubeconfig_path = Path(settings.KUBECONFIG_PATH) diff --git a/k8s/awoooi-prod/04-configmap.yaml b/k8s/awoooi-prod/04-configmap.yaml index 8c1a8ab1..2153728e 100644 --- a/k8s/awoooi-prod/04-configmap.yaml +++ b/k8s/awoooi-prod/04-configmap.yaml @@ -97,3 +97,8 @@ data: ANSIBLE_CONTROL_NODE_HOST: "192.168.0.188" ANSIBLE_CONTROL_NODE_USER: "ollama" ANSIBLE_PLAYBOOKS_PATH: "~/openclaw-v5/ansible/playbooks" + + # 2026-04-09 Claude Sonnet 4.6: K3s ClusterIP 10.43.0.1 在 Pod 內 Connection Refused + # in-cluster config 讀到 10.43.0.1,但 iptables/kube-proxy 沒把流量導到實際 API server + # 用此 URL 覆蓋 host,讓 executor 直接打 K3s API server node IP + K8S_API_SERVER_URL: "https://192.168.0.120:6443"