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.

Containers

| UNDERSTANDING CONTAINERS

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.

Container Orchestrator

| MANAGING CONTAINERS

container-orchestrator

  • 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;
    • Networking;
    • Storage.
    • Etc.

Applications

| MODELLING APPLICATIONS AS SETS OF CONTAINERS

application

  • 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;
    • Etc.

Environments aka NameSpaces

| MAPPING CONTAINERS INTO ENVIRONMENTS USING NAMESPACES

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.

Workload Placement

| FELXIBLE CONTROL OF WORKLOAD SIZE AND REDUNDANCY

workload-placement

  • 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.

CI/CD

| A NEW PARADIGM FOR DEVELOPMENT AND DEPLOYMENT

branches-namespaces

  • 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.

Cluster Services

| SUPPORTING YOUR APPLICATION WITH ENTERPRISE GRADE SERVICES

cluster-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;
    • Storage.

CNCF

| A CATALOG OF OPEN SOURCE CLOUD NATIVE SOLUTIONS

CloudNativeLandscape_latest

  • 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;
  • https://github.com/cncf/landscape

Small Cluster

| A SMALL CLUSTER FOR LOWER COST BUT ALSO LOWER SLAS. 3+1

small-cluster

  • 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

| FULL CLUSTER FOR FULL HA AND PROPER SLAS. x+3+3

full-cluster

  • 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.

KaaS

| KUBERNETES AS A SERVICE

kaas

  • 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.

Federated Clusters

| FLEXIBILITY IN CLUSTER LOCATION

federated-clusters

  • 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

Cito Pro would be happy to help with your containerisation journey.