Alfred Sabitzer

K8s Applications mit MicroK8S auf Raspberry PI


Скачать книгу

rel="nofollow" href="https://microk8s.io/docs/registry-built-in">https://microk8s.io/docs/registry-built-in

      Um den Cluster richtig betreiben zu können, sind auch Namespaces wichtig. Es sind (neben den technischen Namespaces, die mit k8s automatisch angelegt werden) noch die folgenden Namespaces vorhanden.

      ---

      apiVersion: v1

      kind: Namespace

      metadata:

       labels:

       kubernetes.io/metadata.name: slainte

       name: slainte

      spec:

       finalizers:

       - kubernetes

      ---

      apiVersion: v1

      kind: Namespace

      metadata:

       labels:

       kubernetes.io/metadata.name: default

       name: default

      spec:

       finalizers:

       - kubernetes

      ---

      apiVersion: v1

      kind: Namespace

      metadata:

       labels:

       kubernetes.io/metadata.name: admin

       name: admin

      spec:

       finalizers:

       - kubernetes

      ---

      Slainte ist quasi die Produktion (von aussen erreichbar). Default ist ein Test-URL der auch von aussen erreichbar ist. Die Services in admin haben keinen Ingress (sind von aussen nicht erreichbar), werden aber idR. als LoadBalancer-Services bereitgestellt.

      IP-Adressen

      Inspiration:

      https://cloud.google.com/kubernetes-engine/docs/concepts/network-overview

      Die im Cluster verfügbaren Bereiche sind:

OEBPS/images/image0008.jpg

      Im Konkreten:

      k8s.slainte.at 87.243.186.29

      default.k8s.slainte.at 87.243.186.29

      Aus dem Cluster selbst:

      alfred@pc1:~/yaml$ k get svc --all-namespaces | grep -v '<none>'

      NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE

      ingress ingress LoadBalancer 10.152.183.126 192.168.0.210 443:31287/TCP,80:31681/TCP 22h

      kube-system kubernetes-dashboard LoadBalancer 10.152.183.150 192.168.0.211 443:31449/TCP 22h

      longhorn-system longhorn-frontend LoadBalancer 10.152.183.199 192.168.0.212 80:31444/TCP 22h

      container-registry registry LoadBalancer 10.152.183.207 192.168.0.213 5000:32000/TCP 22h

      admin chrony-udp-svc LoadBalancer 10.152.183.77 192.168.0.240 123:32658/UDP 40m

      admin pgadmin-svc LoadBalancer 10.152.183.201 192.168.0.241 5432:30954/TCP,80:30675/TCP,443:30676/TCP 19m

      Source Repository

      Inspiration:

       https://microk8s.io/docs/registry-built-in

      Eine Software-Registry wird benötigt, wenn man selbst entwickelte Anwendungen lokal speicher und verwenden möchte. Prinzipiell könnte man auch öffentliche Registrys nehmen, aber wir haben ja einen k8s-cluster.

      alfred@pc1:~$ microk8s enable registry:size=40Gi

      Addon storage is already enabled.

      Enabling the private registry

      Applying registry manifest

      namespace/container-registry created

      persistentvolumeclaim/registry-claim created

      deployment.apps/registry created

      service/registry created

      configmap/local-registry-hosting configured

      The registry is enabled

      The size of the persistent volume is 40Gi

      alfred@pc1:~$

      Nun ist die Registry vorhanden. Das Cluster-Setup ist wie folgt:

      alfred@pc1:~$ microk8s status

      microk8s is running

      high-availability: yes

       datastore master nodes: 192.168.0.202:19001 192.168.0.203:19001 192.168.0.204:19001

       datastore standby nodes: 192.168.0.201:19001 192.168.0.205:19001

      addons:

       enabled:

       dashboard # The Kubernetes dashboard

       dns # CoreDNS

       ha-clusalfred@pc1:~$ microk8s status

      microk8s is running

      high-availability: yes

       datastore master nodes: 192.168.0.202:19001 192.168.0.203:19001 192.168.0.204:19001

       datastore standby nodes: 192.168.0.201:19001 192.168.0.205:19001

      addons:

       enabled:

       dashboard # The Kubernetes dashboard

       dns # CoreDNS

       ha-cluster # Configure high availability on the current node

       helm3 # Helm 3 - Kubernetes package manager

       ingress # Ingress controller for external access

       metallb # Loadbalancer for your Kubernetes cluster

       metrics-server # K8s Metrics Server for API access to service metrics

       prometheus # Prometheus operator for monitoring and logging

       rbac # Role-Based Access Control for authorisation

       registry # Private image registry exposed on localhost:5000

       storage # Storage class; allocates storage from host directory

       disabled:

       helm # Helm 2 - the package manager for Kubernetes

       host-access # Allow Pods connecting to Host services smoothly

       linkerd # Linkerd is a service mesh for Kubernetes and other frameworks

       portainer # Portainer UI for your Kubernetes cluster

       traefik # traefik Ingress controller for external access

      alfred@pc1:~$

      OEBPS/images/image0009.jpg Abbildung 7: Registry Clusterdisk

      Das Volume wurde als ClusterDisk angelegt. Die Storageclass longhorn ist als default eingerichtet.

      Das Skript zum Einrichten der Registry ist wie folgt:

      #!/bin/bash

      ############################################################################################

      #