revise June 2024 container orchestration articles
Build and deploy / deploy (push) Successful in 16s

This commit is contained in:
2026-07-31 16:01:21 +03:00
parent 3faaaa0992
commit 48049ee0ca
8 changed files with 861 additions and 1 deletions
@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="720" height="1050" viewBox="0 0 720 1050" role="img" aria-labelledby="title desc">
<title id="title">Синтетическая кривая CPU относительно request</title>
<desc id="desc">Учебная диаграмма P76 показывает фиксированные синтетические точки CPU как процент declared request, линию HPA target и отдельную линию CPU limit. Она не является метрикой, telemetry или прогнозом capacity.</desc>
<rect width="720" height="1050" fill="#0f172a"/>
<rect x="28" y="26" width="664" height="106" rx="18" fill="#172554" stroke="#818cf8" stroke-width="2"/>
<text x="56" y="68" fill="#f8fafc" font-family="Arial, sans-serif" font-size="28" font-weight="700">CPU: target HPA и limit — разные линии</text>
<text x="56" y="102" fill="#c7d2fe" font-family="Arial, sans-serif" font-size="18">P76 fixed synthetic values: CPU / declared request, не telemetry</text>
<rect x="58" y="166" width="604" height="502" rx="18" fill="#111c32" stroke="#334155" stroke-width="2"/>
<text x="88" y="204" fill="#e2e8f0" font-family="Arial, sans-serif" font-size="21" font-weight="700">Синтетический профиль, не график кластера</text>
<text x="88" y="235" fill="#94a3b8" font-family="Arial, sans-serif" font-size="17">ось Y: процент request · ось X: фиксированные учебные этапы</text>
<line x1="130" y1="590" x2="620" y2="590" stroke="#94a3b8" stroke-width="3"/>
<line x1="130" y1="266" x2="130" y2="590" stroke="#94a3b8" stroke-width="3"/>
<line x1="130" y1="476" x2="620" y2="476" stroke="#475569" stroke-width="2" stroke-dasharray="8 8"/>
<line x1="130" y1="363" x2="620" y2="363" stroke="#fbbf24" stroke-width="3" stroke-dasharray="10 8"/>
<line x1="130" y1="266" x2="620" y2="266" stroke="#fb7185" stroke-width="3" stroke-dasharray="10 8"/>
<text x="72" y="596" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="17">0%</text>
<text x="62" y="482" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="17">70%</text>
<text x="52" y="369" fill="#fde68a" font-family="Arial, sans-serif" font-size="17">140%</text>
<text x="52" y="272" fill="#fecdd3" font-family="Arial, sans-serif" font-size="17">200%</text>
<text x="460" y="469" fill="#fde68a" font-family="Arial, sans-serif" font-size="17" font-weight="700">HPA target: 70% request</text>
<text x="450" y="258" fill="#fecdd3" font-family="Arial, sans-serif" font-size="17" font-weight="700">CPU limit: 200% request</text>
<path d="M178 533 L304 403 L430 463 L556 336" fill="none" stroke="#38bdf8" stroke-width="7"/>
<circle cx="178" cy="533" r="10" fill="#7dd3fc" stroke="#e0f2fe" stroke-width="3"/>
<circle cx="304" cy="403" r="10" fill="#7dd3fc" stroke="#e0f2fe" stroke-width="3"/>
<circle cx="430" cy="463" r="10" fill="#7dd3fc" stroke="#e0f2fe" stroke-width="3"/>
<circle cx="556" cy="336" r="10" fill="#7dd3fc" stroke="#e0f2fe" stroke-width="3"/>
<text x="151" y="627" fill="#e2e8f0" font-family="Arial, sans-serif" font-size="16">idle</text>
<text x="267" y="627" fill="#e2e8f0" font-family="Arial, sans-serif" font-size="16">warmup</text>
<text x="397" y="627" fill="#e2e8f0" font-family="Arial, sans-serif" font-size="16">steady</text>
<text x="528" y="627" fill="#e2e8f0" font-family="Arial, sans-serif" font-size="16">burst</text>
<text x="145" y="558" fill="#bae6fd" font-family="Arial, sans-serif" font-size="16">35%</text>
<text x="274" y="391" fill="#bae6fd" font-family="Arial, sans-serif" font-size="16">115%</text>
<text x="402" y="451" fill="#bae6fd" font-family="Arial, sans-serif" font-size="16">78%</text>
<text x="529" y="324" fill="#bae6fd" font-family="Arial, sans-serif" font-size="16">140%</text>
<rect x="58" y="710" width="604" height="244" rx="18" fill="#172554" stroke="#4f46e5" stroke-width="2"/>
<text x="86" y="752" fill="#e0e7ff" font-family="Arial, sans-serif" font-size="23" font-weight="700">Как читать схему</text>
<text x="86" y="790" fill="#e2e8f0" font-family="Arial, sans-serif" font-size="19">1. HPA percentage использует request как denominator.</text>
<text x="86" y="824" fill="#e2e8f0" font-family="Arial, sans-serif" font-size="19">2. CPU limit — runtime boundary, не target scale.</text>
<text x="86" y="858" fill="#e2e8f0" font-family="Arial, sans-serif" font-size="19">3. Ready и startup остаются отдельным контрактом.</text>
<rect x="86" y="874" width="548" height="58" rx="11" fill="#312e81"/>
<text x="105" y="899" fill="#e0e7ff" font-family="Arial, sans-serif" font-size="16">Не делать вывод о throughput, latency, replicas или capacity.</text>
<text x="105" y="921" fill="#e0e7ff" font-family="Arial, sans-serif" font-size="16">Нужен отдельный разрешённый evidence source.</text>
<rect x="28" y="980" width="664" height="42" rx="12" fill="#1e293b"/>
<text x="48" y="1007" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="15">Все точки — fixed synthetic teaching data из P76, не metrics server и не production telemetry.</text>
</svg>

After

Width:  |  Height:  |  Size: 5.2 KiB

@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="720" height="1060" viewBox="0 0 720 1060" role="img" aria-labelledby="title desc">
<title id="title">Профиль приложения, манифест и жизненный цикл Pod</title>
<desc id="desc">Учебная схема P76: профиль приложения задаёт вопросы к requests, limits и readiness, после чего Pod проходит состояния Pending, Running, Ready или Unready. Только Ready допускается к Service traffic. Это не данные кластера.</desc>
<rect width="720" height="1060" fill="#0f172a"/>
<rect x="28" y="26" width="664" height="104" rx="18" fill="#172554" stroke="#60a5fa" stroke-width="2"/>
<text x="56" y="68" fill="#f8fafc" font-family="Arial, sans-serif" font-size="29" font-weight="700">Профиль → manifest → Pod lifecycle</text>
<text x="56" y="101" fill="#bfdbfe" font-family="Arial, sans-serif" font-size="18">P76: fixed synthetic teaching model, не снимок кластера</text>
<rect x="58" y="164" width="604" height="172" rx="18" fill="#1e293b" stroke="#38bdf8" stroke-width="2"/>
<text x="86" y="204" fill="#e0f2fe" font-family="Arial, sans-serif" font-size="24" font-weight="700">1. Профиль приложения</text>
<text x="86" y="240" fill="#e2e8f0" font-family="Arial, sans-serif" font-size="20">serving или batch · startup · unit of work</text>
<text x="86" y="272" fill="#e2e8f0" font-family="Arial, sans-serif" font-size="20">dominant resource · owner · stop condition</text>
<rect x="86" y="288" width="548" height="28" rx="8" fill="#0c4a6e"/>
<text x="102" y="309" fill="#e0f2fe" font-family="Arial, sans-serif" font-size="16">Вопрос: что обязан выдержать один Pod до следующей проверки?</text>
<path d="M360 336 V380" fill="none" stroke="#60a5fa" stroke-width="5"/>
<path d="M348 368 L360 392 L372 368" fill="none" stroke="#60a5fa" stroke-width="5"/>
<rect x="58" y="400" width="604" height="196" rx="18" fill="#172554" stroke="#818cf8" stroke-width="2"/>
<text x="86" y="440" fill="#e0e7ff" font-family="Arial, sans-serif" font-size="24" font-weight="700">2. Декларация container</text>
<text x="86" y="478" fill="#e2e8f0" font-family="Arial, sans-serif" font-size="20">CPU / memory request → размещение scheduler</text>
<text x="86" y="510" fill="#e2e8f0" font-family="Arial, sans-serif" font-size="20">CPU / memory limit → граница runtime</text>
<text x="86" y="542" fill="#e2e8f0" font-family="Arial, sans-serif" font-size="20">readiness → допуск к Service traffic</text>
<rect x="86" y="554" width="548" height="22" rx="7" fill="#312e81"/>
<text x="102" y="571" fill="#e0e7ff" font-family="Arial, sans-serif" font-size="15">request, limit и readiness отвечают на разные вопросы</text>
<path d="M360 596 V640" fill="none" stroke="#a5b4fc" stroke-width="5"/>
<path d="M348 628 L360 652 L372 628" fill="none" stroke="#a5b4fc" stroke-width="5"/>
<text x="58" y="690" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="22" font-weight="700">3. Состояние Pod и маршрут трафика</text>
<rect x="58" y="716" width="170" height="98" rx="16" fill="#1e3a5f" stroke="#60a5fa" stroke-width="2"/>
<text x="86" y="756" fill="#dbeafe" font-family="Arial, sans-serif" font-size="22" font-weight="700">Pending</text>
<text x="86" y="788" fill="#bfdbfe" font-family="Arial, sans-serif" font-size="17">ожидает setup</text>
<path d="M228 765 H278" fill="none" stroke="#60a5fa" stroke-width="5"/>
<path d="M266 753 L290 765 L266 777" fill="none" stroke="#60a5fa" stroke-width="5"/>
<rect x="292" y="716" width="170" height="98" rx="16" fill="#1e3a5f" stroke="#60a5fa" stroke-width="2"/>
<text x="319" y="756" fill="#dbeafe" font-family="Arial, sans-serif" font-size="22" font-weight="700">Running</text>
<text x="319" y="788" fill="#bfdbfe" font-family="Arial, sans-serif" font-size="17">containers live</text>
<path d="M462 765 H512" fill="none" stroke="#4ade80" stroke-width="5"/>
<path d="M500 753 L524 765 L500 777" fill="none" stroke="#4ade80" stroke-width="5"/>
<rect x="526" y="716" width="136" height="98" rx="16" fill="#14532d" stroke="#4ade80" stroke-width="2"/>
<text x="555" y="756" fill="#dcfce7" font-family="Arial, sans-serif" font-size="22" font-weight="700">Ready</text>
<text x="543" y="788" fill="#bbf7d0" font-family="Arial, sans-serif" font-size="16">может serve</text>
<path d="M594 814 V856" fill="none" stroke="#4ade80" stroke-width="5"/>
<path d="M582 844 L594 868 L606 844" fill="none" stroke="#4ade80" stroke-width="5"/>
<rect x="398" y="874" width="264" height="72" rx="16" fill="#14532d" stroke="#4ade80" stroke-width="2"/>
<text x="426" y="905" fill="#dcfce7" font-family="Arial, sans-serif" font-size="20" font-weight="700">Service traffic</text>
<text x="426" y="930" fill="#bbf7d0" font-family="Arial, sans-serif" font-size="16">только после Ready</text>
<path d="M377 814 V856" fill="none" stroke="#fb7185" stroke-width="5"/>
<path d="M365 844 L377 868 L389 844" fill="none" stroke="#fb7185" stroke-width="5"/>
<rect x="58" y="874" width="292" height="72" rx="16" fill="#4c0519" stroke="#fb7185" stroke-width="2"/>
<text x="84" y="905" fill="#ffe4e6" font-family="Arial, sans-serif" font-size="20" font-weight="700">Unready</text>
<text x="84" y="930" fill="#fecdd3" font-family="Arial, sans-serif" font-size="16">не диагноз и не traffic</text>
<rect x="28" y="976" width="664" height="52" rx="14" fill="#172554"/>
<text x="48" y="1008" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="16">Схема не измеряет CPU, memory, latency, HPA decision, CI или production state.</text>
</svg>

After

Width:  |  Height:  |  Size: 5.8 KiB

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="720" height="1050" viewBox="0 0 720 1050" role="img" aria-labelledby="title desc">
<title id="title">Readiness gate и отдельный autoscaling signal</title>
<desc id="desc">Учебная схема P76 показывает, что ContainersReady и синтетическая custom condition должны стать true для Ready и Service traffic. CPU metric HPA остаётся отдельной величиной относительно request. Это не manifest и не данные кластера.</desc>
<rect width="720" height="1050" fill="#0f172a"/>
<rect x="28" y="26" width="664" height="106" rx="18" fill="#172554" stroke="#a78bfa" stroke-width="2"/>
<text x="56" y="68" fill="#f8fafc" font-family="Arial, sans-serif" font-size="29" font-weight="700">Readiness gate — не autoscaling metric</text>
<text x="56" y="102" fill="#ddd6fe" font-family="Arial, sans-serif" font-size="18">P76 fixed synthetic condition, не manifest и не cluster status</text>
<rect x="80" y="162" width="560" height="112" rx="18" fill="#1e3a5f" stroke="#60a5fa" stroke-width="2"/>
<text x="112" y="205" fill="#dbeafe" font-family="Arial, sans-serif" font-size="24" font-weight="700">ContainersReady?</text>
<text x="112" y="241" fill="#bfdbfe" font-family="Arial, sans-serif" font-size="19">readiness probe: может ли container serve?</text>
<path d="M360 274 V320" fill="none" stroke="#60a5fa" stroke-width="5"/>
<path d="M348 308 L360 332 L372 308" fill="none" stroke="#60a5fa" stroke-width="5"/>
<rect x="80" y="340" width="560" height="130" rx="18" fill="#312e81" stroke="#a78bfa" stroke-width="2"/>
<text x="112" y="383" fill="#ede9fe" font-family="Arial, sans-serif" font-size="23" font-weight="700">Custom readiness gate?</text>
<text x="112" y="418" fill="#ddd6fe" font-family="Arial, sans-serif" font-size="19">synthetic.example/contract = True</text>
<text x="112" y="447" fill="#c4b5fd" font-family="Arial, sans-serif" font-size="16">условие, producer и recovery принадлежат owner-у</text>
<path d="M360 470 V516" fill="none" stroke="#4ade80" stroke-width="5"/>
<path d="M348 504 L360 528 L372 504" fill="none" stroke="#4ade80" stroke-width="5"/>
<rect x="224" y="536" width="272" height="104" rx="18" fill="#14532d" stroke="#4ade80" stroke-width="3"/>
<text x="314" y="580" fill="#dcfce7" font-family="Arial, sans-serif" font-size="27" font-weight="700">Ready</text>
<text x="253" y="617" fill="#bbf7d0" font-family="Arial, sans-serif" font-size="18">containers + gates are True</text>
<path d="M360 640 V686" fill="none" stroke="#4ade80" stroke-width="5"/>
<path d="M348 674 L360 698 L372 674" fill="none" stroke="#4ade80" stroke-width="5"/>
<rect x="190" y="706" width="340" height="82" rx="18" fill="#14532d" stroke="#4ade80" stroke-width="2"/>
<text x="236" y="741" fill="#dcfce7" font-family="Arial, sans-serif" font-size="22" font-weight="700">Service traffic eligible</text>
<text x="242" y="770" fill="#bbf7d0" font-family="Arial, sans-serif" font-size="17">это допуск, не capacity verdict</text>
<path d="M80 404 H50 V842 H258" fill="none" stroke="#fb7185" stroke-width="4" stroke-dasharray="10 8"/>
<path d="M246 830 L270 842 L246 854" fill="none" stroke="#fb7185" stroke-width="4"/>
<rect x="58" y="858" width="256" height="86" rx="16" fill="#4c0519" stroke="#fb7185" stroke-width="2"/>
<text x="84" y="894" fill="#ffe4e6" font-family="Arial, sans-serif" font-size="21" font-weight="700">Unready</text>
<text x="84" y="924" fill="#fecdd3" font-family="Arial, sans-serif" font-size="16">не Service traffic</text>
<rect x="364" y="830" width="298" height="114" rx="16" fill="#422006" stroke="#fbbf24" stroke-width="2"/>
<text x="392" y="868" fill="#fef3c7" font-family="Arial, sans-serif" font-size="21" font-weight="700">HPA CPU metric</text>
<text x="392" y="900" fill="#fde68a" font-family="Arial, sans-serif" font-size="17">usage / declared request</text>
<text x="392" y="926" fill="#fde68a" font-family="Arial, sans-serif" font-size="15">not a readiness result</text>
<rect x="28" y="978" width="664" height="44" rx="12" fill="#1e293b"/>
<text x="48" y="1006" fill="#cbd5e1" font-family="Arial, sans-serif" font-size="15">Не показаны controller flags, metrics, endpoints, HTTP checks, CI, trace или production state.</text>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB