<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Den 1 on Eriks training corner</title><link>https://training.caha.cloud/cs/kubernetesintro/day-01/index.html</link><description>Recent content in Den 1 on Eriks training corner</description><generator>Hugo -- gohugo.io</generator><language>cs</language><atom:link href="https://training.caha.cloud/cs/kubernetesintro/day-01/index.xml" rel="self" type="application/rss+xml"/><item><title>Služby a mikroslužby</title><link>https://training.caha.cloud/cs/kubernetesintro/day-01/01-microservices/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://training.caha.cloud/cs/kubernetesintro/day-01/01-microservices/index.html</guid><description>&lt;h1 id="služby-a-mikroslužby"&gt;Služby a mikroslužby&lt;/h1&gt;
&lt;h2 id="monolit"&gt;Monolit&lt;/h2&gt;
&lt;p&gt;Jeden artefakt, jedno nasazení, jeden runtime. Vnitřní volání jsou volání metod.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Výhody:&lt;/strong&gt; jedna nasaditelná jednotka, žádná síť mezi moduly.
&lt;strong&gt;Nevýhody:&lt;/strong&gt; dlouhý release cyklus, škáluje se jen jako celek, těžko se dělí
mezi týmy.&lt;/p&gt;
&lt;h2 id="mikroslužby"&gt;Mikroslužby&lt;/h2&gt;
&lt;div class="mermaid align-center"&gt;graph LR
C[Klienti] --&amp;gt; G[API Gateway]
G --&amp;gt; B[Book service]
G --&amp;gt; R[Review service]
B --&amp;gt; BD[(Book DB)]
R --&amp;gt; RD[(Review DB)]&lt;/div&gt;&lt;p&gt;Každá služba se vyvíjí, nasazuje, škáluje a povyšuje samostatně a může vlastnit
svou databázi.&lt;/p&gt;</description></item><item><title>Kontejnery a image</title><link>https://training.caha.cloud/cs/kubernetesintro/day-01/02-containers-and-images/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://training.caha.cloud/cs/kubernetesintro/day-01/02-containers-and-images/index.html</guid><description>&lt;h1 id="kontejnery-a-image"&gt;Kontejnery a image&lt;/h1&gt;
&lt;h2 id="kontejner-vs-virtuální-stroj"&gt;Kontejner vs. virtuální stroj&lt;/h2&gt;
&lt;div class="mermaid align-center"&gt;graph TB
subgraph VM
H1[Hardware] --&amp;gt; HV[Hypervizor]
HV --&amp;gt; G1[Guest OS &amp;#43; aplikace]
HV --&amp;gt; G2[Guest OS &amp;#43; aplikace]
end
subgraph Kontejnery
H2[Hardware] --&amp;gt; OS[Jádro hostitele]
OS --&amp;gt; CR[Container runtime]
CR --&amp;gt; C1[Aplikace]
CR --&amp;gt; C2[Aplikace]
end&lt;/div&gt;&lt;p&gt;Kontejner je proces nad jádrem hostitele, izolovaný namespacy a omezený
cgroupami. Žádný hostovaný OS, takže start trvá milisekundy.&lt;/p&gt;
&lt;h2 id="image"&gt;Image&lt;/h2&gt;
&lt;p&gt;Read-only šablona složená z &lt;strong&gt;vrstev&lt;/strong&gt;; každá instrukce v Dockerfile přidá jednu.
Vrstvy se sdílejí a cachují. Běžící kontejner přidá navrch tenkou zapisovatelnou
vrstvu, která zmizí spolu s kontejnerem – proto data patří na volume.&lt;/p&gt;</description></item><item><title>Základy Kubernetes</title><link>https://training.caha.cloud/cs/kubernetesintro/day-01/03-kubernetes-basics/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://training.caha.cloud/cs/kubernetesintro/day-01/03-kubernetes-basics/index.html</guid><description>&lt;h1 id="základy-kubernetes"&gt;Základy Kubernetes&lt;/h1&gt;
&lt;p&gt;Vznikl v Googlu v roce 2014 na základech projektů Borg (2003) a Omega (2013),
v roce 2015 byl darován nadaci CNCF.&lt;/p&gt;
&lt;h2 id="jedna-velká-myšlenka"&gt;Jedna velká myšlenka&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Požadovaný stav vs. aktuální stav.&lt;/strong&gt; Vy popíšete, co chcete; kontrolery to
porovnávají se skutečností a jednají, dokud se oba stavy nesejdou. Všechno
ostatní je jen variace na tuto smyčku.&lt;/p&gt;
&lt;div class="mermaid align-center"&gt;graph LR
U[Vy: manifest] --&amp;gt; A[API server]
A --&amp;gt; E[(etcd – požadovaný stav)]
C[Kontroler] --&amp;gt; A
C --&amp;gt; C
C --&amp;gt;|create / delete| K[kubelet na uzlu]
K --&amp;gt;|hlásí aktuální stav| A&lt;/div&gt;&lt;h2 id="architektura"&gt;Architektura&lt;/h2&gt;
&lt;div class="mermaid align-center"&gt;graph TB
subgraph control01 [Control plane]
API[kube-apiserver]
ETCD[(etcd)]
SCH[kube-scheduler]
CM[kube-controller-manager]
end
subgraph worker0X [Worker uzel]
KL[kubelet]
KP[kube-proxy]
CRI[containerd]
end
API --- ETCD
SCH --- API
CM --- API
KL --- API
KP --- API
KL --- CRI&lt;/div&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Komponenta&lt;/th&gt;
&lt;th&gt;Co dělá&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;kube-apiserver&lt;/td&gt;
&lt;td&gt;jediné dveře do clusteru; REST + validace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;etcd&lt;/td&gt;
&lt;td&gt;ukládá požadovaný stav&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kube-scheduler&lt;/td&gt;
&lt;td&gt;vybírá uzel pro každý nový pod&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kube-controller-manager&lt;/td&gt;
&lt;td&gt;běží v něm reconciliation smyčky&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubelet&lt;/td&gt;
&lt;td&gt;spouští a hlídá kontejnery na svém uzlu&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kube-proxy&lt;/td&gt;
&lt;td&gt;implementuje síťování Services na svém uzlu&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;containerd&lt;/td&gt;
&lt;td&gt;container runtime (CRI)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="zásuvné-standardy"&gt;Zásuvné standardy&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CRI&lt;/strong&gt; – runtime. Docker není CRI runtime a od verze 1.24 není podporován;
tento cluster používá containerd.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CNI&lt;/strong&gt; – síťový plugin.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CSI&lt;/strong&gt; – storage drivery. Tento cluster žádný nemá, a proto se v labu na
úložiště vytvářejí PersistentVolumes ručně.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="imperativně-vs-deklarativně"&gt;Imperativně vs. deklarativně&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl run web01 --image nginx &lt;span class="c1"&gt;# imperativně: akce&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl apply -f pod.yaml &lt;span class="c1"&gt;# deklarativně: požadovaný stav&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Imperativní přístup je na zkoušení. Všechno, co má přežít, se verzuje jako YAML
a nasazuje přes &lt;code&gt;apply&lt;/code&gt;. Jen &lt;code&gt;apply&lt;/code&gt; je idempotentní.&lt;/p&gt;</description></item><item><title>Jak se v kubectl vyznat</title><link>https://training.caha.cloud/cs/kubernetesintro/day-01/04-finding-your-way/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://training.caha.cloud/cs/kubernetesintro/day-01/04-finding-your-way/index.html</guid><description>&lt;h1 id="jak-se-v-kubectl-vyznat"&gt;Jak se v kubectl vyznat&lt;/h1&gt;
&lt;p&gt;Kubernetes API si nikdo nepamatuje. Cluster umí popsat sám sebe a tahle kapitola
je o tom, jak ho k tomu donutit. Všechno funguje offline a proti verzi, kterou
skutečně provozujete – což vám internet neslíbí.&lt;/p&gt;
&lt;h2 id="jaké-druhy-objektů-existují"&gt;Jaké druhy objektů existují?&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl api-resources
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl api-resources &lt;span class="p"&gt;|&lt;/span&gt; grep -i ingress
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl api-resources --namespaced&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;false&lt;/span&gt; &lt;span class="c1"&gt;# objekty mimo namespace&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Výstup dá čtyři věci: množné jméno, které píšete, zkratku (&lt;code&gt;deploy&lt;/code&gt;, &lt;code&gt;svc&lt;/code&gt;,
&lt;code&gt;po&lt;/code&gt;), API skupinu a verzi, a jestli objekt patří do namespace.&lt;/p&gt;</description></item><item><title>Pody</title><link>https://training.caha.cloud/cs/kubernetesintro/day-01/05-pods/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://training.caha.cloud/cs/kubernetesintro/day-01/05-pods/index.html</guid><description>&lt;h1 id="pody"&gt;Pody&lt;/h1&gt;
&lt;p&gt;Nejmenší plánovatelná jednotka. Není to kontejner – je to &lt;em&gt;prostředí&lt;/em&gt; pro jeden
nebo více kontejnerů.&lt;/p&gt;
&lt;div class="mermaid align-center"&gt;graph TB
subgraph pod [Pod – jedna IP, jeden síťový namespace]
C1[kontejner: aplikace]
C2[kontejner: sidecar]
V[(sdílený volume)]
C1 --- V
C2 --- V
end&lt;/div&gt;&lt;p&gt;Kontejnery v podu sdílejí IP adresu, porty, IPC a volumes a vždy běží na stejném
uzlu. Mluví spolu přes &lt;code&gt;localhost&lt;/code&gt;. Je to režim &lt;code&gt;--network container:&lt;/code&gt; z Dockeru
povýšený na plnohodnotný objekt.&lt;/p&gt;</description></item></channel></rss>