Czy Kubernetes może być używany tak jak Docker Compose?

Od kilku godzin przeglądam dokumentację Kubernetes. Rozumiem rdzeń projektu, a pojęcie usług, kontrolerów, pods, itp.

Nie rozumiem jednak procesu, w którym mogę deklaratywnie skonfigurować klaster. Oznacza to, że mogę napisać plik konfiguracyjny (lub jego zestaw), aby zdefiniować opcje makijażu i skalowania wdrożenia w chmurze. Chcę być w stanie zadeklarować, które kontenery chcę w jakich kapsułach, jak będą się komunikować, jak będą skalować itp. bez uruchamiania mnóstwa poleceń cli.

czy istnieje funkcja docker-compose dla Kubernetes?

Chcę, aby moja aplikacja była zdefiniowana w git-aby była kontrolowana w wersji–bez polegania na ręcznych interakcjach cli.

Czy można to zrobić w zwięzły sposób? Czy istnieje odniesienie, które jest bardziej jasne niż oficjalna dokumentacja?

Author: halfer, 2016-06-15

4 answers

Docker oficjalnie ogłosił funkcjonalność docker-compose dla klastra kubernetes. Od teraz możesz komponować zasoby kubernetes w pliku i stosować je za pomocą tego pojedynczego pliku.

Najpierw musimy zainstalować kontroler Compose on Kubernetes w klastrze Kubernetes. Ten kontroler wykorzystuje standardowe punkty rozszerzenia Kubernetes do wprowadzenia Stack do interfejsu API Kubernetes. Sprawdź pełną dokumentację, aby zainstalować kontroler docker compose:

Https://github.com/docker/compose-on-kubernetes

Napiszmy prosty plik compose yaml:

version: "3.7"
services:
  web:
    image: dockerdemos/lab-web
    ports:
     - "33000:80"
  words:
    image: dockerdemos/lab-words
    deploy:
      replicas: 3
      endpoint_mode: dnsrr
  db:
    image: dockerdemos/lab-db

Następnie użyjemy klienta Dockera, aby wdrożyć go do klastra Kubernetes z kontrolerem:

$ docker stack deploy --orchestrator=kubernetes -c docker-compose.yml words
Waiting for the stack to be stable and running...
db: Ready       [pod status: 1/1 ready, 0/1 pending, 0/1 failed]
web: Ready      [pod status: 1/1 ready, 0/1 pending, 0/1 failed]
words: Ready    [pod status: 1/3 ready, 2/3 pending, 0/3 failed]
Stack words is stable and running

Możemy następnie wchodzić w interakcje z tymi obiektami za pośrednictwem API Kubernetes. Tutaj możesz zobaczyć, że stworzyliśmy obiekty niższego poziomu, takie jak usługi, Pody, wdrożenia i repliki automatycznie:

$ kubectl get deployments
NAME                    DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/db      1         1         1            1           57s
deployment.apps/web     1         1         1            1           57s
deployment.apps/words   3         3         3            3           57s    

Ważne jest, aby pamiętać, że nie jest to Jednorazowa konwersja. Serwer Compose on Kubernetes API wprowadza zasób stosu do interfejsu API Kubernetes. Możemy więc odpytywać i zarządzać wszystkim na tym samym poziomie abstrakcji, co budujemy aplikację. To sprawia, że zagłębianie się w powyższe szczegóły jest przydatne do zrozumienia, jak to działa lub debugowania problemów, ale nie jest wymagane przez większość czasu: {]}

$ kubectl get stack
NAME      STATUS      PUBLISHED PORTS   PODS     AGE      
words     Running     33000             5/5      4m
 11
Author: Prafull Ladha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-01 06:49:20

Jeśli nadal szukasz, może to narzędzie może pomóc: https://github.com/kelseyhightower/compose2kube

Możesz utworzyć plik compose:

# sample compose file with 3 services
web:
  image: nginx
  ports:
    - "80"
    - "443"
database:
  image: postgres
  ports:
    - "5432"
cache:
  image: memcached
  ports:
    - "11211"

Następnie użyj narzędzia, aby przekonwertować go do obiektów kubernetes:

compose2kube -compose-file docker-compose.yml -output-dir output

Który utworzy te pliki:

output/cache-rc.yaml
output/database-rc.yaml
output/web-rc.yaml

Następnie możesz użyć kubectl, Aby zastosować je do kubernetes.

 33
Author: Ahmad Aabed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-02 22:06:31

Jeśli masz już pliki Docker Composer, możesz przyjrzeć się projektowiKompose .

kompose to narzędzie, które pomaga użytkownikom, którzy są zaznajomieni z docker-compose move to Kubernetes. kompose pobiera plik Docker Compose i tłumaczy go na zasoby Kubernetes.

kompose jest wygodnym narzędziem do przechodzenia od lokalnego rozwoju dokera do zarządzania aplikacją za pomocą Kubernetes. Przekształcenie formatu Docker Compose do manifestu zasobów Kubernetes może nie być dokładnie, ale bardzo pomaga przy pierwszym wdrożeniu aplikacji na Kubernetes.

Aby uruchomić docker-compose.yaml Plik lub własny, Uruchom:

kompose up
Aby przekonwertować docker-compose.yaml na wdrożenia i usługi Kubernetes za pomocą jednego prostego polecenia:
$ kompose convert -f docker-compose.yaml
INFO Kubernetes file "frontend-service.yaml" created         
INFO Kubernetes file "redis-master-service.yaml" created     
INFO Kubernetes file "redis-slave-service.yaml" created      
INFO Kubernetes file "frontend-deployment.yaml" created      
INFO Kubernetes file "redis-master-deployment.yaml" created  
INFO Kubernetes file "redis-slave-deployment.yaml" created

Aby uzyskać więcej informacji, sprawdź: http://kompose.io/

 19
Author: JoaoCC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55

Kubernetes z pewnością ma swój własny yaml (jak pokazano w "wdrażanie aplikacji")

Ale jako " Docker Clustering Tools Compared: Kubernetes vs Docker Swarm ", nie został napisany (tylko) dla Dockera i ma swój własny system.

Możesz jednak użyć Docker-compose, aby uruchomić Kubernetes, jak pokazano w "vyshane/kid": to maskuje niektóre z kubectl polecenia cli w skryptach (które mogą być wersjonowane).
 7
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-16 07:30:47