Upgrade to Pro — share decks privately, control downloads, hide ads and more …

HDC24: A Life without VMs: High-Scale Kubernete...

HDC24: A Life without VMs: High-Scale Kubernetes on Bare Metal

Martin Helmich

August 30, 2024
Tweet

More Decks by Martin Helmich

Other Decks in Technology

Transcript

  1. VIKTOR ABRAMS @mittwald MARTIN HELMICH @mittwald A LIFE WITHOUT VMs

    HIGH - SCALE KUBERNETES ON BARE METAL HELLMANN DEVELOPER & MAKER CONFERENCE August 30th, 2024
  2. APACHE PHP MYSQL ... AND NOW OPENSEARCH KEYCLOAK MOBILE APP

    ...OR NODE.JS DOCKER PWA NGINX 💥 ...OR P CDN HOSTING BACK THEN BOOP VARNISH
  3. MITTWALD CLOUD PLATFORM ARCHITECTURAL GOALS FLEXIBILITY RESOURCE EFFICIENCY ( INTERNAL

    ) EASE OF USE *) apart from obvious ones, like security, reliability and performance *
  4. MITTWALD CLOUD PLATFORM ARCHITECTURAL GOALS FLEXIBILITY STANDARDS CONFORMANCE KUBERNETES/COE CONTAINERIZED

    CUSTOMIZABLE OCI IMAGES QUALITY GOAL SOLUTION STRATEGY RESOURCE EFFICIENCY ELASTICITY OPTIMIZED SCHEDULING ( INTERNAL ) EASE OF USE DECLARATIVE APIS KUBERNETES OPERATORS
  5. martin @ local $ mw app install typo3 -q --version=12.4.17

    --install-mode composer [...] martin @ local $ kubectl get pods --all-namespaces \ --field-selector spec.nodeName=shoot--chp-prod--gestringen-pm-sps-3669c938-z1-797d7-gtfmz NAMESPACE NAME READY STATUS RESTARTS AGE kube-system node-local-dns-69btw 1/1 Running 0 36d kube-system node-problem-detector-2bq2z 1/1 Running 0 36d kube-system openstack-manila-csi-nodeplugin-sk8sm 2/2 Running 0 36d monitoring kube-prometheus-stack-prometheus-node-exporter-dnq9l 1/1 Running 0 36d monitoring loki-stack-promtail-mntw2 1/1 Running 0 36d pg-s-piryq0 mysql-default-80-low-latency-knlw2-0 1/1 Running 0 12s pg-s-piryq0 p-elfmx0-64db467d4b-qzmdv 2/2 Running 0 2d20h pg-s-piryq0 p-elfmx0-l2qzd-b79b7fdf6-qxjl4 2/2 Running 0 12s pg-s-piryq0 p-elfmx0-logrotation-28698480-47mvh 0/1 Completed 0 23h
  6. DEPLOYMENT REPLICASET POD STATEFULSET DAEMONSET SERVICE INGRESS INGRESS CLASS PERSISTENT

    VOLUME PERSISTENT VOLUMECLAIM STORAGE CLASS JOB CRON JOB CERTIFICATE SECRET CONFIG MAP NODE
  7. DEPLOYMENT REPLICASET POD STATEFULSET DAEMONSET SERVICE INGRESS INGRESS PERSISTENT VOLUME

    PERSISTENT VOLUMECLAIM STORAGE CLASS JOB CRON JOB CERTIFICATE SECRET CONFIG MAP NODE KUBERNTES CORE CONCEPTS PROJECT CUSTOMER PROJECT GROUP APP DATABASE DOMAIN HOSTING DOMAIN MODEL
  8. apiVersion: apphosting.mittwald.cloud/v1 kind: App metadata: name: a-XXXXX namespace: s-YYYYY spec:

    app: typo3 version: 12.4.17 project: name: p-ZZZZZ requirements: - name: php version: ^8.3 - name: composer version: ^2 installPath: /my-typo3-site
  9. CUSTOM RESOURCE CONTROLLER KUBERNETES API USER create / update watch

    notify reconcile desired state control loop
  10. ORGANIZATIONAL STRUCTURE PRODUCT SPECIFIC MICROSERVICES PRODUCT SPECIFIC K8S OPERATORS K8S

    CORE COMPONENTS IaaS CLOUD DATA CENTER PRODUCT DEV TEAMS CLOUD PLATFORM TEAM IaaS + NETWORK TEAM DATA CENTER OPERATIONS
  11. /etc /mnt /srv httpd php-fpm sshd VISIBILITY NAMESPACES /home python

    /mnt /var httpd /mnt /etc /srv httpd php-fpm MySQL 1. Processes 2. File system 3. Network
  12. BARE METAL PROVISIONING control- plane worker worker worker Rack 1

    control -​ plane worker worker worker Rack 2 control -​ plane worker worker Rack 3 netbox Adapter dhcp bootp cloud- init CORE BGP EFI RAID EFI RAID LVM root Volume 1..n BGP worker cloud- image
  13. VIRTUAL CLUSTERS systemd cri-o kubelet ... systemd cri-o kubelet ...

    systemd cri-o kubelet ... systemd cri-o kubelet ... Control-Plane Worker 1 Worker 2 Worker N kluster.m3.services Cluster Workergroup Cluster-Operator
  14. ROUTE REFLECTION vnode 1 vnode 2 vnode 3 vnode 5

    vnode 4 SWITCH 1 SWITCH 2 frr frr NODE 1 NODE 2
  15. MAIN GOALS _ IP DUAL STACK _ PERFORMANCE FIRST _

    MANAGEABLE UNITS (no micromanagement) _ COMPLETE INVENTORY OVERVIEW (datacenter infrastructure management; DCIM ) _ COMPLEXITY REDUCTION i.e.: less abstraction (compute, network, ...)