Minikube中Kubernetes NodePort无法从外部访问求助
Minikube NodePort服务无法通过宿主机IP访问问题
现有配置
Service配置
spec: selector: name: some-pod type: NodePort ports: - port: 8200 targetPort: 8200 nodePort: 30082 externalIPs: - 192.168.183.128
Deployment的Pod模板配置(已修正yaml缩进错误)
template: metadata: name: some-pod labels: name: some-pod spec: containers: - name: container image: someimage imagePullPolicy: IfNotPresent securityContext: capabilities: add: ["CHOWN", "IPC_LOCK"] terminationMessagePath: "/tmp/pod-log" ports: - containerPort: 8200
测试情况
- 执行
minikube service some-service --url返回Minikube容器IP:
[root@kind vault]# minikube service some-service --url http://192.168.49.2:30082
该IP对应Minikube容器的br-6981f04e576e接口,宿主机节点ens160接口IP为192.168.183.128。
- 宿主机与Minikube容器端口连通性正常:
[root@kind vault]# nc -zvw10 192.168.49.2 30082 Ncat: Version 7.92 ( https://nmap.org/ncat ) Ncat: Connected to 192.168.49.2:30082. Ncat: 0 bytes sent, 0 bytes received in 0.02 seconds.
已尝试的无效操作
- 在Service中配置
externalIPs - 使用
docker commit等方式试图映射Minikube容器端口到宿主机 - 已在宿主机开放30082端口并验证连通性
解决方法
方法1:端口转发到宿主机
直接通过kubectl将Service端口转发到宿主机所有网卡:
kubectl port-forward service/some-service 30082:8200 --address 0.0.0.0
或者使用Minikube自带的转发:
minikube service some-service --url --listen=0.0.0.0:30082
方法2:启动Minikube时指定端口映射
如果Minikube尚未启动,可直接指定端口映射启动:
minikube start --driver=docker --ports=30082:30082
若已启动,先删除再重新启动:
minikube delete minikube start --driver=docker --ports=30082:30082
方法3:使用Minikube Tunnel
启动Minikube Tunnel来暴露服务到宿主机网络:
minikube tunnel
启动后,宿主机即可通过192.168.183.128:30082访问目标服务。
内容的提问来源于stack exchange,提问作者Prab
相关产品推荐
相关产品推荐

