Kubernetes - Kubus

From MetaCentrum
Jump to navigation Jump to search

Kubernetes, známý také jako K8s, je open-source systém pro automatizované deploymenty, škálování a správu kontejnerizovaných aplikací.

Přístup

Platforma je určena pro primárně pro menší skupiny skupiny, které vyžadují individuální přístup nebo dlouhý běh specifických cloud native služeb.

Pro získání přistupu zasílejte následující informace na adresu metasupport@rt.cesnet.cz

  • Název skupiny a její členové,
  • průvodní zpráva,
  • požadavky na zdroje.

Webovová konzole běží na adrese https://dashboard.kubus.metacentrum.cz/. Token pro CLI je možné získat zde https://kube-config.kubus.meta.zcu.cz/.

HW

  • 2x Intel(R) Xeon(R) Silver 4214 CPU @ 2.20GHz (12 jader kazdy)
  • 256G RAM, 3T storage

Služby v clusteru

Základní konzolové operace

Lze použít imperativní i deklarativní správu objektů. Popíšeme pouze deklarativní přistup.

kubectl get all # vypise vsechny objekty v namespace
kubectl get pod # vypise vsechny pody
kubectl create -f object.yaml # vyrobi objekt podle definice v souboru
kubectl apply -f object.yaml # aplikuje zmeny v objektu, nebo ho vyrobi, pokud neexistuje
kubectl diff -f object.yaml # vypise zmeny v souboru oproti aktualnimu stavu
kubectl logs pod-id # vypise logy podu
kubectl decribe pod pod-id # vypise metadata k podu

Příklady

nginx.yaml

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
        lifecycle:
          postStart:
            exec:
              command: ["/bin/sh", "-c", "echo $HOSTNAME > /usr/share/nginx/html/hostname.html"]

pvc.yaml

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: rbd-pvc1
spec:
  accessModes:
    - ReadWriteOnce
  volumeMode: Filesystem
  resources:
    requests:
      storage: 5Gi

service.yaml

---
apiVersion: v1
kind: Service
metadata:
  name: service1
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80

ingress.yaml

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: service1
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
  ingressClassName: nginx
  tls:
  - hosts:
    - service1.kubus.meta.zcu.cz
    secretName: service1-tls
  defaultBackend:
    service:
      name: service1
      port:
        number: 80
  rules:
  - host: service1.kubus.meta.zcu.cz
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: service1
            port:
              number: 80

Tipy

kompose

Pro překlad Vašich existujících docker-compose.yaml zkuste použít nástroj kompose

https://kompose.io/

kustomization

Pokud potřebujete stagovat deployment, použijte nástroj kustomize

https://kubernetes.io/docs/tasks/manage-kubernetes-objects/kustomization/

Do adresáře projektu deploymentu vytvořte soubor kustomization.yaml s obsahem:

namespace: my-namespace
namePrefix: devel-

bases:
- nginx.yaml
- service.yaml
- ingress.yaml
kubectl apply -k ./ # aplikuje zmeny v objektech, nebo je vyrobi, pokud neexistuji
kubectl diff -k ./ # vypise zmeny v definicich oproti aktualnimu stavu

Odkazy