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

部署在MicroK8s环境的Django应用无法在主机访问的问题排查

排查方案整理

一、kubectl exec x509证书错误排查

  • 执行microk8s inspect,查看输出里的证书相关告警,重点检查kube-apiserver、kubelet的证书是否过期或配置异常
  • 运行microk8s kubectl config view,核对当前context的server地址是否与MicroK8s集群实际API地址匹配,证书数据是否正常
  • 若证书存在问题,尝试重启整个MicroK8s集群:microk8s stop && microk8s start,或单独重启apiserver组件:microk8s kubectl rollout restart deployment/kube-apiserver -n kube-system
  • 检查Pod网络状态:microk8s kubectl describe pod app-577dc6d4f4-cjcdw,查看Events中是否有CNI相关错误,比如Pod无法与API server通信导致证书验证失败

二、NodePort服务无法访问排查

  • 确认服务配置:microk8s kubectl get service,查看服务的NodePort端口(通常在30000-32767区间)和ClusterIP是否正常分配
  • 检查服务与Pod的标签匹配:microk8s kubectl describe service <你的服务名称>,查看Endpoints部分是否有Pod的IP列表——如果为空,说明Deployment的labels与Service的selector不匹配,需核对两者的标签配置
  • 验证Pod内应用监听情况:若能解决exec问题则进入Pod查看,否则通过日志检查microk8s kubectl logs app-577dc6d4f4-cjcdw,确认Django是否监听0.0.0.0:<端口>,避免仅监听127.0.0.1导致外部无法访问
  • 排查防火墙规则:执行sudo iptables -L | grep <你的NodePort端口>,确认MicroK8s的iptables规则是否放行该端口;同时检查本地防火墙或云平台安全组,是否开放对应NodePort的入站流量
  • 进行集群内测试:临时启动busybox Pod访问服务的ClusterIP,microk8s kubectl run -it --rm busybox --image=busybox -- wget -O- <ClusterIP>:<应用端口>,若集群内能正常访问,说明问题出在外部流量转发;若集群内也无法访问,则是服务与Pod的关联或Pod内应用存在问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 16:27:18