Skip to content

Latest commit

 

History

History
96 lines (68 loc) · 4.56 KB

kubernetes.md

File metadata and controls

96 lines (68 loc) · 4.56 KB

Kubernetes

co to jest

Jest to open-source-owy system do automatyzacji wdrażania, skalowania i zarządzania skonteneryzowanych aplikacji. Podstawowe zalety:

  • automatic binpacking - automatycznie przydziela aplikacje(kontenery) na node-y klastra bazując na ich wymaganiach co do zasobów takich jak CPU, pamięć RAM oraz wielu innych.

  • self-healing - samoczynnie restartuje kontenery/aplikacje, które znajdą ulegają "wykrzaczeniu" :), przenosi kontenery który znajdowały się na node-ie, który został nieoczekiwanie zrestartowany bądź w inny sposób nie jest operacyjny, ubija kontenery/aplikacje które nie odpowiadają na wcześniej zdefiniowane health checki.

  • horizontal scaling - skaluje aplikacje horyzontalnie przy użyciu wiersza poleceń, graficznego interfejsu a nawet przy użyciu automatycznego autoscaler-a, który może bazować na zużyciu CPU, pamięci bądź ilości request-ów.

  • service discovery i load balancing - za pomocą wbudowanego serwera DNS oraz komponentów takich jak Service z łątwością loadbalansuje ruch pomiędzy kontenerami.

  • automatyczne rollout-y i rollback-i - Kubernetes umożliwia aktualizację aplikacji bez konieczności jej gaszenia, a jeżeli ta aktualizacja spowoduje jakieś nieprzewidywane problemy z uruchomieniem nowej wersji, Kubernetes automatycznie przywróci jej poprzedni stan.

  • zarządzanie store umożliwia automatyczne montowanie zasobów systemowych bez względu czy to jest zasób sieciowy, lokalny czy cloud-owy ( np. GCP, AWS, NFS, Gluster itp.)

podstawowa architektura

k8s basic architecture

komponenty klastra

master components

Komponenty mastera dostarczają elementy zarządzające całym klastrem, schedule-owanie, wykrywanie i odpowiadanie na zdarzenia pojawiające się w klastrze ( uruchamianie pod-ów kiedy ilość replik nie jest zgodna z definicją zawartą w manifeście ).

  • kube-apiserver - dostarcza API klastra. Jest front-endem dla większości komponentów klastra jak i innych plugin-ów. Dostarcza informacje na temat wszystkich obiektów znajdujących się w klastrze.

  • etcd - jest to baza danych Kubernetes-a gdzie są przetrzymywane dane na temat aktualne stanu całego klastra

  • kube-controller-manager - jest to zbiór procesów kontrolujących podstawowe elementy klastra:
    • node controller - sprawdza status node-ów i informuje o jego zmianach apiserver
    • replication controller - jest odpowiedzialny za utrzymywanie odpowiedniej ilości replik każdego replication controller-a w klastrze
    • endpoint controller - jest odpowiedzialny za prawidłowe łączenie ze sobą service-ów z podami bazując na labelk-ach
    • service account i token controllers - tworzy standardowe konta i tokeny dostępu do serwera API dla namespace-ów

  • kube-scheduler - jest odpowiedzialny za przypisywanie nowo utworzonych pod-ów do node-ów klastra

  • addons

    • DNS - umożliwia komunikację po nazwach FQDN wewnątrz klastra

    • heapster - zbiera metryki na temat kontenerów

    • dashboard - graficzcny interfejs do zarządzania klastrem

node components

  • kubelet - jest procesem działającym na każdym nodzie klastra i oczekuje informacji od schedulera na temat nowych podów. Do jego zadań należy:

    • montowanie volumen-ów do poda
    • pobieranie secret-ów poda
    • uruchomienia kontenera za pomocą zdefiniowanego środowiska uruchomieniowego dla kontenerów
    • wykonywanie tzw. livenessprobe-ów kontenerów
    • zwracanie informacji na temat statusu pod-ów oraz node-ów do klastra

  • kube-proxy - zapewnia łączność sieciową wewnątrz klastra. W przypadku korzystania z iptables-ów generuje odpowiednie wpisy w systemowych ipteblsach.