You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<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 <ahref="/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>
32
36
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>
34
38
<ul>
35
39
<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>
36
40
<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><NodeIP>:<NodePort></code>. Nadzbiór ClusterIP.</li>
@@ -71,8 +75,8 @@ <h3>Sewisy i Etykiety <em>(Labels)</em></h3>
<li>Klasyfikować obiekty przy użyciu znaczników</li>
73
77
</ul>
74
-
75
78
</div>
79
+
76
80
</div>
77
81
78
82
<br>
@@ -88,7 +92,84 @@ <h3>Sewisy i Etykiety <em>(Labels)</em></h3>
88
92
<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>
89
93
</div>
90
94
</div>
91
-
<br>
95
+
<divclass="row">
96
+
<divclass="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 <ahref="/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>
<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>
<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>
{{<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
+
<divclass="row">
129
+
<divclass="col-md-12">
130
+
<h3>Krok 2: Używanie etykiet</h3>
131
+
<divclass="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>
<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>
<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
+
<divclass="row">
152
+
<divclass="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>
<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
+
<divclass="row">
167
+
<p>
168
+
Gdy będziesz gotowy, przejdź do <ahref="/pl/docs/tutorials/kubernetes-basics/scale/scale-intro/" title="Uruchamianie wielu instancji Twojej aplikacji">Uruchamianie wielu instancji Twojej aplikacji</a>.
0 commit comments