2016-12-25 17 views
28

I zostały tworzenie strąków z type:deployment ale widzę, że część dokumentacji używa type:pod dokładniej the documentation for multi-container pods:W kubernetes jaka jest różnica między poda i wdrożenia?

apiVersion: v1 
kind: Pod 
metadata: 
    name: "" 
    labels: 
    name: "" 
    namespace: "" 
    annotations: [] 
    generateName: "" 
spec: 
    ? "// See 'The spec schema' for details." 
    : ~ 

Jednak, aby stworzyć strąków mogę po prostu użyć a deployment type:

apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: "" 
spec: 
    replicas: 3 
    template: 
    metadata: 
     labels: 
     app: "" 
    spec: 
     containers: 
     etc 

zauważyłem kapsułę dokumentacja mówi:

Komendy create można użyć do bezpośredniego utworzenia bloku, lub może utworzyć pod lub pod przez wdrożenie. Jest wysoce zalecane, aby używać Deployment do tworzenia strąków. Monitoruje on nieudane strąki i będzie uruchamiał nowe strąki zgodnie z wymaganiami, aby utrzymać określony numer . Jeśli nie chcesz, aby Deployment monitorował twój pod (np. Twój strąk zapisuje nietrwałe dane, które nie przetrwają restartu, lub Twój podoczek ma być bardzo krótki), możesz utworzyć strąk bezpośrednio za pomocą polecenia create.

Uwaga: Zalecamy użycie stanowiska do tworzenia strąków. Powinieneś użyć poniższych instrukcji tylko, jeśli nie chcesz tworzyć wdrożenia.

Ale to rodzi pytanie, co jest dobre dla kind:pod? Czy potrafisz w jakiś sposób odwołać się do pods w instalacji? Nie widziałem sposobu. Wygląda na to, że w przypadku pods jest kilka dodatkowych metadanych, ale nie ma żadnych opcji wdrażania, takich jak replica lub zasady restartowania. Co jest dobrego w kapsule, która nie utrzymuje danych, przetrwa restart? Myślę, że byłbym w stanie stworzyć wieloskładnikowy pod także z wdrożeniem.

Odpowiedz

32

Zarówno Pod jak i Deployment są pełnoprawnymi obiektami w API Kubernetes. Deployment zarządza tworzeniem kapsuł za pomocą ReplicaSets. Sprowadza się to do tego, że Deployment utworzy kapsuły ze specyfikacją pobraną z szablonu. Jest raczej mało prawdopodobne, aby kiedykolwiek trzeba było tworzyć kapsuły bezpośrednio w przypadku użycia produkcyjnego.

+0

Dziękuję, ale jeśli byś kiedykolwiek bezpośrednio tworzyć pods? –

+2

Posiadanie niestandardowego kontrolera to taki przypadek, w którym prawdopodobnie chcesz bezpośrednio tworzyć i zarządzać strąkami, zamiast korzystać z jednej z abstrakcji wyższego poziomu. –

+3

@BjornTipling Tworzę strąki bez wdrażania, gdy nie potrzebuję kernernetes do ponownego utworzenia strąków po usunięciu. Jednym z przypadków użycia jest przetestowanie różnych rzeczy przez utworzenie w pierwszej kolejności kapsuły. – user2526795

15

odpowiedź Radka jest bardzo dobra, ale chciałbym, aby rozbić z mojego doświadczenia, to prawie nigdy nie używać obiekt z rodzajstrąka, bo to nie ma żadnego sensu w praktyce.

Bo trzeba się wdrażania przedmiot - lub innych obiektów API Kubernetes jak kontroler replikacji lub replicaset - który musi zachować repliki (strąków) alive (to rodzaj punktu używając kubernetes).

Co będzie można wykorzystać w praktyce w przypadku typowego zastosowania są:

  1. obiekt Wdrożenie (gdzie można określić aplikacje kontener/kontenerach), które odbędzie swój pojemnik aplikacje z innymi specyfikacjami.

  2. przedmiot usługi (czyli jak grupowania obiektów i nadaje mu tzw wirtualnego IP (klaster IP) dla strąków, które mają pewną etykietę - a te strąki są w zasadzie pojemniki aplikacji, które rozmieszczone z byłego obiektu wdrażania ).

Trzeba mieć obiekt serwis, ponieważ strąki z obiektu rozmieszczania może zostać zabity, skalowane w górę iw dół, i nie można polegać na ich adresy IP, ponieważ nie będą one trwały .

Potrzebujesz więc obiektu takiego jak service, który zapewnia tym stradom stabilne IP.

Chciałem tylko podać kontekst wokół strąków, aby wiedzieć, jak działają razem.

nadzieja, że ​​czyści kilka rzeczy dla ciebie, nie tak dawno temu byłem w butach :)

+0

Dobra odpowiedź, czy potrzebujemy replikiSet lub kontrolera ReplicationController, ponieważ uważałem, że obiekt Deployment owija obiekty kontrolujące repliki? –

+0

tak, obiekt Deployment obsługuje repicaset, ale można również użyć obiektu z tym rodzajem: ReplicationController lub kind: ReplicaSet na własną rękę, jeśli naprawdę tego chcesz, ale nie widziałem tego w praktyce ... –

Powiązane problemy