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?
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:
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
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.
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/
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).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