Microservices in Practice: Overview of Kubernetes within ludotheca-share-mesh

Github Repo: https://github.com/marco13-moo/ludotheca-share-mesh
Kubernetes was used as a container orchestration tool to automate the deployment and management of the microservices application. Core Kubernetes concepts are detailed below to gauge an understanding of it's automated deployment and management capabilities.
Kubernetes Abstractions [21]:
- Cluster: A collection of nodes that pool resources together, work is distributed across the node pool within the cluster. Kubernetes is able to shift workloads across the node pool if nodes within the cluster are added or removed.
Kubernetes Abstractions and Networking within a Cluster:
Node: A node is the smallest unit of computing hardware defined in Kubernetes. Within the context of Google Cloud, a node is a Google Compute VM Instance. A node IP is assigned to each given node.
Pods: Kubernetes does not run containers directly but rather one or more containers into a pod abstrastraction. Pods are defined as a basic unit of computation within Kubernetes. Containers within the same pod share the same local network. Pods further act as a unit of replication within Kubernetes. An ephemeral Pod IP is assigned to each pod.
Deployments: Pods are not directly launched onto the cluster, but rather launched via the deployment abstraction. A Kubernetes deployment declares the number of pod replicas that are to be running at any given time. If a number of pods die, the deployment makes sure to spin up new pods till the defined replica set is met.
Services:. A Kubernetes service is a logical unit that groups multiple related pods via labels. A label is a key-value pair that is mapped to any Kubernetes resource [22]. Services provide a stable IP address and have the ability to load-balance traffic across the pod set. Kubernetes assigns the service a stable IP address, the ClusterIP from the cluster's address space and a unique static hostname via DNS entry. These are released upon Kubernetes service termination.
Ingress: Provides external cluster traffic to be routed to Kubernetes services.
Externalized Cluster Networking - Specific to Google Kubernetes Engine:
GKE provides specific forms of load-balancers for traffic management within the cluster.
External Load-Balancers: Routes traffic to nodes that stems outside of the cluster as well as the Google Virtual Private Cloud Network.
Internal Load-Balancers: Routes traffic to nodes stemming from the VPC network.
HTTP(S) Load-balancers: Provides load balancing specific to tls wrapped HTTP messages.
Subscribe to my newsletter
Read articles from Marco directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Marco
Marco
Senior DevOps Engineer exploring the world of distributed systems