Recently, as part of a presentation to a large Institutional customer, I had to describe the concept and practice of cointainerisation. The audience was diverse and contained people with varying degrees of technical knowledge. As such I needed to provide a high level overview without too much low level detail. These are the slides that I presented.
| UNDERSTANDING CONTAINERS
- Contains an application and its dependencies;
- Logically similar to a VM but with very different implementation details;
- Immutable. Rather than upgrade the dependencies and code the container image is rebuilt;
- Create once and run anywhere there is a suitable container runtime;
- Container images are pushed to a Container Registry.
| MANAGING CONTAINERS
- A Container Orchestrator manages the container lifecycle over a distributed set of worker nodes;
- Containers are pulled from a Container Registry;
- The Container Orchestrator provides specific services to the Containers, such as:
- Service discovery;
- Self healing;
| MODELLING APPLICATIONS AS SETS OF CONTAINERS
- Applications are composed of one or more Containers;
- They are deployed into the Container Orchestrator;
- The services provided by the Container Orchestrator allow the Containers to;
- Find and communicate with each other;
- Attach storage;
- Become accessible to external networks;
Environments aka NameSpaces
| MAPPING CONTAINERS INTO ENVIRONMENTS USING NAMESPACES
- Kubernetes has the concept of a NameSpace;
- A NameSpace contains one or more Pods (Containers) and / or other Kubernetes resource types;
- A NameSpace can be thought of as an environment;
- For HA and performance reasons, a production NameSpace could contain multiple instances of each application component;
- A DEV NameSpace might have just one instance of each application component.
| FELXIBLE CONTROL OF WORKLOAD SIZE AND REDUNDANCY
- Pod replicas can be scaled both horizontally and vertically or a combination of the two.
- Horizontal scaling gives Pod plus worker node failure redundancy and greater throughout.
- Vertical scaling gives Pod failure redundancy and greater throughput.
| A NEW PARADIGM FOR DEVELOPMENT AND DEPLOYMENT
- One pattern for NameSpaces is to have one for each branch of a source code repository;
- A Production NameSpace can be running the code from the master branch;
- And there can be additional NameSpaces for each of the other branches;
- This allows for faster and more robust development and testing;
- When branches are deleted, so is the NameSpace along with all its associated resources.
| SUPPORTING YOUR APPLICATION WITH ENTERPRISE GRADE SERVICES
- Services that support the cluster applications can be deployed into the cluster;
- Or a cloud provider / SaaS solution can be used;
- Or a combination;
- If all support services are running within the cluster then it becomes easy to migrate between different cloud providers.
- Kubernetes abstracts some cloud specific services into normalised forms that can be used anywhere, i.e:
- Load balancer;
| A CATALOG OF OPEN SOURCE CLOUD NATIVE SOLUTIONS
- The Cloud Native Computing Foundation (CNCF) is the steward of many open source projects that provide services and capabilities for modern applications;
- Kubernetes is an example of one of these projects;
| A SMALL CLUSTER FOR LOWER COST BUT ALSO LOWER SLAS. 3+1
- A small cluster can be used to get started cheaply;
- The control plane node would be a single point of failure;
- Worker nodes would be distributed across different availability zones for data center redundancy.
| FULL CLUSTER FOR FULL HA AND PROPER SLAS. x+3+3
- A full size cluster would have HA for all the control plane nodes;
- There could be many worker nodes;
- All nodes would be distributed over multiple availability zones.
| KUBERNETES AS A SERVICE
- Most clouds now offer managed Kubernetes aka Kubernetes as a Service;
- The cloud takes care of the control plane and provides SLAs around it;
- The user pays for the number of worker nodes needed.
| FLEXIBILITY IN CLUSTER LOCATION
- Multiple clusters can be used to provide;
- Additional redundancy;
- Localised placement of workloads for a given region.
- The clusters can be any combination of Cloud / KaaS / On-premise.
Summary of Container Benefits
| A FEW REASONS TO USE CONTAINERS
- Simple packaging format;
- Rapid and consistent deployment of workloads;
- Robust runtime environment for scaling and self healing;
- Standard management interface;
- Possibility to avoid vendor lock-in.
Cito Pro would be happy to help with your containerisation journey.