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
相关产品推荐
相关产品推荐

