Minikube Ingress配置异常:ConfigMap未找到及服务无活跃端点问题
先梳理下你的环境信息:
- minikube版本:v0.25.2
- 操作系统:macOS 10.12.6
- 驱动:virtualbox
- 使用的ISO:minikube-v0.25.1.iso
你遇到的是nginx-ingress-controller里的两个日志错误,咱们逐个分析解决:
1. service default/messy-chimp-emauser does not have any active endpoints
这个错误的核心是:你的Ingress关联的messy-chimp-emauser服务找不到任何可用的Pod端点,本质是服务和Pod的关联逻辑出了问题,按以下步骤排查:
检查Pod的运行状态:
执行命令查看default命名空间下的Pod:kubectl get pods -n default找到和
messy-chimp-emauser服务对应的Pod,确认它的状态是不是Running,有没有重启次数过多或者处于CrashLoopBackOff状态。如果Pod没正常启动,先解决Pod的启动问题(比如查看Pod日志:kubectl logs <pod-name>)。验证服务的Selector和Pod的Labels是否匹配:
服务是通过Selector字段匹配Pod的,先查看服务的Selector:kubectl describe service messy-chimp-emauser -n default找到
Selector字段的内容(比如可能是app: messy-chimp-emauser)。然后查看对应Pod的Labels:kubectl describe pod <pod-name> -n default确认Pod的Labels里包含服务Selector指定的键值对,不匹配的话服务就找不到Pod。
检查Pod的Readiness探针:
如果Pod配置了Readiness探针,只有探针成功的Pod才会被加入服务的Endpoints。查看Pod的描述信息,看Readiness Gates或者Events部分有没有探针失败的记录,调整探针配置或者修复Pod的健康状态。确认节点状态正常:
执行kubectl get nodes查看minikube节点状态是不是Ready,如果节点有污点或者未就绪,Pod可能无法正常运行或被服务识别。
2. unexpected error reading configmap kube-system/tcp-services: configmap kube-system/tcp-services was not found
这个错误是因为nginx-ingress-controller默认会尝试读取kube-system命名空间下的tcp-services ConfigMap,用来配置TCP端口转发,但你的minikube环境里默认没有创建这个ConfigMap。解决方法很简单:
- 手动创建空的
tcp-servicesConfigMap:
创建一个名为tcp-services.yaml的文件,内容如下:
然后执行命令创建:apiVersion: v1 kind: ConfigMap metadata: name: tcp-services namespace: kube-system data:
这个空的ConfigMap就能消除日志里的错误,如果你之后需要配置TCP服务转发,再往kubectl apply -f tcp-services.yamldata字段里添加对应配置即可。
内容的提问来源于stack exchange,提问作者Asrar Mavli

