{"id":29370,"date":"2024-11-04T05:00:00","date_gmt":"2024-11-04T04:00:00","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=29370"},"modified":"2024-10-29T15:23:11","modified_gmt":"2024-10-29T14:23:11","slug":"konfiguracje-kubernetes-ktore-warto-znac-w-2024-roku","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/konfiguracje-kubernetes-ktore-warto-znac-w-2024-roku\/","title":{"rendered":"Konfiguracje Kubernetes, kt\u00f3re warto zna\u0107 w 2024 roku"},"content":{"rendered":"\n<p>Kubernetes wci\u0105\u017c jest liderem w orkiestracji kontener\u00f3w. Opanowanie jego mechanizm\u00f3w i mo\u017cliwo\u015bci, jakie oferuje, staje si\u0119 niezb\u0119dne nie tylko dla profesjonalist\u00f3w DevOps, ale tak\u017ce dla zwyk\u0142ych programist\u00f3w, poniewa\u017c spotykamy si\u0119 z nim w ka\u017cdym projekcie na rynku. Ponadto, we wszystkich ofertach pracy mo\u017cna zauwa\u017cy\u0107, \u017ce znajomo\u015b\u0107 tej technologii jest mile widziana.<\/p>\n\n\n\n<p>W 2024 roku niekt\u00f3re konfiguracje Kubernetes wyr\u00f3\u017cniaj\u0105 si\u0119 na tle innych ze wzgl\u0119du na swoj\u0105 funkcjonalno\u015b\u0107 w zakresie automatyzacji i bezpiecze\u0144stwa, a tak\u017ce poprawy wydajno\u015bci w \u015brodowiskach natywnych w chmurze. Artyku\u0142 bada <strong>kluczowe konfiguracje Kubernetes<\/strong> wraz ze <strong>scenariuszami zastosowania, korzy\u015bciami i przyk\u0142adami kodu, <\/strong>oferuj\u0105c dog\u0142\u0119bne spojrzenie na ka\u017cd\u0105 z nich.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u017b\u0105dania i ograniczenia zasob\u00f3w<\/strong><\/h2>\n\n\n\n<p>W Kubernetes zrozumienie i poprawna konfiguracja \u017c\u0105danych zasob\u00f3w oraz ogranicze\u0144 zasob\u00f3w s\u0105 kluczowe. \u017b\u0105dania i ograniczenia zapewniaj\u0105, \u017ce aplikacje otrzymuj\u0105 niezb\u0119dne zasoby do dzia\u0142ania, jednocze\u015bnie zapobiegaj\u0105c monopolizacji wszystkich zasob\u00f3w klastra przez jedn\u0105 aplikacj\u0119.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\napiVersion: v1 \nkind: Pod \nmetadata: \nname: sample-app \nspec: \ncontainers: \n- name: app-container \n image: nginx \n resources: \n requests: \n memory: &quot;64Mi&quot; \n cpu: &quot;250m&quot; \n limits:\n memory: &quot;128Mi&quot; \n cpu: &quot;500m&quot; \n<\/pre><\/div>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cele<\/strong>: Zwi\u0119kszenie stabilno\u015bci i wydajno\u015bci poszczeg\u00f3lnych aplikacji oraz ca\u0142ego klastra. Zapobieganie konkurencji o zasoby i zapewnienie, \u017ce aplikacje nie zostan\u0105 niespodziewanie zako\u0144czone z powodu braku zasob\u00f3w.<\/li>\n\n\n\n<li><strong>Kiedy stosowa\u0107<\/strong>: Konfiguracja \u017c\u0105da\u0144 i ogranicze\u0144 jest konieczna dla wszystkich aplikacji dzia\u0142aj\u0105cych w klastrze (obci\u0105\u017cenia). Prawid\u0142owa konfiguracja zapewnia przewidywaln\u0105 wydajno\u015b\u0107 i zapobiega nadmiernemu zu\u017cywaniu du\u017cej ilo\u015bci zasob\u00f3w przez jedn\u0105 aplikacj\u0119, co wp\u0142ywa na stabilno\u015b\u0107 ca\u0142ego klastra.<\/li>\n\n\n\n<li><strong>Dokumentacja<\/strong>: <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/configuration\/manage-resources-containers\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >Resource Management for Modules\u00a0 and Containers.<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Liveness and readiness probe<\/strong><\/h2>\n\n\n\n<p>Konfiguracja pr\u00f3b liveness i readiness jest niezwykle wa\u017cna dla zarz\u0105dzania cyklem \u017cycia aplikacji w Kubernetes. Pomaga podejmowa\u0107 decyzje o tym, kiedy nale\u017cy zrestartowa\u0107 kontener na podstawie konfiguracji liveness oraz kiedy kontener jest gotowy do obs\u0142ugi ruchu na podstawie konfiguracji readiness.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nlivenessProbe: \nhttpGet: \n path: \/health \n port: 8080 \ninitialDelaySeconds: 3 \nperiodSeconds: 3 \nreadinessProbe: \nhttpGet: \n path: \/ready \n port: 8080 \ninitialDelaySeconds: 5 \nperiodSeconds: 5 \n<\/pre><\/div>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cele:<\/strong> Zwi\u0119kszenie odporno\u015bci na b\u0142\u0119dy i dost\u0119pno\u015bci aplikacji poprzez zapewnienie, \u017ce Kubernetes mo\u017ce automatycznie zarz\u0105dza\u0107 stanem kontener\u00f3w na podstawie rzeczywistego statusu operacyjnego aplikacji, zamiast polega\u0107 na stanie czasu dzia\u0142ania kontenera.<\/li>\n\n\n\n<li><strong>Kiedy stosowa\u0107:<\/strong> Konfiguracja pr\u00f3b liveness jest konieczna dla aplikacji, w kt\u00f3rych maksymalna dost\u0119pno\u015b\u0107 i minimalny czas przestoju s\u0105 kluczowe. Konfiguracja pr\u00f3b readiness jest wymagana dla aplikacji, kt\u00f3re powinny otrzymywa\u0107 ruch dopiero po ca\u0142kowitej inicjalizacji i potwierdzeniu gotowo\u015bci do obs\u0142ugi \u017c\u0105da\u0144.<\/li>\n\n\n\n<li><strong>Dokumentacja<\/strong>: <a aria-label=\" (opens in a new tab)\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/configure-pod-container\/configure-liveness-readiness-startup-probes\/\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >Configure Liveness, Readiness <\/a>i<a aria-label=\" (opens in a new tab)\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/configure-pod-container\/configure-liveness-readiness-startup-probes\/\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" > Startup Probes<\/a>. <a href=\"https:\/\/kubernetes.io\/docs\/tasks\/configure-pod-container\/configure-liveness-readiness-startup-probes\/\" rel=\"nofollow\" ><\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Mapy konfiguracyjne i sekrety<\/strong><\/h2>\n\n\n\n<p>Mapy konfiguracyjne i sekrety s\u0105 niezb\u0119dne do przechowywania parametr\u00f3w konfiguracyjnych oraz danych poufnych poza kodem aplikacji. Umo\u017cliwiaj\u0105 przechowywanie otwartych danych w formacie klucz-warto\u015b\u0107, podczas gdy sekrety s\u0142u\u017c\u0105 do przechowywania informacji poufnych.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\napiVersion: v1 \nkind: ConfigMap \nmetadata: \nname: app-config \ndata: \nconfig.json: | \n { \n &quot;database&quot;: &quot;sql&quot;, \n &quot;timeout&quot;: &quot;30s&quot;, \n &quot;featureFlag&quot;: &quot;true&quot; \n } \n--- \napiVersion: v1 \nkind: Secret \nmetadata: \nname: app-secret \ntype: Opaque \ndata: \npassword: cGFzc3dvcmQ=\n<\/pre><\/div>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cele:<\/strong> Oddzielenie parametr\u00f3w konfiguracyjnych i sekret\u00f3w od logiki aplikacji, co upraszcza wdra\u017canie i zarz\u0105dzanie aplikacjami w r\u00f3\u017cnych \u015brodowiskach, a tak\u017ce zwi\u0119ksza poziom bezpiecze\u0144stwa.<\/li>\n\n\n\n<li><strong>Kiedy stosowa\u0107:<\/strong> Mapy konfiguracyjne s\u0105 u\u017cywane do definiowania parametr\u00f3w aplikacji, kt\u00f3re zmieniaj\u0105 si\u0119 w zale\u017cno\u015bci od \u015brodowiska (dev, cert, produkcja). Sekrety s\u0105 u\u017cywane do przechowywania po\u015bwiadcze\u0144, token\u00f3w i innych informacji wra\u017cliwych.<\/li>\n\n\n\n<li><strong>Dokumentacja<\/strong>: <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/configuration\/configmap\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >ConfigMaps<\/a>, <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/configuration\/secret\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >Secrets<\/a>.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Horizontal Pod Autoscaler<\/strong><\/h2>\n\n\n\n<p>Horizontal Pod Autoscaler (HPA) automatycznie dostosowuje liczb\u0119 replik pod\u00f3w w Deployment, ReplicaSet lub StatefulSet na podstawie wykorzystania CPU lub metryk niestandardowych.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\napiVersion: autoscaling\/v1 \nkind: HorizontalPodAutoscaler \nmetadata: \nname: sample-app-hpa \nspec: \nscaleTargetRef: \n apiVersion: apps\/v1 \n kind: Deployment \n name: sample-app \nminReplicas: 1 \nmaxReplicas: 10 \ntargetCPUUtilizationPercentage: 80 \n<\/pre><\/div>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cele:<\/strong> Zapewnienie gwarantowanego poziomego skalowania na podstawie bie\u017c\u0105cego obci\u0105\u017cenia, optymalne wykorzystanie zasob\u00f3w oraz utrzymanie wydajno\u015bci.<\/li>\n\n\n\n<li><strong>Kiedy stosowa\u0107:<\/strong> Konfiguracja poziomego autoskalowania jest idealna dla aplikacji o zmiennym ruchu. Umo\u017cliwia dynamiczn\u0105 alokacj\u0119 zasob\u00f3w w zale\u017cno\u015bci od zapotrzebowania bez interwencji r\u0119cznej.<\/li>\n\n\n\n<li><strong>Dokumentacja<\/strong>: <a href=\"https:\/\/kubernetes.io\/docs\/tasks\/run-application\/horizontal-pod-autoscale\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >Horizontal Pod Autoscaling<\/a>.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Polityki sieciowe<\/strong><\/h2>\n\n\n\n<p>Polityki sieciowe to zasoby Kubernetes, kt\u00f3re kontroluj\u0105 przep\u0142yw ruchu mi\u0119dzy podami a punktami ko\u0144cowymi sieci, umo\u017cliwiaj\u0105c mikrosegmentacj\u0119 i zwi\u0119kszaj\u0105c bezpiecze\u0144stwo aplikacji w Kubernetes.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\napiVersion: networking.k8s.io\/v1 \nkind: NetworkPolicy \nmetadata: \nname: default-deny-all \nspec: \npodSelector: {} \npolicyTypes: \n- Ingress \n- Egress \n<\/pre><\/div>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cele:<\/strong> Zapewnienie bezpiecze\u0144stwa wymiany danych mi\u0119dzy podami w obr\u0119bie klastra Kubernetes \u2013 zezwalanie tylko na autoryzowany ruch mi\u0119dzy modu\u0142ami lub us\u0142ugami zewn\u0119trznymi.<\/li>\n\n\n\n<li><strong>Kiedy stosowa\u0107:<\/strong> Konfiguracja polityk sieciowych jest szczeg\u00f3lnie przydatna w \u015brodowiskach wielodost\u0119pnych lub aplikacjach o wysokich wymaganiach bezpiecze\u0144stwa, aby zapobiega\u0107 nieautoryzowanemu dost\u0119powi i ogranicza\u0107 potencjalne wektory atak\u00f3w.<\/li>\n\n\n\n<li><strong>Dokumentacja<\/strong>: <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/network-policies\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >Network Policies<\/a><a href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/network-policies\/\" rel=\"nofollow\" >.<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Konta serwisowe<\/strong><\/h2>\n\n\n\n<p>Konta serwisowe w Kubernetes s\u0142u\u017c\u0105 do identyfikacji pod\u00f3w podczas interakcji z API Kubernetes i innymi us\u0142ugami (zasobami) w obr\u0119bie klastra. S\u0105 kluczowe dla zarz\u0105dzania dost\u0119pem i zapewnienia bezpiecznej komunikacji mi\u0119dzy us\u0142ugami.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\napiVersion: v1 \nkind: ServiceAccount \nmetadata: \nname: my-service-account\nnamespace: default \n<\/pre><\/div>\n\n\n<p>U\u017cycie konta serwisowego w podzie:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\napiVersion: v1 \nkind: Pod \nmetadata: \nname: my-pod \nspec: \ncontainers: \n- name: my-container \n image: my-image \nserviceAccountName: my-service-account \n<\/pre><\/div>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cele:<\/strong> Przypisanie kont serwisowych do pod\u00f3w umo\u017cliwia szczeg\u00f3\u0142ow\u0105 kontrol\u0119 dost\u0119pu i audyt. Konta serwisowe s\u0105 r\u00f3wnie\u017c niezb\u0119dne do przyznawania dost\u0119pu do API Kubernetes i innych zasob\u00f3w klastra.<\/li>\n\n\n\n<li><strong>Kiedy stosowa\u0107:<\/strong> Konta serwisowe s\u0105 u\u017cywane podczas wdra\u017cania aplikacji, kt\u00f3re musz\u0105 integrowa\u0107 z API Kubernetes lub autoryzowa\u0107 si\u0119 w innych us\u0142ugach w obr\u0119bie klastra. Mog\u0105 to by\u0107 zadania automatyzacyjne lub mikroserwisy wymagaj\u0105ce okre\u015blonych uprawnie\u0144.<\/li>\n\n\n\n<li><strong>Dokumentacja<\/strong>:<a href=\"https:\/\/kubernetes.io\/docs\/tasks\/configure-pod-container\/configure-service-account\/\" rel=\"nofollow\" > <\/a><a href=\"https:\/\/kubernetes.io\/docs\/tasks\/configure-pod-container\/configure-service-account\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >Configure Service Accounts for Pods<\/a>.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Ingress i kontrolery Ingress<\/strong><\/h2>\n\n\n\n<p>Zasoby Ingress i kontrolery Ingress zarz\u0105dzaj\u0105 dost\u0119pem zewn\u0119trznym do us\u0142ug w klastrze, korzystaj\u0105c zazwyczaj z protoko\u0142u HTTP. Umo\u017cliwiaj\u0105 definiowanie regu\u0142 routingu ruchu dla r\u00f3\u017cnych us\u0142ug.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\napiVersion: networking.k8s.io\/v1 \nkind: Ingress \nmetadata: \nname: example-ingress \nspec: \nrules: \n- host: www.example.com \n http: \n paths: \n - path: \/ \n pathType: Prefix \n backend: \n service: \n name: example-service \n port: \n number: 80 \n<\/pre><\/div>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cele:<\/strong> Zapewnienie scentralizowanej, skalowalnej i bezpiecznej metody zarz\u0105dzania dost\u0119pem do us\u0142ug Kubernetes z zewn\u0105trz klastra.<\/li>\n\n\n\n<li><strong>Kiedy stosowa\u0107<\/strong>: Kontrolery Ingress i zasoby Ingress s\u0105 niezb\u0119dne dla ka\u017cdej aplikacji, kt\u00f3ra wymaga kontrolowanego dost\u0119pu zewn\u0119trznego do klastra Kubernetes. S\u0105 szczeg\u00f3lnie istotne przy zarz\u0105dzaniu wieloma us\u0142ugami lub wdra\u017caniu routingu opartego na URL.<\/li>\n\n\n\n<li><strong>Dokumentacja<\/strong>: <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/ingress\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >Ingress<\/a>,<a href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/ingress-controllers\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" > Ingress Controllers<\/a>.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Persistent Volumes<\/strong><\/h2>\n\n\n\n<p>Persistent Volumes (PV) oraz Persistent Volume Claims (PVC) s\u0105 wygodnymi narz\u0119dziami w Kubernetes do zarz\u0105dzania pami\u0119ci\u0105, abstrahuj\u0105c szczeg\u00f3\u0142y dotycz\u0105ce przechowywania i manipulacji danymi.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\napiVersion: v1 \nkind: PersistentVolume \nmetadata: \nname: example-pv \nspec: \ncapacity: \n storage: 10Gi \naccessModes: \n - ReadWriteOnce \nnfs: \n path: \/path\/to\/data \n server: nfs-server.example.com \n--- \napiVersion: v1 \nkind: PersistentVolumeClaim \nmetadata: \nname: example-pvc \nspec: \naccessModes: \n - ReadWriteOnce \nresources: \n requests: \n storage: 10Gi \n<\/pre><\/div>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cele:<\/strong> Zapewnienie trwa\u0142ej pami\u0119ci dla aplikacji stanowych, kt\u00f3ra wykracza poza cykl \u017cycia poda.<\/li>\n\n\n\n<li><strong>Kiedy stosowa\u0107:<\/strong> PV i PVC s\u0105 u\u017cywane, gdy aplikacja wymaga trwa\u0142ej pami\u0119ci niezale\u017cnej od cyklu \u017cycia poda, co zapewnia trwa\u0142o\u015b\u0107 i dost\u0119pno\u015b\u0107 danych.<\/li>\n\n\n\n<li><strong>Dokumentacja<\/strong>: <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/storage\/persistent-volumes\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >Persistent Volumes<\/a><a href=\"https:\/\/kubernetes.io\/docs\/concepts\/storage\/persistent-volumes\/\" rel=\"nofollow\" >.<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Kontrola dost\u0119pu oparta na rolach (RBAC)<\/strong><\/h2>\n\n\n\n<p>Kontrola dost\u0119pu oparta na rolach (RBAC) umo\u017cliwia zastosowanie szczeg\u00f3\u0142owych polityk kontroli dost\u0119pu do zasob\u00f3w Kubernetes za pomoc\u0105 r\u00f3l i powi\u0105za\u0144 r\u00f3l, ograniczaj\u0105c uprawnienia w obr\u0119bie klastra.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\napiVersion: rbac.authorization.k8s.io\/v1 \nkind: Role \nmetadata: \nnamespace: default \nname: pod-reader \nrules: \n- apiGroups: &#x5B;&quot;&quot;] \nresources: &#x5B;&quot;pods&quot;] \nverbs: &#x5B;&quot;get&quot;, &quot;watch&quot;, &quot;list&quot;] \n--- \napiVersion: rbac.authorization.k8s.io\/v1 \nkind: RoleBinding \nmetadata: \nname: read-pods \nnamespace: default \nsubjects: \n- kind: User \nname: &quot;jane&quot; \napiGroup: rbac.authorization.k8s.io \nroleRef: \nkind: Role \nname: pod-reader \napiGroup: rbac.authorization.k8s.io \n<\/pre><\/div>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cele:<\/strong> Wdro\u017cenie zasady najmniejszych uprawnie\u0144 w ca\u0142ym klastrze Kubernetes. Zasada ta zapewnia, \u017ce u\u017cytkownicy i aplikacje maj\u0105 tylko te uprawnienia, kt\u00f3re s\u0105 niezb\u0119dne do ich konkretnych wymaga\u0144.<\/li>\n\n\n\n<li><strong>Kiedy stosowa\u0107<\/strong>: RBAC stosuje si\u0119, gdy konieczny jest bezpieczny dost\u0119p do zasob\u00f3w Kubernetes, szczeg\u00f3lnie w \u015brodowiskach z wieloma u\u017cytkownikami lub zespo\u0142ami.<\/li>\n\n\n\n<li><strong>Dokumentacja<\/strong>: <a href=\"https:\/\/kubernetes.io\/docs\/reference\/access-authn-authz\/rbac\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >Using RBAC Authorization<\/a><a href=\"https:\/\/kubernetes.io\/docs\/reference\/access-authn-authz\/rbac\/\" rel=\"nofollow\" >.<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Taints and Tolerations<\/strong><\/h2>\n\n\n\n<p>Taints and Tolerations dzia\u0142aj\u0105 razem, aby zapewni\u0107, \u017ce pody nie b\u0119d\u0105 uruchamiane na nieodpowiednich w\u0119z\u0142ach w obr\u0119bie klastra.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\napiVersion: v1\nkind: Node \nmetadata: \nname: node1 \nspec: \ntaints: \n- key: &quot;key1&quot; \n value: &quot;value1&quot; \n effect: NoSchedule \n<\/pre><\/div>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cele<\/strong>: Zarz\u0105dzanie umiejscowieniem pod\u00f3w na w\u0119z\u0142ach, uwzgl\u0119dniaj\u0105c cechy sprz\u0119towe i programowe, a tak\u017ce inne wymagania zdefiniowane przez u\u017cytkownika.<\/li>\n\n\n\n<li><strong>Kiedy stosowa\u0107<\/strong>: Zanieczyszczenia i tolerancje s\u0105 u\u017cywane do zapobiegania wykonywaniu okre\u015blonych zada\u0144 na konkretnych w\u0119z\u0142ach, co pozwala na przypisanie tych w\u0119z\u0142\u00f3w do konkretnych obci\u0105\u017ce\u0144.<\/li>\n\n\n\n<li><strong>Dokumentacja<\/strong>: <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/scheduling-eviction\/taint-and-toleration\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >Taints and Tolerations<\/a><a href=\"https:\/\/kubernetes.io\/docs\/concepts\/scheduling-eviction\/taint-and-toleration\/\" rel=\"nofollow\" >.<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Affinity and anti-affinity<\/strong><\/h2>\n\n\n\n<p>Ustawienia Affinity and anti-affinity pozwalaj\u0105 kontrolowa\u0107, gdzie pody powinny (lub nie powinny) by\u0107 umieszczane w odniesieniu do innych pod\u00f3w.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\napiVersion: apps\/v1 \nkind: Deployment \nmetadata: \nname: with-pod-affinity \nspec: \nselector: \n matchLabels: \n app: with-pod-affinity \ntemplate: \n metadata: \n labels: \n app: with-pod-affinity \n spec: \n affinity: \n podAffinity: \n requiredDuringSchedulingIgnoredDuringExecution:  - labelSelector: \n matchExpressions:\n - key: security \n operator: In \n values: \n - S1 \n topologyKey: &quot;kubernetes.io\/hostname&quot; \n podAntiAffinity: \n preferredDuringSchedulingIgnoredDuringExecution:  - weight: 100 \n podAffinityTerm: \n labelSelector: \n matchExpressions: \n - key: security \n operator: In \n values: \n - S2 \n topologyKey: &quot;kubernetes.io\/hostname&quot; \n<\/pre><\/div>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cele:<\/strong> Zarz\u0105dzanie rozk\u0142adem pod\u00f3w w obr\u0119bie klastra w celu zwi\u0119kszenia odporno\u015bci na b\u0142\u0119dy, dost\u0119pno\u015bci lub spe\u0142nienia innych wymaga\u0144 operacyjnych.<\/li>\n\n\n\n<li><strong>Kiedy stosowa\u0107:<\/strong> Ustawienia affinity i anti-affinity zapewniaj\u0105 wysok\u0105 dost\u0119pno\u015b\u0107 oraz rozk\u0142ad obci\u0105\u017cenia zgodnie z wymaganiami bezpiecze\u0144stwa lub innymi warunkami.<\/li>\n\n\n\n<li><strong>Dokumentacja<\/strong>: <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/scheduling-eviction\/assign-pod-node\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >Assigning Pods to Nodes<\/a><a href=\"https:\/\/kubernetes.io\/docs\/concepts\/scheduling-eviction\/assign-pod-node\/\" rel=\"nofollow\" >.<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Zadania (Jobs) i zadania cykliczne (CronJobs)<\/strong><\/h2>\n\n\n\n<p>Funkcja Zadania zarz\u0105dza zadaniami, kt\u00f3re musz\u0105 by\u0107 uruchomione raz, podczas gdy opcja Zadania cykliczne zarz\u0105dza zadaniami, kt\u00f3re musz\u0105 by\u0107 uruchamiane w okre\u015blonych interwa\u0142ach czasowych.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\napiVersion: batch\/v1 \nkind: Job \nmetadata: \nname: example-job \nspec: \ntemplate: \n spec: \n containers: \n - name: hello \n image: busybox\n command: &#x5B;&quot;sh&quot;, &quot;-c&quot;, &quot;echo Hello Kubernetes! &amp;amp;&amp;amp; sleep 30&quot;]  restartPolicy: Never \n--- \napiVersion: batch\/v1beta1 \nkind: CronJob \nmetadata: \nname: example-cronjob \nspec: \nschedule: &quot;*\/5 * * * *&quot; \njobTemplate: \n spec: \n template: \n spec: \n containers: \n - name: hello \n image: busybox \n command: &#x5B;&quot;sh&quot;, &quot;-c&quot;, &quot;echo Hello Kubernetes! &amp;amp;&amp;amp; sleep 30&quot;]  restartPolicy: OnFailure \n<\/pre><\/div>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cele:<\/strong> Automatyzacja zada\u0144 w Kubernetes, takich jak tworzenie kopii zapasowych, konserwacja, usuwanie pami\u0119ci podr\u0119cznej itp.<\/li>\n\n\n\n<li><strong>Kiedy stosowa\u0107:<\/strong> Zadania i zadania cykliczne s\u0105 u\u017cywane do uruchamiania zada\u0144 jednorazowo lub w okre\u015blonych interwa\u0142ach czasowych.<\/li>\n\n\n\n<li><strong>Dokumentacja<\/strong>: <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/controllers\/job\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >Jobs<\/a>, <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/controllers\/cron-jobs\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >CronJob.<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Podsumowanie<\/strong><\/h2>\n\n\n\n<p>Podane konfiguracje Kubernetes stanowi\u0105 podstaw\u0119 do tworzenia niezawodnych, wydajnych i bezpiecznych aplikacji chmurowych.<\/p>\n\n\n\n<p>Zrozumienie i praktyczne zastosowanie tych ustawie\u0144 umo\u017cliwi Wam odkrycie wszystkich mo\u017cliwo\u015bci Kubernetes, wdra\u017canie zada\u0144 specjalnych oraz przestrzeganie optymalnych standard\u00f3w operacyjnych.<\/p>\n\n\n\n<p>***<\/p>\n\n\n\n<p>Je\u015bli dla odmiany chcesz dowiedzie\u0107 si\u0119 wi\u0119cej na temat Dockera, zajrzyj koniecznie <a href=\"https:\/\/sii.pl\/blog\/wyszukiwarka\/Docker\/\" target=\"_blank\" aria-label=\"do innych artyku\u0142\u00f3w naszych autor\u00f3w.  (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">do innych artyku\u0142\u00f3w naszych autor\u00f3w. <\/a><\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;29370&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;6&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;5&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;11&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;5\\\/5 ( votes: 6)&quot;,&quot;size&quot;:&quot;18&quot;,&quot;title&quot;:&quot;Konfiguracje Kubernetes, kt\u00f3re warto zna\u0107 w 2024 roku&quot;,&quot;width&quot;:&quot;139.5&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} ( {votes}: {count})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 139.5px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 14.4px;\">\n            5\/5 ( votes: 6)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Kubernetes wci\u0105\u017c jest liderem w orkiestracji kontener\u00f3w. Opanowanie jego mechanizm\u00f3w i mo\u017cliwo\u015bci, jakie oferuje, staje si\u0119 niezb\u0119dne nie tylko dla &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/konfiguracje-kubernetes-ktore-warto-znac-w-2024-roku\/\">Continued<\/a><\/p>\n","protected":false},"author":570,"featured_media":29372,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","inline_featured_image":false,"footnotes":""},"categories":[1314],"tags":[2427,1546,1512,224,1084],"class_list":["post-29370","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development-na-twardo","tag-digital","tag-przeglad-narzedzi","tag-poradnik","tag-kontener","tag-kubernetes"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/10\/Konfiguracje-Kubernetes-ktore-warto-znac-w-2024-roku.jpg","category_names":["Development na twardo"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/29370"}],"collection":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/users\/570"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=29370"}],"version-history":[{"count":1,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/29370\/revisions"}],"predecessor-version":[{"id":29371,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/29370\/revisions\/29371"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/29372"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=29370"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=29370"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=29370"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}