You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

K8s集群中Moon2搭配Selenium无法启动浏览器Pod问题求助

Kubernetes集群中Moon2部署后浏览器Pod始终Pending的排查与解决

问题概述

在Ubuntu虚拟机的Kubernetes集群部署Moon2后,以Selenium远程服务器方式连接Chrome时出现阻塞,Chrome Pod始终处于Pending状态,Moon Pod日志显示如下错误:

2022/12/16 23:39:46 moon-f54d9dcf8-pctxm: moon: firefox-106-0-0-2-5a3fb0db-51da-45e4-9fd3-03bebb03ac7c: creating config map
2022/12/16 23:39:46 moon-f54d9dcf8-pctxm: moon: firefox-106-0-0-2-5a3fb0db-51da-45e4-9fd3-03bebb03ac7c: config map created
2022/12/16 23:39:46 moon-f54d9dcf8-pctxm: moon: firefox-106-0-0-2-5a3fb0db-51da-45e4-9fd3-03bebb03ac7c: creating pod
2022/12/16 23:39:46 moon-f54d9dcf8-pctxm: moon: firefox-106-0-0-2-5a3fb0db-51da-45e4-9fd3-03bebb03ac7c: pod created
2022/12/16 23:39:46 moon-f54d9dcf8-pctxm: moon: firefox-106-0-0-2-5a3fb0db-51da-45e4-9fd3-03bebb03ac7c: waiting pod
W1216 23:44:46.574953       1 reflector.go:442] pkg/mod/k8s.io/client-go@v0.23.3/tools/cache/reflector.go:167: watch of *v1.Pod ended with: an error on the server ("unable to decode an event from the watch stream: context canceled") has prevented the request from succeeding
2022/12/16 23:44:46 moon-f54d9dcf8-pctxm: moon: firefox-106-0-0-2-5a3fb0db-51da-45e4-9fd3-03bebb03ac7c: client disconnected while waited for resources
2022/12/16 23:44:46 moon-f54d9dcf8-pctxm: moon: firefox-106-0-0-2-5a3fb0db-51da-45e4-9fd3-03bebb03ac7c: deleting pod
2022/12/16 23:44:46 moon-f54d9dcf8-pctxm: moon: firefox-106-0-0-2-5a3fb0db-51da-45e4-9fd3-03bebb03ac7c: pod deleted
2022/12/16 23:44:46 moon-f54d9dcf8-pctxm: moon: firefox-106-0-0-2-5a3fb0db-51da-45e4-9fd3-03bebb03ac7c: deleting config map
2

已执行操作

  • 在Ubuntu虚拟机上搭建Kubernetes集群
  • 部署Moon2服务,相关Kubernetes资源信息如下:
~$kubectl get pods -n moon

NAME                   READY   STATUS    RESTARTS        AGE
moon-f54d9dcf8-pctxm   3/3     Running   7 (4d14h ago)   4d14h
moon-f54d9dcf8-v6v58   3/3     Running   7 (4d14h ago)   4d14h
~$kubectl get svc newmoon -n moon
NAME      TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                         AGE
newmoon   LoadBalancer   10.233.58.212   10.6.152.56   4444:30898/TCP,8080:31836/TCP   2d23h
~$ kubectl get browsersets -n moon -o yaml
apiVersion: v1
items:
- apiVersion: moon.aerokube.com/v1
  kind: BrowserSet
  metadata:
    annotations:
      meta.helm.sh/release-name: moon
      meta.helm.sh/release-namespace: moon
    creationTimestamp: "2022-12-15T05:29:22Z"
    generation: 1
    labels:
      app.kubernetes.io/managed-by: Helm
    name: default
    namespace: moon
    resourceVersion: "27996"
    uid: b072a650-5ab0-4add-a6b1-9d73de8a09ce
  spec:
    cypress:
      chrome:
        repository: quay.io/browsers/cypress-chrome
      chromium:
        repository: quay.io/browsers/cypress-chromium
      edge:
        repository: quay.io/browsers/cypress-edge
      electron:
        repository: quay.io/browsers/cypress-electron
      firefox:
        repository: quay.io/browsers/cypress-firefox
    devtools:
      chrome:
        repository: quay.io/browser/devtools-google-chrome-stable
    playwright:
      chrome:
        repository: quay.io/browser/playwright-chrome
      chromium:
        repository: quay.io/browser/playwright-chromium
      firefox:
        repository: quay.io/browser/playwright-firefox
      webkit:
        repository: quay.io/browser/playwright-webkit
    selenium:
      MicrosoftEdge:
        default: 106.0.1370.42-2
        repository: quay.io/browser/microsoft-edge-stable
      chrome:
        default: 106.0.5249.119-2
        repository: quay.io/browser/google-chrome-stable
      firefox:
        default: 106.0.0-2
        repository: quay.io/browser/firefox-mozilla-build
      opera:
        default: 91.0.4516.65-3
        repository: quay.io/browser/opera-stable
      safari:
        default: 15.0-0
        repository: quay.io/browser/safari
kind: List
metadata:
  resourceVersion: ""
~$

排查与解决步骤

1. 定位Pod调度失败原因

执行命令查看Pending状态浏览器Pod的详细事件:

kubectl describe pod <browser-pod-name> -n moon

重点查看Events字段,常见故障点包括:

  • 节点CPU/内存资源不足
  • 浏览器镜像拉取失败(仓库不可访问、缺少认证)
  • 存储卷/存储类配置缺失
  • 节点选择器、亲和性规则不匹配

2. 验证节点资源可用性

检查集群节点的资源分配情况:

kubectl describe nodes

查看Allocated resources部分,确认是否有足够资源分配给浏览器Pod。若资源不足,可扩容节点或调整Moon2 Pod的资源请求/限制参数。

3. 测试镜像拉取可行性

手动在节点上测试浏览器镜像拉取:

docker pull quay.io/browser/google-chrome-stable:106.0.5249.119-2

若拉取失败,需确认节点网络可访问quay.io;若镜像需要认证,在moon命名空间创建ImagePullSecret并关联到Moon的ServiceAccount。

4. 延长Pod等待超时时间

日志显示客户端等待5分钟后断开连接,可通过Helm调整Moon2的超时配置:

  • 编辑values.yaml文件,添加或修改参数:
waitTimeout: 10m
  • 重新部署Moon2:
helm upgrade moon aerokube/moon -n moon -f values.yaml

5. 检查API Server连通性

日志中的context canceled错误可能是Moon Pod与K8s API Server连接不稳定导致:

  • 在Moon Pod内测试API Server连通性:
kubectl exec -it moon-f54d9dcf8-pctxm -n moon -- ping <api-server-ip>
  • 查看API Server日志,排查是否存在请求超时、限流等情况。

内容的提问来源于stack exchange,提问作者Lalitha Padubidri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 15:10:39