|
| 1 | +--- |
| 2 | +title: "Architektura klastra" |
| 3 | +weight: 30 |
| 4 | +description: > |
| 5 | + Podstawowe założenia architektury Kubernetesa. |
| 6 | +--- |
| 7 | + |
| 8 | +Klaster Kubernetesa składa się z warstwy sterowania oraz zestawu maszyn roboczych, zwanych węzłami, które |
| 9 | +uruchamiają konteneryzowane aplikacje. Każdy klaster potrzebuje co najmniej jednego węzła roboczego, aby obsługiwać Pody. |
| 10 | + |
| 11 | +Węzeł roboczy hostuje Pody, które są komponentami _workload_ aplikacji. Warstwa |
| 12 | +sterowania zarządza węzłami roboczymi oraz Podami w klastrze. W środowiskach |
| 13 | +produkcyjnych, warstwa sterowania zazwyczaj działa na wielu komputerach, a klaster |
| 14 | +zazwyczaj działa na wielu węzłach, zapewniając odporność na awarie i wysoką dostępność. |
| 15 | + |
| 16 | +Ten dokument opisuje różne komponenty, które musisz posiadać, aby mieć kompletny i działający klaster Kubernetesa. |
| 17 | + |
| 18 | +{{< figure src="/images/docs/kubernetes-cluster-architecture.svg" alt="Warstwa sterowania (kube-apiserver, etcd, kube-controller-manager, kube-scheduler) oraz kilka węzłów. Każdy węzeł uruchamia kubelet i kube-proxy." caption="Rysunek 1. Komponenty klastra Kubernetesa." class="diagram-large" >}} |
| 19 | + |
| 20 | +{{< details summary="About this architecture" >}} |
| 21 | +Diagram na Rysunku 1 przedstawia przykładową referencyjną architekturę klastra Kubernetesa. |
| 22 | +Rzeczywisty rozkład komponentów może różnić się w zależności od specyficznych konfiguracji klastra i wymagań. |
| 23 | + |
| 24 | +Na schemacie każdy węzeł uruchamia komponent [`kube-proxy`](#kube-proxy). |
| 25 | +Potrzebujesz komponentu sieciowego proxy na każdym węźle, aby |
| 26 | +zapewnić, że API {{< glossary_tooltip text="Service" term_id="service">}} i |
| 27 | +związane z nim zachowania są dostępne w sieci klastra. Niektóre wtyczki |
| 28 | +sieciowe jednak dostarczają własne, zewnętrzne implementacje proxy. Kiedy |
| 29 | +korzystasz z tego rodzaju wtyczki sieciowej, węzeł nie musi uruchamiać `kube-proxy`. |
| 30 | +{{< /details >}} |
| 31 | + |
| 32 | +## Komponenty warstwy sterowania {#control-plane-components} |
| 33 | + |
| 34 | +Komponenty warstwy sterowania podejmują globalne decyzje dotyczące klastra (na |
| 35 | +przykład harmonogramowanie), a także wykrywają i reagują na zdarzenia klastra (na |
| 36 | +przykład uruchamianie nowego {{< glossary_tooltip text="poda" term_id="pod">}} gdy nie |
| 37 | +zgadza się liczba `{{< glossary_tooltip text="replik" term_id="replica">}}` Deploymentu. |
| 38 | + |
| 39 | +Elementy warstwy sterowania mogą być uruchamiane na dowolnej maszynie w klastrze. Jednakże, dla uproszczenia, skrypty |
| 40 | +instalacyjne zazwyczaj uruchamiają wszystkie elementy warstwy sterowania na tej samej maszynie i nie uruchamiają kontenerów |
| 41 | +użytkownika na tej maszynie. Zobacz [Tworzenie klastrów o wysokiej dostępności za pomocą kubeadm](/docs/setup/production-environment/tools/kubeadm/high-availability/) |
| 42 | +dla przykładowej konfiguracji warstwy sterowania, która działa na wielu maszynach. |
| 43 | + |
| 44 | +### kube-apiserver {#kube-apiserver} |
| 45 | + |
| 46 | +{{< glossary_definition term_id="kube-apiserver" length="all" >}} |
| 47 | + |
| 48 | +### etcd {#etcd} |
| 49 | + |
| 50 | +{{< glossary_definition term_id="etcd" length="all" >}} |
| 51 | + |
| 52 | +### kube-scheduler {#kube-scheduler} |
| 53 | + |
| 54 | +{{< glossary_definition term_id="kube-scheduler" length="all" >}} |
| 55 | + |
| 56 | +### kube-controller-manager {#kube-controller-manager} |
| 57 | + |
| 58 | +{{< glossary_definition term_id="kube-controller-manager" length="all" >}} |
| 59 | + |
| 60 | +Istnieje wiele różnych typów kontrolerów. Niektóre z nich to: |
| 61 | + |
| 62 | +- Kontroler węzłów (ang. Node controller): Odpowiada za zauważanie i reagowanie, gdy węzły przestają działać. |
| 63 | +- Kontroler zadania (ang. Job controller): Monitoruje obiekty zadania (Job), które reprezentują jednorazowe zadania, a następnie tworzy Pody, aby wykonały te zadania do końca. |
| 64 | +- Kontroler EndpointSlice: Uzupełnia obiekty EndpointSlice (aby zapewnić połączenie między Services a Pods). |
| 65 | +- Kontroler ServiceAccount: Tworzenie domyślnych obiektów ServiceAccount dla nowych przestrzeni nazw. |
| 66 | + |
| 67 | +Powyższa lista nie jest wyczerpującą. |
| 68 | + |
| 69 | +### cloud-controller-manager {#cloud-controller-manager} |
| 70 | + |
| 71 | +{{< glossary_definition term_id="cloud-controller-manager" length="short" >}} |
| 72 | + |
| 73 | +Manager 'cloud-controller' uruchamia tylko kontrolery specyficzne dla dostawcy |
| 74 | +chmury. Jeśli uruchamiasz Kubernetesa w swojej siedzibie lub w środowisku do |
| 75 | +nauki na swoim komputerze osobistym, klaster nie posiada managera 'cloud-controller'. |
| 76 | + |
| 77 | +Podobnie jak kube-controller-manager, cloud-controller-manager łączy kilka logicznie niezależnych |
| 78 | +pętli kontrolnych w jedną binarkę, którą uruchamiasz jako pojedynczy proces. Możesz go skalować |
| 79 | +horyzontalnie (uruchamiając więcej niż jedną kopię), aby poprawić wydajność lub pomóc w tolerowaniu awarii. |
| 80 | + |
| 81 | +Następujące kontrolery mogą mieć zależności od dostawcy chmury: |
| 82 | + |
| 83 | +- Kontroler węzłów (ang. Node controller): Do sprawdzania dostawcy chmury w |
| 84 | + celu ustalenia, czy węzeł został usunięty w chmurze po tym, jak przestaje odpowiadać. |
| 85 | +- Kontroler tras (ang. Route controller): Do konfiguracji tras w podstawowej infrastrukturze chmurowej. |
| 86 | +- Kontroler usługi (ang. Service controller): Do tworzenia, aktualizowania i usuwania load balancerów dostawcy chmury. |
| 87 | + |
| 88 | +--- |
| 89 | + |
| 90 | +## Komponenty węzła {#node-components} |
| 91 | + |
| 92 | +Komponenty węzła działają na każdym węźle, utrzymując działające pody i zapewniając środowisko wykonawcze Kubernetesa. |
| 93 | + |
| 94 | +### kubelet {#kubelet} |
| 95 | + |
| 96 | +{{< glossary_definition term_id="kubelet" length="all" >}} |
| 97 | + |
| 98 | +### `kube-proxy` (opcjonalne) {#kube-proxy} |
| 99 | + |
| 100 | +{{< glossary_definition term_id="kube-proxy" length="all" >}} Jeśli |
| 101 | +używasz [wtyczki sieciowej](#network-plugins), która samodzielnie |
| 102 | +implementuje przekazywanie pakietów dla Usług i zapewnia równoważne działanie |
| 103 | +do kube-proxy, to nie musisz uruchamiać kube-proxy na węzłach w swoim klastrze. |
| 104 | + |
| 105 | +### Środowisko uruchomieniowe kontenera {#container-runtime} |
| 106 | + |
| 107 | +{{< glossary_definition term_id="container-runtime" length="all" >}} |
| 108 | + |
| 109 | +## Dodatki {#addons} |
| 110 | + |
| 111 | +Dodatki (ang. Addons) wykorzystują zasoby Kubernetesa |
| 112 | +({{< glossary_tooltip term_id="daemonset" >}}, {{< glossary_tooltip term_id="deployment" >}}, |
| 113 | +itp.) do wdrażania funkcji klastra. Ponieważ zapewniają one |
| 114 | +funkcje na poziomie klastra, zasoby te należą do przestrzeni nazw `kube-system`. |
| 115 | + |
| 116 | +Wybrane dodatki są opisane poniżej; aby uzyskać rozszerzoną listę |
| 117 | +dostępnych dodatków, zobacz [Dodatki](/docs/concepts/cluster-administration/addons/). |
| 118 | + |
| 119 | +### DNS {#dns} |
| 120 | + |
| 121 | +Podczas gdy inne dodatki nie są ściśle wymagane, wszystkie klastry Kubernetes powinny mieć |
| 122 | +[DNS klastra](/docs/concepts/services-networking/dns-pod-service/), ponieważ wiele elementów na nim polega. |
| 123 | + |
| 124 | +Cluster DNS to serwer DNS, będący uzupełnieniem dla innych serwerów |
| 125 | +DNS w Twoim środowisku, który obsługuje rekordy DNS dla usług Kubernetes. |
| 126 | + |
| 127 | +Kontenery uruchamiane przez Kubernetesa automatycznie uwzględniają ten serwer DNS w swoich wyszukiwaniach DNS. |
| 128 | + |
| 129 | +### Interfejs Web UI (Dashboard) {#web-ui-dashboard} |
| 130 | + |
| 131 | +[Dashboard](/docs/tasks/access-application-cluster/web-ui-dashboard/) to uniwersalny interfejs |
| 132 | +internetowy dla klastrów Kubernetesa. Umożliwia użytkownikom zarządzanie |
| 133 | +i rozwiązywanie problemów z aplikacjami działającymi w klastrze, a także samym klastrem. |
| 134 | + |
| 135 | +### Monitorowanie zasobów kontenerów {#container-resource-monitoring} |
| 136 | + |
| 137 | +[Monitorowanie Zasobów Kontenera](/docs/tasks/debug/debug-cluster/resource-usage-monitoring/) rejestruje ogólne |
| 138 | +metryki dotyczące kontenerów w centralnej bazie danych i udostępnia interfejs użytkownika do przeglądania tych danych. |
| 139 | + |
| 140 | +### Rejestrowanie na poziomie klastra {#cluster-level-logging} |
| 141 | + |
| 142 | +Mechanizm [logowania na poziomie klastra](/docs/concepts/cluster-administration/logging/) jest |
| 143 | +odpowiedzialny za zapisywanie logów z kontenerów w centralnym magazynie logów z interfejsem do przeszukiwania/przeglądania. |
| 144 | + |
| 145 | +### Wtyczki sieciowe {#network-plugins} |
| 146 | + |
| 147 | +[Wtyczki sieciowe](/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins) |
| 148 | +są komponentami oprogramowania, które implementują |
| 149 | +specyfikację interfejsu sieciowego kontenera (CNI). Są odpowiedzialne za |
| 150 | +przydzielanie adresów IP do podów i umożliwianie im komunikacji między sobą w klastrze. |
| 151 | + |
| 152 | +## Warianty architektury {#architecture-variations} |
| 153 | + |
| 154 | +Podczas gdy podstawowe komponenty Kubernetesa pozostają niezmienne, sposób ich |
| 155 | +wdrażania i zarządzania może się różnić. Zrozumienie tych wariacji jest kluczowe dla |
| 156 | +projektowania i utrzymania klastrów Kubernetesa, które spełniają określone potrzeby operacyjne. |
| 157 | + |
| 158 | +### Opcje wdrażania warstwy sterowania {#control-plane-deployment-options} |
| 159 | + |
| 160 | +Komponenty warstwy sterowania mogą być wdrażane na kilka sposobów: |
| 161 | + |
| 162 | +Tradycyjna implementacja: : Komponenty warstwy sterowania działają bezpośrednio na |
| 163 | +dedykowanych maszynach lub maszynach wirtualnych (VM), często zarządzane jako usługi systemd. |
| 164 | + |
| 165 | +Statyczne Pody: : Komponenty warstwy sterowania są wdrażane jako |
| 166 | +statyczne Pody, zarządzane przez kubelet na określonych węzłach. |
| 167 | +Jest to powszechne podejście stosowane przez narzędzia takie jak kubeadm. |
| 168 | + |
| 169 | +Samodzielnie hostowane : Warstwa sterowania działa jako Pody |
| 170 | +wewnątrz samego klastra Kubernetes, zarządzane |
| 171 | +przez Deploymenty i StatefulSety lub inne obiekty Kubernetesa. |
| 172 | + |
| 173 | +Zarządzane usługi Kubernetesa: Dostawcy usług chmurowych zazwyczaj |
| 174 | +ukrywają warstwę kontrolną, zarządzając jej elementami w ramach swoich usług. |
| 175 | + |
| 176 | +### Rozważania dotyczące umieszczania workloadów {#workload-placement-considerations} |
| 177 | + |
| 178 | +Umiejscowienie workloadów, w tym komponentów warstwy sterowania, może różnić się w |
| 179 | +zależności od wielkości klastra, wymagań dotyczących wydajności i polityk operacyjnych: |
| 180 | + |
| 181 | +- W mniejszych klastrach lub klastrach deweloperskich, komponenty warstwy sterowania i workloady użytkowników mogą działać na tych samych węzłach. |
| 182 | +- Większe klastry produkcyjne często dedykują określone węzły dla |
| 183 | + komponentów warstwy sterowania, oddzielając je od workloadów użytkowników. |
| 184 | +- Niektóre organizacje uruchamiają krytyczne dodatki lub narzędzia monitorujące na węzłach warstwy sterowania. |
| 185 | + |
| 186 | +### Narzędzia do zarządzania klastrem {#cluster-management-tools} |
| 187 | + |
| 188 | +Narzędzia takie jak kubeadm, kops i Kubespray oferują różne podejścia do wdrażania i |
| 189 | +zarządzania klastrami, z których każde ma własną metodę rozmieszczenia i zarządzania komponentami. |
| 190 | + |
| 191 | +Elastyczność architektury Kubernetesa umożliwia organizacjom dostosowanie ich klastrów do |
| 192 | +specyficznych potrzeb, balansując czynniki takie jak złożoność operacyjna, wydajność i narzut na zarządzanie. |
| 193 | + |
| 194 | +### Dostosowywanie i rozszerzalność {#customization-and-extensibility} |
| 195 | + |
| 196 | +Architektura Kubernetesa pozwala na szeroką konfigurację: |
| 197 | + |
| 198 | +- Niestandardowe schedulery mogą być wdrażane do pracy wraz z domyślnym schedulerem Kubernetesa lub aby całkowicie go zastąpić. |
| 199 | +- Serwery API mogą być rozszerzane za pomocą CustomResourceDefinitions i agregacji API. |
| 200 | +- Dostawcy chmury mogą mocno integrować się z Kubernetesem używając `cloud-controller-manager`. |
| 201 | + |
| 202 | +Elastyczność architektury Kubernetesa umożliwia organizacjom dostosowanie ich klastrów do |
| 203 | +specyficznych potrzeb, balansując czynniki takie jak złożoność operacyjna, wydajność i narzut na zarządzanie. |
| 204 | + |
| 205 | +## {{% heading "whatsnext" %}} |
| 206 | + |
| 207 | +Dowiedz się więcej na temat: |
| 208 | + |
| 209 | +- [Węzły](/docs/concepts/architecture/nodes/) i |
| 210 | + [ich komunikacja](/docs/concepts/architecture/control-plane-node-communication/) z |
| 211 | + warstwą sterowania. |
| 212 | +- [Kontrolery Kubernetesa](/docs/concepts/architecture/controller/). |
| 213 | +- [kube-scheduler](/docs/concepts/scheduling-eviction/kube-scheduler/), czyli domyślny scheduler dla Kubernetesa. |
| 214 | +- Oficjalna [dokumentacja](https://etcd.io/docs/) Etcd. |
| 215 | +- Wiele [środowisk uruchomieniowych kontenerów](/docs/setup/production-environment/container-runtimes/) w Kubernetesie. |
| 216 | +- Integracja z dostawcami chmury za pomocą [cloud-controller-manager](/docs/concepts/architecture/cloud-controller/). |
| 217 | +- Polecenia [kubectl](/docs/reference/generated/kubectl/kubectl-commands). |
0 commit comments