如何在MicroK8s中通过子域名访问部署的应用容器?
解决MicroK8s子域名访问应用的问题
你的核心问题是子域名无法解析——能正常访问主域名路径,但子域名ping不通、浏览器提示找不到IP。以下是分步解决方案:
1. 优先解决DNS解析问题
子域名jupyter.microk8s.hostname.internal需要指向和主域名microk8s.hostname.internal相同的集群Ingress入口IP。
测试环境(本地hosts文件)
在你用来访问集群的客户端机器上修改hosts文件:
- Linux/macOS:编辑
/etc/hosts - Windows:编辑
C:\Windows\System32\drivers\etc\hosts
添加一行:
[集群Ingress入口IP] jupyter.microk8s.hostname.internal
获取集群Ingress入口IP的命令:
# 查看目标Ingress的绑定地址 microk8s kubectl get ingress minimal-ingress -n jupyter-notebook # 或查看Ingress控制器的Service信息 microk8s kubectl get svc nginx-ingress-microk8s-controller -n ingress
单节点集群的话,节点IP就是Ingress的入口IP。
生产/正式环境
在你的DNS服务器上添加一条A记录,将jupyter.microk8s.hostname.internal指向集群Ingress的公网/内网IP。
2. 验证Ingress配置与状态
你的Ingress配置本身无问题,但需确认是否正常生效:
- 检查Ingress资源状态:
microk8s kubectl get ingress minimal-ingress -n jupyter-notebook
确保ADDRESS字段显示正确IP,且与主域名解析IP一致。如果ADDRESS为空,排查Ingress控制器:
# 确认Ingress控制器Pod正常运行 microk8s kubectl get pods -n ingress # 检查IngressClass是否存在(MicroK8s ingress插件默认创建public类) microk8s kubectl get ingressclasses
你的注解kubernetes.io/ingress.class: public与默认配置匹配,无需修改。
- 查看Ingress控制器日志:
若DNS解析正常但仍无法访问,查看Nginx日志排查路由问题:
microk8s kubectl logs -n ingress -l app.kubernetes.io/name=nginx-ingress
检查是否有请求记录或报错信息。
3. 确认Service与Pod关联正常
你的Service已通过端口转发验证可用,可再确认绑定状态:
# 查看Service是否关联到目标Pod microk8s kubectl get endpoints jupyter-service -n jupyter-notebook
确保ENDPOINTS字段显示Pod的IP和端口,说明Service与Pod绑定正常。
内容的提问来源于stack exchange,提问作者Viktor Eriksson
相关产品推荐
相关产品推荐

