Skip to content

Commit 5d91e08

Browse files
authored
Merge pull request #50549 from dkarczmarski/pl-sync-expose-intro-html
[pl] sync expose-intro.html with the latest EN version
2 parents 6d58a75 + 0fffcc9 commit 5d91e08

File tree

1 file changed

+85
-4
lines changed

1 file changed

+85
-4
lines changed

content/pl/docs/tutorials/kubernetes-basics/expose/expose-intro.html

Lines changed: 85 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
---
22
title: Jak używać Service do udostępniania aplikacji
33
weight: 10
4+
description: |-
5+
Dowiedz się, czym jest Service w Kubernetesie.
6+
Zrozum, jak etykiety (labels) i selektory (selectors) są powiązane z Service.
7+
Wystaw aplikację na zewnątrz klastra Kubernetesa.
48
---
59

610
<!DOCTYPE html>
@@ -18,7 +22,7 @@
1822
<h3>Cele</h3>
1923
<ul>
2024
<li>Poznać Serwis w Kubernetesie</li>
21-
<li>Zrozumieć, jak obiekty Label i LabelSelector są powiązane z Serwisem</li>
25+
<li>Zrozumieć, jak etykiety (labels) i selektory (selectors) są powiązane z Serwisem</li>
2226
<li>Udostępnić aplikację na zewnątrz klastra Kubernetes korzystając z Serwisu</li>
2327
</ul>
2428
</div>
@@ -30,7 +34,7 @@ <h3>Kubernetes Services - przegląd</h3>
3034

3135
<p>Serwis w Kubernetes jest abstrakcyjnym obiektem, która definiuje logiczny zbiór podów oraz politykę dostępu do nich. Serwisy pozwalają na swobodne łączenie zależnych podów. Serwis jest zdefiniowany w YAMLu <a href="/docs/concepts/configuration/overview/#general-configuration-tips">(zalecane)</a> lub w JSONie - tak, jak wszystkie obiekty Kubernetes. Zbiór podów, które obsługuje Serwis, jest zazwyczaj określany przez <i>LabelSelector</i> (poniżej opisane jest, w jakich przypadkach możesz potrzebować zdefiniować Serwis bez specyfikowania <code>selektora</code>).</p>
3236

33-
<p>Mimo, że każdy pod ma swój unikatowy adres IP, te adresy nie są dostępne poza klastrem, o ile nie zostaną wystawione za pomocą Serwisu. Serwis umożliwia aplikacji przyjmować ruch przychodzący. Serwisy mogą być wystawiane na zewnątrz na kilka różnych sposobów, poprzez określenie <code>typu</code> w ServiceSpec:</p>
37+
<p>Mimo, że każdy pod ma swój unikatowy adres IP, te adresy nie są dostępne poza klastrem, o ile nie zostaną wystawione za pomocą Serwisu. Serwis umożliwia aplikacji przyjmować ruch przychodzący. Serwisy mogą być wystawiane na zewnątrz na kilka różnych sposobów, poprzez określenie <code>typu</code> w ServiceSpec:</p>
3438
<ul>
3539
<li><i>ClusterIP</i> (domyślnie) - Wystawia serwis poprzez wewnętrzny adres IP w klastrze. W ten sposób serwis jest dostępny tylko wewnątrz klastra.</li>
3640
<li><i>NodePort</i> - Wystawia serwis na tym samym porcie na każdym z wybranych węzłów klastra przy pomocy NAT. W ten sposób serwis jest dostępny z zewnątrz klastra poprzez <code>&lt;NodeIP&gt;:&lt;NodePort&gt;</code>. Nadzbiór ClusterIP.</li>
@@ -71,8 +75,8 @@ <h3>Sewisy i Etykiety <em>(Labels)</em></h3>
7175
<li>Osadzać znaczniki <em>(tags)</em>określające wersje</li>
7276
<li>Klasyfikować obiekty przy użyciu znaczników</li>
7377
</ul>
74-
7578
</div>
79+
7680
</div>
7781

7882
<br>
@@ -88,7 +92,84 @@ <h3>Sewisy i Etykiety <em>(Labels)</em></h3>
8892
<p>Obiekty mogą być oznaczane etykietami w momencie tworzenia lub później. Etykiety mogą być zmienianie w dowolnej chwili. Udostępnijmy teraz naszą aplikację przy użyciu Serwisu i oznaczmy ją odpowiednimi etykietami.</p>
8993
</div>
9094
</div>
91-
<br>
95+
<div class="row">
96+
<div class="col-md-12">
97+
<h3>Krok 1: Tworzenie nowej Usługi</h3>
98+
<p>Sprawdźmy, czy nasza aplikacja działa. Użyjemy polecenia <code>kubectl get</code> i sprawdzimy istniejące Pody:</p>
99+
<p><code><b>kubectl get pods</b></code></p>
100+
<p>Jeśli żadne Pody nie działają, oznacza to, że obiekty z poprzednich samouczków zostały usunięte. W takim przypadku wróć i odtwórz wdrożenie z samouczka <a href="/docs/tutorials/kubernetes-basics/deploy-app/deploy-intro#deploy-an-app">Używanie kubectl do tworzenia Deploymentu</a>. Proszę poczekać kilka sekund i ponownie wylistować Pody. Możesz kontynuować, gdy zobaczysz działający jeden Pod.</p>
101+
<p>Następnie wymieńmy aktualne usługi z naszego klastra:</p>
102+
<p><code><b>kubectl get services</b></code></p>
103+
<p>Mamy usługę o nazwie <tt>kubernetes</tt>, która jest tworzona domyślnie, gdy minikube uruchamia klaster.
104+
Aby utworzyć nową usługę i udostępnić ją dla ruchu zewnętrznego, użyjemy polecenia expose z parametrem NodePort.</p>
105+
<p><code><b>kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080</b></code></p>
106+
<p>Uruchommy ponownie komendę <code>get services</code>:</p>
107+
<p><code><b>kubectl get services</b></code></p>
108+
<p>Mamy teraz działającą usługę o nazwie kubernetes-bootcamp. Tutaj widzimy, że usługa otrzymała unikalny cluster-IP, wewnętrzny port oraz zewnętrzny-IP (IP węzła).</p>
109+
<p>Aby dowiedzieć się, który port został otwarty zewnętrznie (dla <tt>type: NodePort</tt> usługi), uruchomimy komendę <code>describe service</code>:</p>
110+
<p><code><b>kubectl describe services/kubernetes-bootcamp</b></code></p>
111+
<p>Utwórz zmienną środowiskową o nazwie <tt>NODE_PORT</tt>, która ma wartość przypisanego portu węzła:</p>
112+
<p><code><b>export NODE_PORT="$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}')"</b></code><br />
113+
<code><b>echo "NODE_PORT=$NODE_PORT"</b></code></p>
114+
<p>Teraz możemy przetestować, czy aplikacja jest wystawiona poza klaster, używając <code>curl</code>, adresu IP węzła i zewnętrznie wystawionego portu:</p>
115+
<p><code><b>curl http://"$(minikube ip):$NODE_PORT"</b></code></p>
116+
{{< note >}}<p>Jeśli używasz minikube z Docker Desktop jako sterownik kontenerów, potrzebny jest tunel minikube. Dzieje się tak, ponieważ kontenery wewnątrz Docker Desktop są izolowane od twojego komputera głównego.<br>
117+
<p>W osobnym oknie terminala wykonaj:<br>
118+
<code><b>minikube service kubernetes-bootcamp --url</b></code></p>
119+
<p>Wyjście wygląda następująco:
120+
<pre><b>http://127.0.0.1:51082<br>! Ponieważ używasz sterownika Docker na systemie Darwin, terminal musi być otwarty, aby go uruchomić.</b></pre></p>
121+
<p>Następnie użyj podanego URL-a, aby uzyskać dostęp do aplikacji:<br>
122+
<code><b>curl 127.0.0.1:51082</b></code></p>
123+
{{< /note >}}
124+
<p>Otrzymaliśmy odpowiedź od serwera. Usługa jest wystawiona.</p>
125+
</div>
126+
</div>
127+
128+
<div class="row">
129+
<div class="col-md-12">
130+
<h3>Krok 2: Używanie etykiet</h3>
131+
<div class="content">
132+
<p>Deployment automatycznie utworzył etykietę dla naszego Poda. Za pomocą komendy <code>describe deployment</code> możesz zobaczyć nazwę (klucz) tej etykiety:</p>
133+
<p><code><b>kubectl describe deployment</b></code></p>
134+
<p>Użyjmy tej etykiety, aby zapytać o naszą listę Podów. Skorzystamy z polecenia <code>kubectl get pods</code> z parametrem <tt>-l</tt>, a następnie wartościami etykiet:</p>
135+
<p><code><b>kubectl get pods -l app=kubernetes-bootcamp</b></code></p>
136+
<p>Możesz zrobić to samo, aby wyświetlić istniejące Usługi:</p>
137+
<p><code><b>kubectl get services -l app=kubernetes-bootcamp</b></code></p>
138+
<p>Pobierz nazwę Pod i zapisz ją w zmiennej środowiskowej <tt>POD_NAME</tt>:</p>
139+
<p><code><b>export POD_NAME="$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')"</b></code><br />
140+
<code><b>echo "Name of the Pod: $POD_NAME"</b></code></p>
141+
<p>Aby zastosować nową etykietę, używamy komendy <code>label</code>, po której następuje typ obiektu, nazwa obiektu i nowa etykieta:</p>
142+
<p><code><b>kubectl label pods "$POD_NAME" version=v1</b></code></p>
143+
<p>To zastosuje nową etykietę do naszego poda (przypięliśmy wersję aplikacji do poda), a możemy to sprawdzić za pomocą polecenia describe pod:</p>
144+
<p><code><b>kubectl describe pods "$POD_NAME"</b></code></p>
145+
<p>Widzimy tutaj, że etykieta jest teraz przypisana do naszego Poda. Możemy teraz zapytać o listę podów, używając nowej etykiety:</p>
146+
<p><code><b>kubectl get pods -l version=v1</b></code></p>
147+
<p>I widzimy Pod.</p>
148+
</div>
149+
</div>
150+
151+
<div class="row">
152+
<div class="col-md-12">
153+
<h3>Krok 3: Usuwanie usługi</h3>
154+
<p>Aby usunąć Usługi, można użyć polecenia <code>delete service</code>. Etykiety mogą być również używane tutaj:</p>
155+
<p><code><b>kubectl delete service -l app=kubernetes-bootcamp</b></code></p>
156+
<p>Potwierdź, że usługa została usunięta:</p>
157+
<p><code><b>kubectl get services</b></code></p>
158+
<p>To potwierdza, że nasza usługa została usunięta. Aby upewnić się, że trasa nie jest już wystawiona, możesz użyć <tt>curl</tt> na wcześniej wystawionym adresie IP i porcie:</p>
159+
<p><code><b>curl http://"$(minikube ip):$NODE_PORT"</b></code></p>
160+
<p>To dowodzi, że aplikacja nie jest już dostępna z zewnątrz klastra.
161+
Możesz potwierdzić, że aplikacja nadal działa, wykonując <tt>curl</tt> z wewnątrz poda:</p>
162+
<p><code><b>kubectl exec -ti $POD_NAME -- curl http://localhost:8080</b></code></p>
163+
<p>Widzimy tutaj, że aplikacja jest uruchomiona. Dzieje się tak, ponieważ aplikacją zarządza Deployment. Aby wyłączyć aplikację, należy również usunąć Deployment.</p>
164+
</div>
165+
</div>
166+
<div class="row">
167+
<p>
168+
Gdy będziesz gotowy, przejdź do <a href="/pl/docs/tutorials/kubernetes-basics/scale/scale-intro/" title="Uruchamianie wielu instancji Twojej aplikacji">Uruchamianie wielu instancji Twojej aplikacji</a>.
169+
</p>
170+
</div>
171+
172+
</div>
92173
</main>
93174
</div>
94175

0 commit comments

Comments
 (0)