Skip to content

Personal Kubernetes project as a future reference point

Notifications You must be signed in to change notification settings

elvinlai1/k8s-playground

Repository files navigation

k8s-playground

Personal repository revolving around kubernetes (k8s).
Kubernetes was never truly designed to be deployed on-premise, but thankfully there are third party components that mimic and replace the need for dedicated cloud components. My on-premise Kuberrnetes deployment configuration is detailed here.

What is Kubernetes?

With my own interpretation...

  • Opensourced "borg"

  • Handling global scale services with 100% uptime

  • Scaling services to handle millions of transactions in different regions of the world

  • HPC (High Performance computing)

  • Iterating over docker and docker compose

  • Other applications?

Repository Structure
.
├── go-endpoint                     # Standalone REST API test application
├── go-endpoint-mongodb             # Basic REST API that interacts with mongoDB
│   └── go-endpoint-mongodb.yaml        # Kubernetes deployment config 
│   └── test-request.http               # Predefined requests to test endpoints 
├── mongo                           # Kubernetes MongoDB and Mongo-express deployment configurations
│   └──  docker-compose.yml             # For local device docker testing
└── reference_yaml                  # Place to store yaml configs for reference
├── MyKubernetesConfiguration.md
└── README.md

Table of Contents

Acknowledgement section covers any extra knowledge, articles and random thoughts.

  • Deploy a stacked HA Kubernetes topology cluster via kubeadm
  • Create custom manifest to deploy custom go-endpoint-mongodb pods to interact with mongoDB
  • Conduct basic stress and load tests to see how kubernete's features work
  • Document the knowledge and configurations in a self-hosted environment for future reference
  • Load and Stress testing to understand kubernete's automated system
  • Prometheus configuration monitoring
  • Configuring Storage Orchestration
    • Persistent Volume Claim (PVC) --> Persistent Volume (PV)
  • Proper Nginx Ingress controller and TLS/SSL termination
  • Automated CI/CD setup with Jenkins

To show case what my current configuration is capable of

Visual Topology

Image

Kubernetes Visual Topology

Nodes information

Kill Pods

(gif)

Kill Nodes

(gif)

Kill a Worker Node

(gif)

Kill a Control Plane

(gif)

Kill a Control Plane and Worker Node

(gif)


As kubeadm is just a tool to create a minimum viable cluster. More in-depth configuration can be done as shown in kelseyhightower and mmumshad repository.

Dedicated OS

TalosOS

Variations of k8s

  • minikube
  • kind
  • k3s
  • microk8s

k8s components

  • persistent storage

  • namespaces

  • rbac

  • containerd

  • Flannel (CNI)

  • CoreDNS

  • Traefik (Ingress)

  • Klipper-lb (Service LB)

  • Embedded network policy controller

  • Embedded local-path-provisioner

  • Host utilities (iptables, socat, etc)

Explaining the purpose of kubernetes https://dev.to/thenjdevopsguy/what-problem-is-kubernetes-actually-trying-to-solve-3g1n

Setting up kubernetes in proxmox https://www.learnlinux.tv/how-to-build-an-awesome-kubernetes-cluster-using-proxmox-virtual-environment/

Article regarding high availability kubernetes using kubeadm https://medium.com/velotio-perspectives/demystifying-high-availability-in-kubernetes-using-kubeadm-3d83ed8c458b

How Kube-vip replaces both haproxy and keepalived to a degree https://inductor.medium.com/say-good-bye-to-haproxy-and-keepalived-with-kube-vip-on-your-ha-k8s-control-plane-bb7237eca9fc

Explanation of kube-vip https://thebsdbox.co.uk/2020/01/02/Designing-Building-HA-bare-metal-Kubernetes-cluster/#Networking-load-balancing

Explanation of multi-cluster kubernetes https://traefik.io/glossary/understanding-multi-cluster-kubernetes/

Examples of multi-cluster kubernetes configuration https://www.kubecost.com/kubernetes-multi-cloud/kubernetes-multi-cluster/

Kubernetes for Data Engineering https://medium.com/@vladimir.prus/kubernetes-for-data-engineering-feba247f7585

About

Personal Kubernetes project as a future reference point

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published