👁️
pierreinside
  • Introduction
  • Workbench
    • VirtualBox
    • Linux
      • Linux-Paketverwaltung
      • Linux Initialisierung
      • Ubuntu 14.10 LTS
      • Ubuntu 16.04 LTS
      • Ubuntu 18.04 LTS
      • Ubuntu 20.04 LTS
      • Ubuntu - Netzwerk
    • Konsole
      • ssh
      • zsh
      • cygwin
      • Babun
      • terminator
      • Terminal Multiplexer
      • Linux Tools
    • awesome
    • Entwicklungsumgebungen
      • Texteditors
      • Visual Studio Code
      • IntelliJ - IDEA
  • Softwareentwicklungsprozess
    • Schätzungen
    • Eventstorming
    • OKR
  • Architektur
    • Uncle Bob
    • Microservices
    • NoSQL
      • ElasticSearch
    • Hystrix
    • Reactive Programming
    • AngularJS
    • Service Mesh
  • Networking
    • Dependency Injection
  • Programming
    • Java Core/EE
      • Java 8
      • Java Annotationen
      • Bean Validation
      • Enterprise Java Beans Specification
      • Dependency Injection
    • JRebel
    • Webservices
      • HTTP
      • REST
      • Spring MVC REST
      • Swagger
      • Postman
    • Spring Ecosystem
      • Spring Core
      • Spring Boot
        • Programming
        • Production Ready
        • Testing
      • Spring Cloud
      • Spring Cloud Config
      • Spring MVC
      • Spring Data
      • Spring Petclinic
    • NodeJS
    • UI-Technologie
      • Thymeleaf
      • ionic
      • Web Fonts
      • Jinja Templates
      • Twitter Bootstrap
    • Python Ecosystem
      • Python Libraries
      • Python Testing
      • Python Best-Practices
      • Python Snippets
      • Python Selenium
      • Kivy UI
      • FastAPI
      • Typer CLI
      • Django
    • Groovy
    • Persistenz
      • Transactions
        • Java TX
        • JPA TX
      • TX Handling
      • JPA
        • Eclipse Link
      • MySQL
        • MySQL Performance
        • Docker MySQL
      • Hazelcast
    • Glassfish
    • YAML
    • Angular
    • Camel
    • Zeichenkodierung
    • Kinder lernen Programmieren
  • Testen
    • Easymock
    • Mockito
  • Performance & Scalability
    • Java Performance
      • Heapdump Analysis
    • Java Concurrency
    • Instana
  • Sicherheit
    • Authentifizierung
      • OpenID Connect
      • Web-Authentication API
    • Authorisierung
      • OAuth
      • SAML
    • Spring Security
    • Zertifikate
    • Kali Linux
    • VPN
    • Zero-Trust-Networks
  • Build und Deployment
    • Maven
    • Bamboo
    • Jenkins
      • Jenkins Pipelines
      • Jenkins Pipelines Tips und Tricks
      • Jenkins-configuration-as-Code
      • Jenkins IDE
    • Travis CI
    • Shellprogrammierung
      • jq - JSON Parsing
    • Konfiguration Management
    • Vagrant
      • Vagrant-Ansible-Integration
      • Vagrant Box bauen
    • Ansible
      • Getting Started
      • Ansible Details
    • Saltstack
    • LinuxKit
    • Container
      • Docker
        • Docker Getting Started
        • Debugging Docker
        • Docker Build
        • Docker Registry
        • Docker run
          • docker run
          • docker network
        • Docker Compose
        • docker machine
        • Docker@Windows
        • Docker Host
        • Docker Scaling
        • Docker Ressources
        • Docker Logging
        • windowsContainer
      • Cloud Deployment Provider
        • AWS
          • Anwendungsdeployment
          • Workload
          • Permissions
          • Netzwerke
          • AWS CLI
            • aws-vault
          • RDS
          • Static Website Hosting
          • EKS - Elastic Kubernetes Service
          • S3
        • Google Cloud Platform
      • Docker Orchestrierung
        • CoreOS
        • Kubernetes
          • microK8s
          • minikube
          • autoscaler
          • Docker
          • k9s
        • Nomad
    • PHP
  • Operations
    • Proxy
      • NGINX
    • DNS
    • Logging
      • Graylog
      • Fluentd
    • Monitoring
      • Grafana
    • Infrastructure-as-Code
      • Terraform
        • AWS-Provider
        • GitHub-Provider
      • Packer
    • Deployment
      • Vault
      • Consul
        • Consul Template
      • Fabio
  • Rechtliches
    • Software-Lizenzen
  • Git Ecosystem
    • Git
      • Git Lifecycle Hooks
    • GitHub
      • GitHub Organizations
    • GitHub Actions
    • GitHub Pages
    • GitHub CLI
    • GitHub Copilot
    • GitHub-AWS OIDC
    • GitBook
    • GitLab
    • Bitbucket/Stash
  • Publishing
    • WordPress
    • Markdown
    • Static Site Generators
      • Hugo
      • Jekyll
    • Tiddly Wiki
    • Leanpub
    • Animationsfilme
  • Storage
    • Synology 2012
    • Synology 2021
  • Collaboration
    • Übersicht
    • Microsoft Teams
  • Konferenzen
    • Velocity Berlin 2019
  • IT mit Kindern
    • Projekt Sportstracker
    • Scratch
    • Pico Spielekonsole
  • Schule
    • Mathematik
  • Misc
    • Foto/Video
      • Foto/Video Sammlung bis 2023
        • Handbrake
        • Onedrive
      • Foto/Video Sammlung ab 2024
      • Gopro
      • Panasonic FZ1000 ii
        • als Webcam
      • AV Receiver
      • Videos erstellen
        • OBS Studio
        • Touch Portal
        • Game-Streaming
      • Kameratasche
      • Kamera 2020
    • Handy
      • 2016
      • 2018
      • 2019
      • 2021
      • 2022
    • Computer
      • Laptop
        • 2018
        • Chromebook
      • Monitor
        • 4k
      • Software
        • Command Line Interface
        • Google API
        • Plant UML
        • Chromium
        • Passwort-Manager
        • GPG
      • Dell CNF 2665 Farbdrucker
      • Dockingstation
      • Gaming PC 2021
      • Mobiles Büro
      • Mobiles Internet
      • Mobiler Router
    • Beamer Benq W1000+
    • Spielekonsole
      • 2017
        • Playstation 4
      • Pico Spielekonsole
    • Gadgets
      • iPad Pro 2015 und 2016
      • iPad Air 2024
      • Macbook Pro
      • Smartwatch
      • Slate
      • Mudi
    • Fahrrad
      • Jonas 2018
      • SQLab
    • Auto
      • Auto 2022
      • Camping
        • Camping Touren Ideen
          • Camping Tour - Gardasee 2021
        • Camper
          • Camper klein - keine Stehhöhe
            • VW Bus Erfahrungen
          • Camper gross - Stehhöhe
    • Haus
      • Klimaanlage
      • Swimming Pool
      • Quick Mill Orione 3000
      • Spülmaschine 2021
      • Hebe-Schiebetür
      • Gasgrill
      • Minibar / Mini-Kühlschrank
      • Glasfaseranschluss (Fiber-to-the-Home)
      • Smart-Home
        • Raspberry Pi
        • Heimnetzwerk
      • Homeoffice
      • Energie
        • Solar
        • Wärmepumpe
    • Freizeit
      • Musik Streaming
      • Sky
      • Online Lernplattformen
      • eScooter - ePowerFun
    • Fußball
      • Meine Arbeit als Fußball-Trainer
      • Fußball Tools
      • DFB Talentförderung
    • Google Impact Challenge
  • Englisch
Powered by GitBook
On this page
  • microK8s
  • Motivation
  • Getting started
  • Installation
  • Start
  • Konfiguration
  • Konfiguration kubectl
  • Ingress-Controller
  • metallb - Load-Balancer
  • Vergleich zu anderen Lösungen
  • Minikube
  • k3s
  • k3d
  • kind

Was this helpful?

  1. Build und Deployment
  2. Container
  3. Docker Orchestrierung
  4. Kubernetes

microK8s

microK8s

  • Hompage

Das ist eine Lightweight Kubernetes Lösung, die von Canonical entwicklet wird. Die ansonsten schwer zu managegende Control-Plane (die man auch bei AWS-EKS einkaufen kann) ist kommt out-of-the-box:

"MicroK8s is the easiest way to consume Kubernetes as it abstracts away much of the complexity of managing the lifecycle of clusters." (Statement)


Motivation

Für die Einarbeitung in Kubernetes wollte ich eine möglichst billige und schnelle Lösung haben. Ein Cluster via AWS EKS zu betreiben ist sicherlich der Porsche, aber kommt auch mit entsprechenden Kosten daher (pro Tag kommen da schon mal 10 Euro zusammen ... ohne, dass Last drauf ist) und deshalb sollte man ihn - wenn ausschließlich zum Training verwendet - immer wieder zerstören ... der Aufbau und Abbau kann mit (Amazon EKS) aber schon mal eine Stunde dauern (und das ist schon die schnelle Variante).

Da ich sowieso ein Freund von Raspberry Pi bin, finde ich ein den Pi-Cluster sehr interessant. Hier könnte man auch langfristig sein eigenes kleines billiges Datacenter aufbauen.


Getting started

Installation

Auf meinem Ubuntu verwende ich folgende Befehle

sudo apt update
sudo snap install microk8s --channel=latest/stable --classic
sudo usermod -a -G microk8s vagrant
mkdir -p ~/.kube
sudo chown -R vagrant ~/.kube

Einmal abmelden und neu anmelden (damit der User vagrant auch tatsächlich in der Gruppe micork8s ist) und dann noch dieses Kommando nachschießen:

Start

microk8s start

Konfiguration

Microk8s kommt mit einem Plugin-Ansatz daher ... die Plugins muss man entsprechend einschalten

microk8s enable rbac dns storage ingress

Microk8s kommt zwar schon gebundelt mit einem eigenen kubectl (microk8s.kubectl), will neben dem Microk8s auch einen "normalen" Kubernetes Cluster managen, dann wird man das offizielle kubectl verwenden wollen.

Ich empfehle, das microk8s.kubectl nicht zu verwenden. Stattdessen das normale kubectl per microk8s config > ~/.kube/config umkonfigurieren. Dann funktioniert auch die Auto-Completion von kubectl einfach out-of-the-box auch für Microk8s.

Konfiguration kubectl

Mit

microk8s config > ~/.kube/config-microk8s

erstellt man die Konfiguration und macht sie per

export KUBECONFIG=~/.kube/config-microk8s

zur aktuellen, so dass kubectl get pods gegen das MicroK8s-Cluster läuft.

Ingress-Controller

Über

microk8s enable ingress

wird der Ingress-Controller im Microk8s enabled und gestartet. Er befindet sich in einem separaten Namespace.

ACHTUNG: man benötigt hierfür zudem den metallb Load-Balancer, der VOR dem Ingress-Controller sitzt

metallb - Load-Balancer

microk8s enable metallb:192.168.100.40-192.168.100.49

Die IP-Range definiert, welche IP-Adressen die Load-Balancer erhalten werden (meist reichen in MicroK8s weniger als 10 IP-Adressen). Da die IP-Adressen im gleichen Netzwerk wie der MicroK8s-Knoten (= localhost ... bei MicroK8s der einzige Knoten) liegen muss, kann man per k get nodes -o wide herausfinden welche IP-Adresse localhost hat.


Vergleich zu anderen Lösungen

Ich habe mich für microK8s entschieden, weil

  • es mit Canonical einen renomierten Anbieter im Hintergrund hat (und hoffentlich noch eine Weile weiterentwickelt wird)

  • auf einem Raspberry Pi betrieben werden kann (ARM64 + minimale Hardware-Anforderungen)

  • mich dieser Vergleich überzeugt hat

    • Vanilla Kubernetes

    • Multi-Node Support

Minikube

Minikube unterstützt nur einen einzelnen Worker-Knoten ... ist somit kein echtes Cluster und somit stark eingeschränkt.

k3s

  • Homepage

  • GitHub

k3d

  • Homepage

"k3d is a lightweight wrapper to run k3s (Rancher Lab’s minimal Kubernetes distribution) in docker. k3d makes it very easy to create single- and multi-node k3s clusters in docker, e.g. for local development on Kubernetes." (Homepage)

Der Vorteil ist, dass man Cluster-Nodes als Docker-Container abbildet und somit auch lokal auf einem Laptop eine Multi-Node-Cluster starten kann.

kind

  • Homepage

... kind kommt in Docker-Desktop schon vorinstalliert.


PreviousKubernetesNextminikube

Last updated 8 months ago

Was this helpful?