minikube
NodePort
service access
Mac
Kubernetes troubleshooting

Can't access minikube service using NodePort from host on Mac

System Design practice on Codemia

Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.

Practice system design

A common issue faced by users while working with Minikube on macOS is the inability to access service endpoints using NodePort from the host machine. This article delves into why this problem occurs, how Minikube and Kubernetes networking works, and provides steps to resolve the issue.

Understanding Minikube and Kubernetes Networking

Before diving into the issue, it's important to understand how Minikube and Kubernetes networking function:

Minikube's Architecture

Minikube is a tool that allows you to run a local Kubernetes cluster on your machine. When Minikube is started, it typically runs inside a virtual machine or using container runtimes like Docker. On macOS, Minikube might leverage hypervisors such as VirtualBox, HyperKit, or Docker Desktop.

NodePort Service

In Kubernetes, a NodePort service exposes your application on a specific port on all nodes within the cluster. A typical use-case is to provide external access to an app by routing through any node in the cluster. The service selects ports from a default range (usually 30000-32767) to expose the service.

Problem: Inaccessibility of NodePort from Host

Accessing a service exposed with NodePort from your host machine on macOS might not work out of the box. This is primarily due to the isolation between the host network and the Minikube VM or Docker environment.

Detailed Explanation

When you attempt to connect to a NodePort service, your request needs to traverse from the host network into the Minikube environment. Reasons for access issues can include:

  • Network Isolation: The virtual machine or Docker behaves as an independent network entity.
  • Port Forwarding: Minikube might not automatically forward the NodePort from the host to the VM.
  • Firewall: Network policies and firewalls can block the traffic.

Solutions and Workarounds

Here are several methods to access NodePort services from your host:

1. Use Minikube Tunnel

Minikube provides a tunnel command which can create a route on your machine to services in Minikube:


Related reading
Course
Beginner
27 lessons
10 hours
System Design Fundamentals

Build a strong foundation in designing scalable, reliable distributed systems.

View the course
Track what you have practised

A free account saves your progress, solutions and study plan across every problem on Codemia.

System Design practice on Codemia

Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.

Practice system design

All Rights Reserved.