Kubernetes Networking Concepts

From NovaOrdis Knowledge Base
Jump to navigation Jump to search

External

Internal

Overview

This page describes various Kubernetes networking aspects, grouped around several high level subjects. It starts by explaining how pods communicate with each other within a Kubernetes cluster. This is the pod networking section. Service networking section deals with how services use a stable virtual IP address to offer access to a pool equivalent pods, all of which may come and go individually. In these two sections will be mainly discussing about IP addresses and routing.

Pod Networking

Service Networking

DNS Support

Ingress



Kube-proxy

Kube-proxy

Pod Network

Every pod in the Kubernetes cluster has its own IP address, which is routable on the pod network, so every pod on the pod network can talk directly to every other pod.

The DNS Service

Each Kubernetes cluster has an internal DNS service, with a static IP address that is hardcoded into every pod on the cluster. Every new Service is automatically registered with the cluster's DNS service so cluster components can find services by name. StatefulSets and the individual pods managed by a StatefulSet are also registered with the DNS service.

The DNS service is built on CoreDNS.

Testing name resolution:

kubectl run -it --rm --restart=Never --image=infoblox/dnstools:latest dnstools

Also see:

Services and DNS

Network Plugin

Flannel

Flannel is the default network plugin that comes with Kubespray. Flannel is an L2 overlay network solution. An L2 solution is difficult to troubleshoot due to packet encapsulation. Also, every node in the network is state-heavy (VLANs, tunnels).

Calico

Calico is a pure L3 fabric solution.

Ingress

Ingress Concepts