In this episode Andrew and Paul roam around the topic of Kubernetes. We look at what it is, what the main concepts are, how to make your application available and scalable. Kubernetes is a big area to cover, so this just contains the fundamentals.
The highlights of the podcast are:
- Kubernetes contributes to 3 of the “7 Outcomes for Success”, specifically Rapid Delivery, Avalilable & Scalable and Costs Optimised.
- We briefly cover the concept of Microservices: breaking an application into small units that are independently deployable and scalable. This reduces the complexity of our applications and reduces the regression burden as our services are isolated.
- Containerising applications means that your application is separated from other applications running on the same machine.
- Basic Kubernetes terms:
- Cluster: A group of machines working together to host Kubernetes.
- Nodes: A machine in the cluster.
- Master node: A machine running Kubernetes services, which control, monitor and coordinate the applications running on the cluster.
- Worker node: A machine that hosts applications, that has work assigned to it by the master nodes.
- Pod: A unit of deployment that can be one or more containers. Pods are scalable.
- Manifest: A file that describes how a pod should operate.
- Helm chart: A description of an application that spans multiple pods.
- We discuss configuration of a pod, notable through a ConfigMap and secrets.
- We look at deployment options for pods. These can be:
- Replicaset: Multiple copies of the same container running across the cluster. This is the typical application option.
- Daemonset: An instance of a worker that runs on each node. An example of this might be to collate logs.
- Statefulset: An instance that is aware of state. Can be used to “remember” node names and to link to persistent storage. This is how we create NoSQL database clusters in Kubernetes.
- We look at hosting options. In particular we call out:
- Amazon EKS – this is the one we typically use – hosts the master nodes and you then add your own worker nodes into the cluster.
- Azure AKS – equivalent to EKS and superseding Service Fabric.
- Workstation developers typically use Minikube to host their development version.
- We also talk about options for high availability by spreading clusters over multiple datacenters and regions.
You can watch the podcast here:
The audio is available here: