CEO of GEDOPLAN GmbH (www.gedoplan.de) JEE since 1999 Speaker and author 2 gedoplan.de Kubernetes on prem - mit Kubespray den eigenen Kubernetes-Cluster aufsetzen
Learning Small, cheap (?) prod environments How? Bare Metal on Linux Hosts Load Balancer (MetalLB) Ingress Controller (Ingress-Nginx, cert-manager) Cluster Storage (Ceph) Kubernetes on prem - mit Kubespray den eigenen Kubernetes-Cluster aufsetzen 3 gedoplan.de
ssh Server User with SSH key and sudo right Additional unused partition Kubernetes on prem - mit Kubespray den eigenen Kubernetes-Cluster aufsetzen 5 gedoplan.de k8s-141 k8s-142 k8s-143
Local Ansible installation https://www.ansible.com/ open source IT automation engine utilizes so-called playbooks (~Scripts) Kubernetes on prem - mit Kubespray den eigenen Kubernetes-Cluster aufsetzen 6 gedoplan.de k8s-141 k8s-142 k8s-143
in so-called inventory Template in kubespray/inventory/sample Kubernetes on prem - mit Kubespray den eigenen Kubernetes-Cluster aufsetzen 7 gedoplan.de Hosts and their duties Properties for various functionalities
2 Mode (ARP / NDP) Kubernetes on prem - mit Kubespray den eigenen Kubernetes-Cluster aufsetzen 10 gedoplan.de k8s- 141 k8s- 142 k8s- 143 ARP Request „who has 192.168.10.140?“ ARP Response „me! I am 6c:c2:17:6d:32:b5“
→ background service Configuration by K8s ingresses Kubernetes on prem - mit Kubespray den eigenen Kubernetes-Cluster aufsetzen 13 gedoplan.de Ingress-Nginx Service foo Service bar same IP
MetalLB allocated IP Kubernetes on prem - mit Kubespray den eigenen Kubernetes-Cluster aufsetzen 14 gedoplan.de … ingress_nginx_enabled: true ingress_nginx_service_type: LoadBalancer ingress_nginx_namespace: "ingress-nginx" ingress_nginx_insecure_port: 80 ingress_nginx_secure_port: 443 ingress_nginx_class: nginx ingress_nginx_default: true … group_vars/k8s_cluster/addons.yml Activate Ingress-Nginx and let MetalLB assign IP
Certificate issuers for various CAs Lets Encrypt Private CA … https://cert-manager.io Kubernetes on prem - mit Kubespray den eigenen Kubernetes-Cluster aufsetzen 15 gedoplan.de
- mit Kubespray den eigenen Kubernetes-Cluster aufsetzen 20 gedoplan.de /opt/prj/gedoplan/showcase/k8s-on-prem-kubespray/rook-ceph ❯ kubectl apply -k 1-operator namespace/rook-ceph created customresourcedefinition.apiextensions.k8s.io/cephblockpoolradosnamespaces.ceph.rook.io created customresourcedefinition.apiextensions.k8s.io/cephblockpools.ceph.rook.io created customresourcedefinition.apiextensions.k8s.io/cephbucketnotifications.ceph.rook.io created … clusterrolebinding.rbac.authorization.k8s.io/rook-ceph-osd created clusterrolebinding.rbac.authorization.k8s.io/rook-ceph-system created configmap/rook-ceph-operator-config created deployment.apps/rook-ceph-operator created ❯ watch kubectl -n rook-ceph get pod NAME READY STATUS RESTARTS AGE rook-ceph-operator-757cdc49bb-pswkm 1/1 Running 0 6m26s /opt/prj/gedoplan/showcase/k8s-on-prem-kubespray/rook-ceph ❯ kubectl apply -k 1-operator namespace/rook-ceph created customresourcedefinition.apiextensions.k8s.io/cephblockpoolradosnamespaces.ceph.rook.io created customresourcedefinition.apiextensions.k8s.io/cephblockpools.ceph.rook.io created customresourcedefinition.apiextensions.k8s.io/cephbucketnotifications.ceph.rook.io created … clusterrolebinding.rbac.authorization.k8s.io/rook-ceph-osd created clusterrolebinding.rbac.authorization.k8s.io/rook-ceph-system created configmap/rook-ceph-operator-config created deployment.apps/rook-ceph-operator created ❯ watch kubectl -n rook-ceph get pod NAME READY STATUS RESTARTS AGE rook-ceph-operator-757cdc49bb-pswkm 1/1 Running 0 6m26s wait for it rook-ceph/1-operator ├── common.yaml ├── crds.yaml ├── csi-operator.yaml ├── kustomization.yaml └── operator.yaml
Class Block: block storage to be consumed by a pod (RWO) Shared Filesystem: filesystem to be shared by pods (RWX) Object: S3 compatible object store Kubernetes on prem - mit Kubespray den eigenen Kubernetes-Cluster aufsetzen 22 gedoplan.de … annotations: "storageclass.kubernetes.io/is-default-class": "true" Demo: block storage facultative /opt/prj/gedoplan/showcase/k8s-on-prem-kubespray/rook-ceph ❯ kubectl apply -k 3-storageclass storageclass.storage.k8s.io/rook-ceph-block created cephblockpool.ceph.rook.io/replicapool created /opt/prj/gedoplan/showcase/k8s-on-prem-kubespray/rook-ceph ❯ kubectl apply -k 3-storageclass storageclass.storage.k8s.io/rook-ceph-block created cephblockpool.ceph.rook.io/replicapool created
Bielefeld, Köln, inhouse Reviews, Coaching Development Teams Contact [email protected] linkedin.com/in/dirk-weil-49940683 25 gedoplan.de Kubernetes on prem - mit Kubespray den eigenen Kubernetes-Cluster aufsetzen