Updated by Linode
Use promo code DOCS10 for $10 credit on a new account.
In this guide you will learn about networking in Kubernetes and about advanced Kubernetes topics.
Networking in Kubernetes was designed to make it simple to port existing apps from VMs to containers, and subsequently, Pods. The basic requirements of the Kubernetes networking model are:
- Pods can communicate with each other across Nodes without the use of NAT
- Agents on a Node, like kubelet, can communicate with all of a Node’s Pods
- In the case of Linux, Pods in a Node’s host network can communicate to all other Pods without NAT.
Though the rules of the Kubernetes networking model are simple, the implementation of those rules is an advanced topic. Because Kubernetes does not come with its own implementation, it is up to the user to provide a networking model.
Two of the most popular options are Flannel and Calico.
Flannel is a networking overlay that meets the functionality of the Kubernetes networking model by supplying a layer 3 network fabric, and is relatively easy to set up.
Calico enables networking, and networking policy through the NetworkPolicy API to provide simple virtual networking.
For more information on the Kubernetes networking model, and ways to implement it, consult the cluster networking documentation.
There are a number of advanced topics in Kubernetes. Below are a few you might find useful as you progress in Kubernetes:
- StatefulSets can be used when creating stateful applications.
- DaemonSets can be used to ensure each Node is running a certain Pod. This is useful for log collection, monitoring, and cluster storage.
- Horizontal Pod Autoscaling can automatically scale your deployments based on CPU usage.
- CronJobs can schedule Jobs to run at certain times.
- ResourceQuotas are helpful when working with larger groups where there is a concern that some teams might take up too many resources.
Now that you are familiar with Kubernetes concepts and components, you can follow the Getting Started with Kubernetes: Use kubeadm to Deploy a Cluster on Linode guide. This guide provides a hands-on activity to continue learning about Kubernetes.
If you would like to deploy a Kubernetes cluster on Linode for production use, we recommend using one of the following methods instead. These methods are also a much faster way to get a cluster running, and they will also integrate your cluster with some useful Linode plugins:
You may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted materials.
Find answers, ask questions, and help others.
This guide is published under a CC BY-ND 4.0 license.