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

Helm显示Drupal Pod已运行,但Docker无容器且网站无法访问

问题排查与解决方案

一、为什么宿主机docker ps看不到容器?

Minikube是独立的Kubernetes运行环境,它会创建专属的虚拟机(或用Docker容器作为K8s节点),所有Pod内的容器都运行在这个Minikube节点内部,而非宿主机的Docker环境中。要查看这些容器,需要进入Minikube节点:

  • 执行命令进入Minikube节点:minikube ssh
  • 在节点内部执行:docker ps,就能看到mysite-drupal和mysite-mariadb相关的容器了。

二、网站无法访问的排查步骤

1. 确认服务暴露方式

先查看Drupal服务的类型和端口:

kubectl get svc
  • 如果服务类型是ClusterIP:默认只能在K8s集群内部访问,需要通过端口转发暴露到宿主机:
    • 方式一:用Minikube自带命令自动转发并打开访问地址:
      minikube service mysite-drupal
      
    • 方式二:手动端口转发:
      kubectl port-forward svc/mysite-drupal 8080:80
      
      然后访问http://localhost:8080/测试。
  • 如果服务类型是NodePort:先获取Minikube节点IP:
    minikube ip
    
    然后访问http://<minikube-ip>:<node-port>/(node-port是kubectl get svc结果里mysite-drupal的端口列第二个数值)。

2. 检查本地DNS解析

书籍中提到的http://drupal.local/需要手动配置本地DNS解析:

  • 执行minikube ip获取Minikube节点IP
  • 编辑本地hosts文件:
    • Linux/macOS:sudo nano /etc/hosts
    • Windows:以管理员身份编辑C:\Windows\System32\drivers\etc\hosts
  • 添加一行:<minikube-ip> drupal.local,保存后再访问该域名。

3. 验证服务与Pod的连通性

检查服务是否正确关联到Pod:

kubectl describe svc mysite-drupal

查看Endpoints字段,确认里面存在Drupal Pod的IP和对应端口(默认80),如果为空,说明服务和Pod的标签匹配有问题,需要检查Pod的标签和服务的选择器是否一致。

4. 确认网络连通性

如果以上步骤都没问题,可尝试在Minikube节点内部测试访问Drupal Pod:

  • 进入Minikube节点:minikube ssh
  • 执行curl <drupal-pod-ip>:80(Pod IP可通过kubectl get pods -o wide获取),如果能返回页面内容,说明Pod内部服务正常,问题出在宿主机到Minikube的网络转发或DNS配置上。

内容的提问来源于stack exchange,提问作者Marc Le Bihan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:45:51