2382 lines
115 KiB
HTML
2382 lines
115 KiB
HTML
<!doctype html>
|
||
<html
|
||
lang="ru"
|
||
dir="ltr"
|
||
class="scroll-smooth"
|
||
data-default-appearance="dark"
|
||
data-auto-appearance="false"><head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
|
||
<meta charset="utf-8">
|
||
|
||
<meta http-equiv="content-language" content="ru">
|
||
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||
<meta name="theme-color">
|
||
|
||
|
||
|
||
<title>Подготовить инфраструктуру для K3s в Proxmox · Олег Казанин</title>
|
||
<meta name="title" content="Подготовить инфраструктуру для K3s в Proxmox · Олег Казанин">
|
||
|
||
|
||
|
||
|
||
<meta name="description" content="Архитектура спланирована, ресурсы посчитаны - пора создавать виртуальные машины. Подготовим 5 VM в Proxmox и настроим ОС так, чтобы K3s установился без сюрпризов.">
|
||
|
||
|
||
<meta name="keywords" content="kubernetes,k3s,homelab,proxmox,infrastructure,debian,devops,">
|
||
|
||
|
||
|
||
<link rel="canonical" href="http://localhost:1313/posts/k3s-infrastructure/">
|
||
|
||
|
||
|
||
|
||
<meta name="author" content="Олег Казанин">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<link href="https://t.me/oa_msk" rel="me">
|
||
|
||
|
||
|
||
|
||
|
||
<link href="https://oakazanin.ru/" rel="me">
|
||
|
||
|
||
|
||
|
||
|
||
<link href="https://git.jn4.ru/astronit" rel="me">
|
||
|
||
|
||
|
||
|
||
|
||
<link href="https://obrtv.ru/a/chiefengineer" rel="me">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<meta property="og:url" content="http://localhost:1313/posts/k3s-infrastructure/">
|
||
<meta property="og:site_name" content="Олег Казанин">
|
||
<meta property="og:title" content="Подготовить инфраструктуру для K3s в Proxmox">
|
||
<meta property="og:description" content="Создаём 5 VM в Proxmox с Debian 12, настраиваем сеть, отключаем swap и готовим систему для K3s. Пошаговая инструкция без сюрпризов.">
|
||
<meta property="og:locale" content="ru">
|
||
<meta property="og:type" content="article">
|
||
<meta property="article:section" content="posts">
|
||
<meta property="article:published_time" content="2025-10-21T00:00:00+00:00">
|
||
<meta property="article:modified_time" content="2025-10-21T00:00:00+00:00">
|
||
<meta property="article:tag" content="Kubernetes">
|
||
<meta property="article:tag" content="K3s">
|
||
<meta property="article:tag" content="Homelab">
|
||
<meta property="article:tag" content="Proxmox">
|
||
<meta property="article:tag" content="Infrastructure">
|
||
<meta property="article:tag" content="Debian">
|
||
<meta property="og:image" content="http://localhost:1313/posts/k3s-infrastructure/featured.png">
|
||
<meta property="og:see_also" content="http://localhost:1313/posts/k3s-installation/">
|
||
<meta property="og:see_also" content="http://localhost:1313/posts/k3s-part1-architecture/">
|
||
|
||
|
||
<meta name="twitter:card" content="summary_large_image">
|
||
<meta name="twitter:image" content="http://localhost:1313/posts/k3s-infrastructure/featured.png">
|
||
<meta name="twitter:title" content="Подготовить инфраструктуру для K3s в Proxmox">
|
||
<meta name="twitter:description" content="Создаём 5 VM в Proxmox с Debian 12, настраиваем сеть, отключаем swap и готовим систему для K3s. Пошаговая инструкция без сюрпризов.">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<link
|
||
type="text/css"
|
||
rel="stylesheet"
|
||
href="/css/main.bundle.min.b5bc3f4587655153415b7825fd1716f97df9c99f87c23f81146f4dd4f9f49f04ad031e3b5f0ee5c0416707a1455ca2cfa8fc1f3a19ece1486b0126dcd310a63e.css"
|
||
integrity="sha512-tbw/RYdlUVNBW3gl/RcW+X35yZ+Hwj+BFG9N1Pn0nwStAx47Xw7lwEFnB6FFXKLPqPwfOhns4UhrASbc0xCmPg==">
|
||
|
||
|
||
|
||
<script
|
||
type="text/javascript"
|
||
src="/js/appearance.min.a0c4d367419d691bf95fc98ffcaf55ce81db3412c3dfbd6c4fbe968f56f77347f5a8512b0916a65a5f496dbec1ef0590dbadcf2fbd0de3c919e525f11c32d0e3.js"
|
||
integrity="sha512-oMTTZ0GdaRv5X8mP/K9VzoHbNBLD371sT76Wj1b3c0f1qFErCRamWl9Jbb7B7wWQ263PL70N48kZ5SXxHDLQ4w=="></script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<script src="/lib/zoom/zoom.min.umd.a527109b68c082a70f3697716dd72a9d5aa8b545cf800cecbbc7399f2ca6f6e0ce3e431f2062b48bbfa47c9ea42822714060bef309be073f49b9c0e30d318d7b.js" integrity="sha512-pScQm2jAgqcPNpdxbdcqnVqotUXPgAzsu8c5nyym9uDOPkMfIGK0i7+kfJ6kKCJxQGC+8wm+Bz9JucDjDTGNew=="></script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<script
|
||
defer
|
||
type="text/javascript"
|
||
id="script-bundle"
|
||
src="/js/main.bundle.min.bdda7dece6cbaf08deef7d254f7f842f3261c2524d247905127c9a20decc03f1011a2950048464c79272c1ce0705a49a41147f39f2b95163bb71d404b33263ef.js"
|
||
integrity="sha512-vdp97ObLrwje730lT3+ELzJhwlJNJHkFEnyaIN7MA/EBGilQBIRkx5Jywc4HBaSaQRR/OfK5UWO7cdQEszJj7w=="
|
||
data-copy="Копировать"
|
||
data-copied="Скопировано"></script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<script type="module" src="/js/firebase.min.cad74e0625f72f359ec6d6fed579b87733749de70400e7614048050ed08832ee3f58983d5d139fb1ddc5f7f2f5047d45ed80ec923534a3660fc3a7965f936866.js" integrity="sha512-ytdOBiX3LzWextb+1Xm4dzN0necEAOdhQEgFDtCIMu4/WJg9XROfsd3F9/L1BH1F7YDskjU0o2YPw6eWX5NoZg=="></script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<script id="firebase-config"
|
||
type="application/json"
|
||
data-views="views_posts/k3s-infrastructure/index.md"
|
||
data-likes="likes_posts/k3s-infrastructure/index.md">
|
||
{
|
||
"config": {
|
||
"apiKey": "AIzaSyBBfzADrGgnwTIyW67gfZSrAtkoybxvmdI",
|
||
"authDomain": "oakazanin-hugo-blowfish.firebaseapp.com",
|
||
"projectId": "oakazanin-hugo-blowfish",
|
||
"storageBucket": "oakazanin-hugo-blowfish.firebasestorage.app",
|
||
"messagingSenderId": "945151844512",
|
||
"appId": "1:945151844512:web:22602cc010f5b7e0cca9c5",
|
||
"measurementId": ""
|
||
}
|
||
}
|
||
</script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
||
<link rel="manifest" href="/site.webmanifest">
|
||
|
||
|
||
|
||
<script type="application/ld+json">
|
||
[{
|
||
"@context": "https://schema.org",
|
||
"@type": "Article",
|
||
"articleSection": "Posts",
|
||
"name": "Подготовить инфраструктуру для K3s в Proxmox",
|
||
"headline": "Подготовить инфраструктуру для K3s в Proxmox",
|
||
"description": "Создаём 5 VM в Proxmox с Debian 12, настраиваем сеть, отключаем swap и готовим систему для K3s. Пошаговая инструкция без сюрпризов.",
|
||
"inLanguage": "ru",
|
||
"url" : "http://localhost:1313/posts/k3s-infrastructure/",
|
||
"author" : {
|
||
"@type": "Person",
|
||
"name": "Олег Казанин"
|
||
},
|
||
"copyrightYear": "2025",
|
||
"dateCreated": "2025-10-21T00:00:00\u002b00:00",
|
||
"datePublished": "2025-10-21T00:00:00\u002b00:00",
|
||
|
||
"dateModified": "2025-10-21T00:00:00\u002b00:00",
|
||
|
||
"keywords": ["kubernetes","k3s","homelab","proxmox","infrastructure","debian","devops"],
|
||
|
||
"mainEntityOfPage": "true",
|
||
"wordCount": "1954"
|
||
}]
|
||
</script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</head>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<body class="flex flex-col h-screen m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32 text-lg bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral bf-scrollbar">
|
||
<div id="the-top" class="absolute flex self-center">
|
||
<a
|
||
class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600"
|
||
href="#main-content">
|
||
<span class="font-bold text-primary-600 pe-2 dark:text-primary-400">↓</span>
|
||
Перейти к основному содержимому
|
||
</a>
|
||
</div>
|
||
|
||
|
||
<div class="min-h-[148px]"></div>
|
||
<div class="fixed inset-x-0 z-100">
|
||
<div
|
||
id="menu-blur"
|
||
class="absolute opacity-0 inset-x-0 top-0 h-full single_hero_background nozoom backdrop-blur-2xl shadow-2xl bg-neutral/25 dark:bg-neutral-800/25"></div>
|
||
<div class="relative m-auto leading-7 max-w-7xl px-6 sm:px-14 md:px-24 lg:px-32">
|
||
<div class="main-menu flex items-center w-full gap-2 p-1 pl-0">
|
||
|
||
|
||
|
||
<div>
|
||
<a href="/" class="flex">
|
||
<span class="sr-only">Олег Казанин</span>
|
||
|
||
<img
|
||
src="/img/logo.png"
|
||
width="285"
|
||
height="175"
|
||
class="logo max-h-20 max-w-20 object-scale-down object-left nozoom"
|
||
alt="">
|
||
|
||
</a>
|
||
</div>
|
||
|
||
|
||
|
||
<div class="flex items-center ms-auto">
|
||
<div class="hidden md:flex">
|
||
<nav class="flex items-center gap-x-5 h-12">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<button
|
||
id="search-button"
|
||
aria-label="Search"
|
||
class="text-base bf-icon-color-hover"
|
||
title="Поиск (/)">
|
||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
||
</span>
|
||
</button>
|
||
|
||
|
||
|
||
<div class="flex items-center">
|
||
<button
|
||
id="appearance-switcher"
|
||
aria-label="Dark mode switcher"
|
||
type="button"
|
||
class="text-base bf-icon-color-hover">
|
||
<div class="flex items-center justify-center dark:hidden">
|
||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
||
</span>
|
||
</div>
|
||
<div class="items-center justify-center hidden dark:flex">
|
||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
||
</span>
|
||
</div>
|
||
</button>
|
||
</div>
|
||
|
||
</nav>
|
||
|
||
|
||
|
||
</div>
|
||
<div class="flex md:hidden">
|
||
<div class="flex items-center h-14 gap-4">
|
||
|
||
<button
|
||
id="search-button-mobile"
|
||
aria-label="Search"
|
||
class="flex items-center justify-center bf-icon-color-hover"
|
||
title="Поиск (/)">
|
||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
||
</span>
|
||
</button>
|
||
|
||
|
||
|
||
<button
|
||
id="appearance-switcher-mobile"
|
||
type="button"
|
||
aria-label="Dark mode switcher"
|
||
class="flex items-center justify-center text-neutral-900 hover:text-primary-600 dark:text-neutral-200 dark:hover:text-primary-400">
|
||
<div class="dark:hidden">
|
||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M32 256c0-123.8 100.3-224 223.8-224c11.36 0 29.7 1.668 40.9 3.746c9.616 1.777 11.75 14.63 3.279 19.44C245 86.5 211.2 144.6 211.2 207.8c0 109.7 99.71 193 208.3 172.3c9.561-1.805 16.28 9.324 10.11 16.95C387.9 448.6 324.8 480 255.8 480C132.1 480 32 379.6 32 256z"/></svg>
|
||
</span>
|
||
</div>
|
||
<div class="hidden dark:block">
|
||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 159.1c-53.02 0-95.1 42.98-95.1 95.1S202.1 351.1 256 351.1s95.1-42.98 95.1-95.1S309 159.1 256 159.1zM509.3 347L446.1 255.1l63.15-91.01c6.332-9.125 1.104-21.74-9.826-23.72l-109-19.7l-19.7-109c-1.975-10.93-14.59-16.16-23.72-9.824L256 65.89L164.1 2.736c-9.125-6.332-21.74-1.107-23.72 9.824L121.6 121.6L12.56 141.3C1.633 143.2-3.596 155.9 2.736 164.1L65.89 256l-63.15 91.01c-6.332 9.125-1.105 21.74 9.824 23.72l109 19.7l19.7 109c1.975 10.93 14.59 16.16 23.72 9.824L256 446.1l91.01 63.15c9.127 6.334 21.75 1.107 23.72-9.822l19.7-109l109-19.7C510.4 368.8 515.6 356.1 509.3 347zM256 383.1c-70.69 0-127.1-57.31-127.1-127.1c0-70.69 57.31-127.1 127.1-127.1s127.1 57.3 127.1 127.1C383.1 326.7 326.7 383.1 256 383.1z"/></svg>
|
||
</span>
|
||
</div>
|
||
</button>
|
||
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<script
|
||
type="text/javascript"
|
||
src="/js/background-blur.min.605b3b942818f0ab5a717ae446135ec46b8ee5a2ad12ae56fb90dc2a76ce30c388f9fec8bcc18db15bd47e3fa8a09d779fa12aa9c184cf614a315bc72c6c163d.js"
|
||
integrity="sha512-YFs7lCgY8KtacXrkRhNexGuO5aKtEq5W+5DcKnbOMMOI+f7IvMGNsVvUfj+ooJ13n6EqqcGEz2FKMVvHLGwWPQ=="
|
||
data-blur-id="menu-blur"></script>
|
||
|
||
|
||
<div class="relative flex flex-col grow">
|
||
<main id="main-content" class="grow">
|
||
|
||
|
||
<article>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div id="hero" class="h-[150px] md:h-[200px]"></div>
|
||
|
||
<div class="fixed inset-x-0 top-0 h-[800px] single_hero_background nozoom">
|
||
|
||
|
||
|
||
<img
|
||
id="background-image"
|
||
src="/posts/k3s-infrastructure/featured_hu_16a8e5a35380d2ac.png"
|
||
role="presentation"
|
||
loading="eager"
|
||
decoding="async"
|
||
fetchpriority="high"
|
||
class="absolute inset-0 w-full h-full object-cover"
|
||
>
|
||
<div
|
||
class="absolute inset-0 bg-gradient-to-t from-neutral dark:from-neutral-800 to-transparent mix-blend-normal"></div>
|
||
<div
|
||
class="absolute inset-0 opacity-60 bg-gradient-to-t from-neutral dark:from-neutral-800 to-neutral-100 dark:to-neutral-800 mix-blend-normal"></div>
|
||
</div>
|
||
|
||
|
||
<div
|
||
id="background-blur"
|
||
class="fixed opacity-0 inset-x-0 top-0 h-full single_hero_background nozoom backdrop-blur-xl bg-neutral-100/75 dark:bg-neutral-800/60"></div>
|
||
|
||
|
||
<script
|
||
type="text/javascript"
|
||
src="/js/background-blur.min.605b3b942818f0ab5a717ae446135ec46b8ee5a2ad12ae56fb90dc2a76ce30c388f9fec8bcc18db15bd47e3fa8a09d779fa12aa9c184cf614a315bc72c6c163d.js"
|
||
integrity="sha512-YFs7lCgY8KtacXrkRhNexGuO5aKtEq5W+5DcKnbOMMOI+f7IvMGNsVvUfj+ooJ13n6EqqcGEz2FKMVvHLGwWPQ=="
|
||
data-blur-id="background-blur"
|
||
data-image-id="background-image"
|
||
data-image-url="/posts/k3s-infrastructure/featured_hu_16a8e5a35380d2ac.png"></script>
|
||
|
||
|
||
|
||
|
||
|
||
<header id="single_header" class="mt-5 max-w-prose">
|
||
|
||
<h1 class="mt-0 text-4xl font-extrabold text-neutral-900 dark:text-neutral">
|
||
Подготовить инфраструктуру для K3s в Proxmox
|
||
</h1>
|
||
<div class="mt-1 mb-6 text-base text-neutral-500 dark:text-neutral-400 print:hidden">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="flex flex-row flex-wrap items-center">
|
||
|
||
|
||
<time datetime="2025-10-21T00:00:00+00:00">21 октября 2025</time><span class="px-2 text-primary-500">·</span><span title="Время чтения">10 минут</span><span class="px-2 text-primary-500">·</span><span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span
|
||
id="views_posts/k3s-infrastructure/index.md"
|
||
class="animate-pulse inline-block text-transparent max-h-3 rounded-full -mt-[2px] align-middle bg-neutral-300 dark:bg-neutral-400"
|
||
title="views"
|
||
>loading</span
|
||
>
|
||
<span class="inline-block align-text-bottom"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512">
|
||
<path fill="currentColor" d="M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM432 256c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zM288 192c0 35.3-28.7 64-64 64c-11.5 0-22.3-3-31.6-8.4c-.2 2.8-.4 5.5-.4 8.4c0 53 43 96 96 96s96-43 96-96s-43-96-96-96c-2.8 0-5.6 .1-8.4 .4c5.3 9.3 8.4 20.1 8.4 31.6z"/></svg></span></span>
|
||
</span>
|
||
<span class="px-2 text-primary-500">·</span><span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span
|
||
id="likes_posts/k3s-infrastructure/index.md"
|
||
class="animate-pulse inline-block text-transparent max-h-3 rounded-full -mt-[2px] align-middle bg-neutral-300 dark:bg-neutral-400"
|
||
title="likes"
|
||
>loading</span
|
||
>
|
||
<span class="inline-block align-text-bottom"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||
<path fill="currentColor" d="M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9L464.4 300.4c30.4-28.3 47.6-68 47.6-109.5v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5z"/></svg></span></span>
|
||
</span>
|
||
<span class="px-2 text-primary-500">·</span><span>
|
||
<button
|
||
id="button_likes"
|
||
class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400">
|
||
<span id="button_likes_heart" class="inline-block align-text-bottom hidden"
|
||
><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||
<path fill="currentColor" d="M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9L464.4 300.4c30.4-28.3 47.6-68 47.6-109.5v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5z"/></svg></span>
|
||
</span>
|
||
<span id="button_likes_emtpty_heart" class="inline-block align-text-bottom"
|
||
><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||
<path fill="currentColor" d="M244 84L255.1 96L267.1 84.02C300.6 51.37 347 36.51 392.6 44.1C461.5 55.58 512 115.2 512 185.1V190.9C512 232.4 494.8 272.1 464.4 300.4L283.7 469.1C276.2 476.1 266.3 480 256 480C245.7 480 235.8 476.1 228.3 469.1L47.59 300.4C17.23 272.1 0 232.4 0 190.9V185.1C0 115.2 50.52 55.58 119.4 44.1C164.1 36.51 211.4 51.37 244 84C243.1 84 244 84.01 244 84L244 84zM255.1 163.9L210.1 117.1C188.4 96.28 157.6 86.4 127.3 91.44C81.55 99.07 48 138.7 48 185.1V190.9C48 219.1 59.71 246.1 80.34 265.3L256 429.3L431.7 265.3C452.3 246.1 464 219.1 464 190.9V185.1C464 138.7 430.4 99.07 384.7 91.44C354.4 86.4 323.6 96.28 301.9 117.1L255.1 163.9z"/></svg></span></span
|
||
>
|
||
<span id="button_likes_text"> Like</span>
|
||
</button>
|
||
</span>
|
||
|
||
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
<div class="flex flex-row flex-wrap items-center">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<a class="relative mt-[0.5rem] me-2" href="/tags/kubernetes/">
|
||
<span class="flex cursor-pointer">
|
||
<span
|
||
class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400">
|
||
Kubernetes
|
||
</span>
|
||
</span>
|
||
|
||
</a>
|
||
|
||
<a class="relative mt-[0.5rem] me-2" href="/tags/k3s/">
|
||
<span class="flex cursor-pointer">
|
||
<span
|
||
class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400">
|
||
K3s
|
||
</span>
|
||
</span>
|
||
|
||
</a>
|
||
|
||
<a class="relative mt-[0.5rem] me-2" href="/tags/homelab/">
|
||
<span class="flex cursor-pointer">
|
||
<span
|
||
class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400">
|
||
Homelab
|
||
</span>
|
||
</span>
|
||
|
||
</a>
|
||
|
||
<a class="relative mt-[0.5rem] me-2" href="/tags/proxmox/">
|
||
<span class="flex cursor-pointer">
|
||
<span
|
||
class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400">
|
||
Proxmox
|
||
</span>
|
||
</span>
|
||
|
||
</a>
|
||
|
||
<a class="relative mt-[0.5rem] me-2" href="/tags/infrastructure/">
|
||
<span class="flex cursor-pointer">
|
||
<span
|
||
class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400">
|
||
Infrastructure
|
||
</span>
|
||
</span>
|
||
|
||
</a>
|
||
|
||
<a class="relative mt-[0.5rem] me-2" href="/tags/debian/">
|
||
<span class="flex cursor-pointer">
|
||
<span
|
||
class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400">
|
||
Debian
|
||
</span>
|
||
</span>
|
||
|
||
</a>
|
||
|
||
<a class="relative mt-[0.5rem] me-2" href="/tags/devops/">
|
||
<span class="flex cursor-pointer">
|
||
<span
|
||
class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400">
|
||
Devops
|
||
</span>
|
||
</span>
|
||
|
||
</a>
|
||
|
||
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="flex author">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<img
|
||
class="!mt-0 !mb-0 h-24 w-24 rounded-full me-4"
|
||
width="96"
|
||
height="96"
|
||
alt="Олег Казанин"
|
||
src="/img/profile_hu_9cb3a1ec5563cd7f.png"
|
||
data-zoom-src="/img/profile_hu_1a9fbd8177a94ed5.png">
|
||
|
||
|
||
<div class="place-self-center">
|
||
|
||
<div class="text-[0.6rem] uppercase leading-3 text-neutral-500 dark:text-neutral-400">
|
||
Автор
|
||
</div>
|
||
<div class="font-semibold leading-6 text-neutral-800 dark:text-neutral-300">
|
||
Олег Казанин
|
||
</div>
|
||
|
||
|
||
<div class="text-sm text-neutral-700 dark:text-neutral-400">Строю полезную инфраструктуру на Open Source стеке. Документирую грабли, чтобы вы на них не наступали.</div>
|
||
|
||
<div class="text-2xl sm:text-lg">
|
||
<div class="flex flex-wrap text-neutral-400 dark:text-neutral-500">
|
||
|
||
|
||
<a
|
||
class="px-1 hover:text-primary-700 dark:hover:text-primary-400"
|
||
href="mailto:oakazanin@ya.ru"
|
||
target="_blank"
|
||
aria-label="Email"
|
||
title="Email"
|
||
rel="me noopener noreferrer"
|
||
><span class="inline-block align-text-bottom"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M207.8 20.73c-93.45 18.32-168.7 93.66-187 187.1c-27.64 140.9 68.65 266.2 199.1 285.1c19.01 2.888 36.17-12.26 36.17-31.49l.0001-.6631c0-15.74-11.44-28.88-26.84-31.24c-84.35-12.98-149.2-86.13-149.2-174.2c0-102.9 88.61-185.5 193.4-175.4c91.54 8.869 158.6 91.25 158.6 183.2l0 16.16c0 22.09-17.94 40.05-40 40.05s-40.01-17.96-40.01-40.05v-120.1c0-8.847-7.161-16.02-16.01-16.02l-31.98 .0036c-7.299 0-13.2 4.992-15.12 11.68c-24.85-12.15-54.24-16.38-86.06-5.106c-38.75 13.73-68.12 48.91-73.72 89.64c-9.483 69.01 43.81 128 110.9 128c26.44 0 50.43-9.544 69.59-24.88c24 31.3 65.23 48.69 109.4 37.49C465.2 369.3 496 324.1 495.1 277.2V256.3C495.1 107.1 361.2-9.332 207.8 20.73zM239.1 304.3c-26.47 0-48-21.56-48-48.05s21.53-48.05 48-48.05s48 21.56 48 48.05S266.5 304.3 239.1 304.3z"/></svg>
|
||
</span></span></a
|
||
>
|
||
|
||
|
||
|
||
<a
|
||
class="px-1 hover:text-primary-700 dark:hover:text-primary-400"
|
||
href="https://t.me/oa_msk"
|
||
target="_blank"
|
||
aria-label="Telegram"
|
||
title="Telegram"
|
||
rel="me noopener noreferrer"
|
||
><span class="inline-block align-text-bottom"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path fill="currentColor" d="M248,8C111.033,8,0,119.033,0,256S111.033,504,248,504,496,392.967,496,256,384.967,8,248,8ZM362.952,176.66c-3.732,39.215-19.881,134.378-28.1,178.3-3.476,18.584-10.322,24.816-16.948,25.425-14.4,1.326-25.338-9.517-39.287-18.661-21.827-14.308-34.158-23.215-55.346-37.177-24.485-16.135-8.612-25,5.342-39.5,3.652-3.793,67.107-61.51,68.335-66.746.153-.655.3-3.1-1.154-4.384s-3.59-.849-5.135-.5q-3.283.746-104.608,69.142-14.845,10.194-26.894,9.934c-8.855-.191-25.888-5.006-38.551-9.123-15.531-5.048-27.875-7.717-26.8-16.291q.84-6.7,18.45-13.7,108.446-47.248,144.628-62.3c68.872-28.647,83.183-33.623,92.511-33.789,2.052-.034,6.639.474,9.61,2.885a10.452,10.452,0,0,1,3.53,6.716A43.765,43.765,0,0,1,362.952,176.66Z"/></svg>
|
||
</span></span></a
|
||
>
|
||
|
||
|
||
|
||
<a
|
||
class="px-1 hover:text-primary-700 dark:hover:text-primary-400"
|
||
href="https://oakazanin.ru/"
|
||
target="_blank"
|
||
aria-label="Link"
|
||
title="Link"
|
||
rel="me noopener noreferrer"
|
||
><span class="inline-block align-text-bottom"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path fill="currentColor" d="M172.5 131.1C228.1 75.51 320.5 75.51 376.1 131.1C426.1 181.1 433.5 260.8 392.4 318.3L391.3 319.9C381 334.2 361 337.6 346.7 327.3C332.3 317 328.9 297 339.2 282.7L340.3 281.1C363.2 249 359.6 205.1 331.7 177.2C300.3 145.8 249.2 145.8 217.7 177.2L105.5 289.5C73.99 320.1 73.99 372 105.5 403.5C133.3 431.4 177.3 435 209.3 412.1L210.9 410.1C225.3 400.7 245.3 404 255.5 418.4C265.8 432.8 262.5 452.8 248.1 463.1L246.5 464.2C188.1 505.3 110.2 498.7 60.21 448.8C3.741 392.3 3.741 300.7 60.21 244.3L172.5 131.1zM467.5 380C411 436.5 319.5 436.5 263 380C213 330 206.5 251.2 247.6 193.7L248.7 192.1C258.1 177.8 278.1 174.4 293.3 184.7C307.7 194.1 311.1 214.1 300.8 229.3L299.7 230.9C276.8 262.1 280.4 306.9 308.3 334.8C339.7 366.2 390.8 366.2 422.3 334.8L534.5 222.5C566 191 566 139.1 534.5 108.5C506.7 80.63 462.7 76.99 430.7 99.9L429.1 101C414.7 111.3 394.7 107.1 384.5 93.58C374.2 79.2 377.5 59.21 391.9 48.94L393.5 47.82C451 6.731 529.8 13.25 579.8 63.24C636.3 119.7 636.3 211.3 579.8 267.7L467.5 380z"/></svg>
|
||
</span></span></a
|
||
>
|
||
|
||
|
||
|
||
<a
|
||
class="px-1 hover:text-primary-700 dark:hover:text-primary-400"
|
||
href="https://git.jn4.ru/astronit"
|
||
target="_blank"
|
||
aria-label="Gitea"
|
||
title="Gitea"
|
||
rel="me noopener noreferrer"
|
||
><span class="inline-block align-text-bottom"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="5.67 143.05 628.65 387.55"><path fill="currentColor" d="M115.912 143.075c-6.462 0-13.762.525-22.012 2.325-8.7 1.8-33.5 7.4-53.8 26.9C-4.9 212.4 6.6 276.2 8 285.8c1.7 11.7 6.9 44.2 31.7 72.5 45.8 56.1 144.4 54.8 144.4 54.8s12.1 28.9 30.6 55.5c25 33.1 50.7 58.9 75.7 62 63 0 188.9-.1 188.9-.1s12 .1 28.3-10.3c14-8.5 26.5-23.4 26.5-23.4S547 483 565 451.5c5.5-9.7 10.1-19.1 14.1-28 0 0 55.2-117.1 55.2-231.1-1.1-34.5-9.6-40.6-11.6-42.6-4.1-4.1-9.6-4-9.6-4s-117.2 6.6-177.9 8c-13.267.3-26.433.597-39.5.697l.1 117.002s57.4 24.202 83.1 40.102c3.7 2.3 10.2 6.798 12.9 14.398 2.1 6.1 2 13.101-1 19.301l-61 126.9c-6.2 12.7-21.4 18.1-33.9 12l-126.9-61c-12.5-6-17.9-21.2-11.8-33.8l61-126.9c6-12.5 21.2-17.9 33.8-11.8a5290.322 5290.322 0 0 0 27 12.954c0-36.449-.1-109.053-.1-109.053-29 .4-89.2-2.201-89.2-2.201s-141.4-7.1-156.8-8.5c-4.9-.3-10.525-.825-16.988-.825zm12.188 48.026s7.1 59.399 15.7 94.199c7.2 29.2 24.8 77.7 24.8 77.7s-26.1-3.1-43-9.1c-25.9-8.5-36.9-18.7-36.9-18.7S69.6 321.8 60 295.4c-16.5-44.2-1.4-71.2-1.4-71.2s8.4-22.5 38.5-30c13.8-3.7 31-3.1 31-3.1z"/><path fill="currentColor" d="M326.8 380.1c-8.2.1-15.4 5.8-17.3 13.8-1.9 8 2 16.3 9.1 20 7.7 4 17.5 1.8 22.7-5.4 5.1-7.1 4.3-16.9-1.8-23.1l24-49.1c1.5.1 3.7.2 6.2-.5 4.1-.9 7.1-3.6 7.1-3.6 4.2 1.8 8.6 3.8 13.2 6.1 4.8 2.4 9.3 4.9 13.4 7.3.9.5 1.8 1.1 2.8 1.9 1.6 1.3 3.4 3.1 4.7 5.5 1.9 5.5-1.9 14.9-1.9 14.9-2.3 7.6-18.4 40.6-18.4 40.6-8.1-.2-15.3 5-17.7 12.5-2.6 8.1 1.1 17.3 8.9 21.3 7.8 4 17.4 1.7 22.5-5.3 5-6.8 4.6-16.3-1.1-22.6 1.9-3.7 3.7-7.4 5.6-11.3 5-10.4 13.5-30.4 13.5-30.4.9-1.7 5.7-10.3 2.7-21.3-2.5-11.4-12.6-16.7-12.6-16.7-12.2-7.9-29.2-15.2-29.2-15.2s0-4.1-1.1-7.1c-1.1-3.1-2.8-5.1-3.9-6.3 4.7-9.7 9.4-19.3 14.1-29-4.1-2-8.1-4-12.2-6.1-4.8 9.8-9.7 19.7-14.5 29.5-6.7-.1-12.9 3.5-16.1 9.4-3.4 6.3-2.7 14.1 1.9 19.8l-24.6 50.4z"/></svg></span></span></a
|
||
>
|
||
|
||
|
||
|
||
<a
|
||
class="px-1 hover:text-primary-700 dark:hover:text-primary-400"
|
||
href="https://obrtv.ru/a/chiefengineer"
|
||
target="_blank"
|
||
aria-label="Peertube"
|
||
title="Peertube"
|
||
rel="me noopener noreferrer"
|
||
><span class="inline-block align-text-bottom"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 365 486.53"><path fill="currentColor" d="M0,243.26V0l182.5,121.63L0,243.26Z"/><path fill="currentColor" d="M0,486.53v-243.26l182.5,121.63L0,486.53Z"/><path fill="currentColor" d="M182.5,364.9V121.63l182.5,121.63-182.5,121.63Z"/></svg></span></span></a
|
||
>
|
||
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="mb-5"></div>
|
||
|
||
|
||
|
||
</header>
|
||
|
||
|
||
<section class="flex flex-col max-w-full mt-0 prose dark:prose-invert lg:flex-row">
|
||
|
||
|
||
|
||
|
||
|
||
<div class="order-first lg:ms-auto px-0 lg:order-last lg:ps-8 lg:max-w-2xs">
|
||
<div class="toc ps-5 print:hidden lg:sticky lg:top-[140px]">
|
||
<details
|
||
open
|
||
id="TOCView"
|
||
class="toc-right mt-0 overflow-y-auto overscroll-contain bf-scrollbar rounded-lg -ms-5 ps-5 pe-2 hidden lg:block">
|
||
<summary
|
||
class="block py-1 text-lg font-semibold cursor-pointer bg-neutral-100 text-neutral-800 -ms-5 ps-5 dark:bg-neutral-700 dark:text-neutral-100 lg:hidden">
|
||
Оглавление
|
||
</summary>
|
||
<div
|
||
class="min-w-[220px] py-2 border-dotted border-s-1 -ms-5 ps-5 dark:border-neutral-600">
|
||
<nav id="TableOfContents">
|
||
<ul>
|
||
<li><a href="#для-кого-это">Для кого это</a></li>
|
||
<li><a href="#что-понадобится">Что понадобится</a></li>
|
||
<li><a href="#шаг-1-скачать-cloud-image-debian-12">Шаг 1: Скачать cloud image Debian 12</a></li>
|
||
<li><a href="#шаг-2-создать-template-vm">Шаг 2: Создать template VM</a>
|
||
<ul>
|
||
<li><a href="#21-задать-переменные">2.1. Задать переменные</a></li>
|
||
<li><a href="#22-создать-vm-и-импортировать-диск">2.2. Создать VM и импортировать диск</a></li>
|
||
<li><a href="#23-настроить-диск-и-загрузку">2.3. Настроить диск и загрузку</a></li>
|
||
<li><a href="#24-настроить-cloud-init">2.4. Настроить cloud-init</a></li>
|
||
<li><a href="#25-превратить-в-template">2.5. Превратить в template</a></li>
|
||
<li><a href="#checkpoint-template-создан">Checkpoint: Template создан</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#шаг-3-клонировать-master-ноды">Шаг 3: Клонировать master ноды</a></li>
|
||
<li><a href="#шаг-4-клонировать-worker-ноды">Шаг 4: Клонировать worker ноды</a></li>
|
||
<li><a href="#шаг-5-запустить-все-vm">Шаг 5: Запустить все VM</a>
|
||
<ul>
|
||
<li><a href="#checkpoint-vm-работают">Checkpoint: VM работают</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#шаг-6-подготовить-ос-на-всех-нодах">Шаг 6: Подготовить ОС на всех нодах</a>
|
||
<ul>
|
||
<li><a href="#61-обновить-систему">6.1. Обновить систему</a></li>
|
||
<li><a href="#62-отключить-swap">6.2. Отключить swap</a></li>
|
||
<li><a href="#63-загрузить-kernel-модули">6.3. Загрузить kernel-модули</a></li>
|
||
<li><a href="#64-настроить-sysctl">6.4. Настроить sysctl</a></li>
|
||
<li><a href="#65-проверить-cgroup-v2">6.5. Проверить cgroup v2</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#шаг-7-настроить-firewall">Шаг 7: Настроить firewall</a>
|
||
<ul>
|
||
<li><a href="#71-на-master-нодах-201-202-203">7.1. На master нодах (201, 202, 203)</a></li>
|
||
<li><a href="#72-на-worker-нодах-210-211">7.2. На worker нодах (210, 211)</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#шаг-8-настроить-etchosts">Шаг 8: Настроить /etc/hosts</a></li>
|
||
<li><a href="#финальная-проверка">Финальная проверка</a></li>
|
||
<li><a href="#troubleshooting">Troubleshooting</a></li>
|
||
<li><a href="#итог">Итог</a></li>
|
||
</ul>
|
||
</nav>
|
||
</div>
|
||
</details>
|
||
<details class="toc-inside mt-0 overflow-hidden rounded-lg -ms-5 ps-5 lg:hidden">
|
||
<summary
|
||
class="py-1 text-lg font-semibold cursor-pointer bg-neutral-100 text-neutral-800 -ms-5 ps-5 dark:bg-neutral-700 dark:text-neutral-100 lg:hidden">
|
||
Оглавление
|
||
</summary>
|
||
<div
|
||
class="py-2 border-dotted border-neutral-300 border-s-1 -ms-5 ps-5 dark:border-neutral-600">
|
||
<nav id="TableOfContents">
|
||
<ul>
|
||
<li><a href="#для-кого-это">Для кого это</a></li>
|
||
<li><a href="#что-понадобится">Что понадобится</a></li>
|
||
<li><a href="#шаг-1-скачать-cloud-image-debian-12">Шаг 1: Скачать cloud image Debian 12</a></li>
|
||
<li><a href="#шаг-2-создать-template-vm">Шаг 2: Создать template VM</a>
|
||
<ul>
|
||
<li><a href="#21-задать-переменные">2.1. Задать переменные</a></li>
|
||
<li><a href="#22-создать-vm-и-импортировать-диск">2.2. Создать VM и импортировать диск</a></li>
|
||
<li><a href="#23-настроить-диск-и-загрузку">2.3. Настроить диск и загрузку</a></li>
|
||
<li><a href="#24-настроить-cloud-init">2.4. Настроить cloud-init</a></li>
|
||
<li><a href="#25-превратить-в-template">2.5. Превратить в template</a></li>
|
||
<li><a href="#checkpoint-template-создан">Checkpoint: Template создан</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#шаг-3-клонировать-master-ноды">Шаг 3: Клонировать master ноды</a></li>
|
||
<li><a href="#шаг-4-клонировать-worker-ноды">Шаг 4: Клонировать worker ноды</a></li>
|
||
<li><a href="#шаг-5-запустить-все-vm">Шаг 5: Запустить все VM</a>
|
||
<ul>
|
||
<li><a href="#checkpoint-vm-работают">Checkpoint: VM работают</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#шаг-6-подготовить-ос-на-всех-нодах">Шаг 6: Подготовить ОС на всех нодах</a>
|
||
<ul>
|
||
<li><a href="#61-обновить-систему">6.1. Обновить систему</a></li>
|
||
<li><a href="#62-отключить-swap">6.2. Отключить swap</a></li>
|
||
<li><a href="#63-загрузить-kernel-модули">6.3. Загрузить kernel-модули</a></li>
|
||
<li><a href="#64-настроить-sysctl">6.4. Настроить sysctl</a></li>
|
||
<li><a href="#65-проверить-cgroup-v2">6.5. Проверить cgroup v2</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#шаг-7-настроить-firewall">Шаг 7: Настроить firewall</a>
|
||
<ul>
|
||
<li><a href="#71-на-master-нодах-201-202-203">7.1. На master нодах (201, 202, 203)</a></li>
|
||
<li><a href="#72-на-worker-нодах-210-211">7.2. На worker нодах (210, 211)</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="#шаг-8-настроить-etchosts">Шаг 8: Настроить /etc/hosts</a></li>
|
||
<li><a href="#финальная-проверка">Финальная проверка</a></li>
|
||
<li><a href="#troubleshooting">Troubleshooting</a></li>
|
||
<li><a href="#итог">Итог</a></li>
|
||
</ul>
|
||
</nav>
|
||
</div>
|
||
</details>
|
||
|
||
|
||
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
<div class="min-w-0 min-h-0 max-w-fit">
|
||
|
||
<details
|
||
class="mt-2 mb-5 overflow-hidden rounded-lg ms-0 ps-5"
|
||
open>
|
||
|
||
<summary
|
||
class="py-1 text-lg font-semibold cursor-pointer bg-primary-200 text-neutral-800 -ms-5 ps-5 dark:bg-primary-800 dark:text-neutral-100">
|
||
K3s HA кластер для homelab -
|
||
Эта статья — часть серии.
|
||
</summary>
|
||
|
||
|
||
|
||
<div
|
||
class="py-1 border-dotted border-neutral-300 border-s-1 -ms-5 ps-5 dark:border-neutral-600">
|
||
<a href="/posts/k3s-part1-architecture/">
|
||
Часть 1:
|
||
K3s HA для homelab: архитектура без боли
|
||
</a>
|
||
</div>
|
||
|
||
|
||
|
||
<div
|
||
class="py-1 border-dotted border-neutral-300 border-s-1 -ms-5 ps-5 dark:border-neutral-600">
|
||
Часть 2:
|
||
Читаешь сейчас
|
||
</div>
|
||
|
||
|
||
|
||
<div
|
||
class="py-1 border-dotted border-neutral-300 border-s-1 -ms-5 ps-5 dark:border-neutral-600">
|
||
<a href="/posts/k3s-installation/">
|
||
Часть 3:
|
||
Установить K3s HA кластер
|
||
</a>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
</details>
|
||
|
||
|
||
<div class="article-content max-w-prose mb-20">
|
||
<p>Архитектура спланирована, ресурсы посчитаны - пора создавать виртуальные машины. В этой статье подготовим 5 VM в Proxmox и настроим ОС так, чтобы K3s установился без сюрпризов.</p>
|
||
<p>Звучит просто? В теории - да. На практике: забытый swap, cgroup v1 вместо v2, закрытые порты firewall - и вы тратите час на отладку того, что должно было работать “из коробки”.</p>
|
||
<p><strong>Результат:</strong> 5 VM (3 master + 2 worker) с Debian 12, настроенной сетью, отключённым swap и правильными параметрами ядра. SSH доступ работает, ноды видят друг друга.</p>
|
||
<hr>
|
||
|
||
<h2 class="relative group">Для кого это
|
||
<div id="для-кого-это" class="anchor"></div>
|
||
|
||
<span
|
||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%d0%b4%d0%bb%d1%8f-%d0%ba%d0%be%d0%b3%d0%be-%d1%8d%d1%82%d0%be" aria-label="Якорь">#</a>
|
||
</span>
|
||
|
||
</h2>
|
||
<p><strong>Подходит:</strong></p>
|
||
<ul>
|
||
<li>Прочитал первую статью (или понимаешь архитектуру K3s HA)</li>
|
||
<li>Есть Proxmox с 14+ vCPU и 56GB+ RAM свободных</li>
|
||
<li>Умеешь работать в терминале Proxmox (или готов учиться)</li>
|
||
</ul>
|
||
<p><strong>Не подходит:</strong></p>
|
||
<ul>
|
||
<li>Proxmox ещё не установлен - сначала разберись с ним</li>
|
||
<li>Хочешь использовать LXC вместо VM - K3s в контейнерах работает, но с нюансами (не покрываем)</li>
|
||
</ul>
|
||
<hr>
|
||
|
||
<h2 class="relative group">Что понадобится
|
||
<div id="что-понадобится" class="anchor"></div>
|
||
|
||
<span
|
||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%d1%87%d1%82%d0%be-%d0%bf%d0%be%d0%bd%d0%b0%d0%b4%d0%be%d0%b1%d0%b8%d1%82%d1%81%d1%8f" aria-label="Якорь">#</a>
|
||
</span>
|
||
|
||
</h2>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Компонент</th>
|
||
<th>Значение</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td>Proxmox VE</td>
|
||
<td>7.x или 8.x</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Storage pool</td>
|
||
<td>local-lvm или другой (минимум 200GB свободно)</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Сетевой bridge</td>
|
||
<td>vmbr0 (или ваш)</td>
|
||
</tr>
|
||
<tr>
|
||
<td>SSH-ключ</td>
|
||
<td>Публичный ключ для доступа к VM</td>
|
||
</tr>
|
||
<tr>
|
||
<td>ОС для VM</td>
|
||
<td>Debian 12 cloud image</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<hr>
|
||
|
||
<h2 class="relative group">Шаг 1: Скачать cloud image Debian 12
|
||
<div id="шаг-1-скачать-cloud-image-debian-12" class="anchor"></div>
|
||
|
||
<span
|
||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%d1%88%d0%b0%d0%b3-1-%d1%81%d0%ba%d0%b0%d1%87%d0%b0%d1%82%d1%8c-cloud-image-debian-12" aria-label="Якорь">#</a>
|
||
</span>
|
||
|
||
</h2>
|
||
<p>Cloud image - готовый образ с поддержкой cloud-init. Не нужно проходить установщик вручную: задаёшь параметры (IP, пользователь, SSH-ключ) - VM стартует уже настроенной.</p>
|
||
<p><strong>На Proxmox хосте (SSH или Shell в Web UI):</strong></p>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Перейти в директорию для образов</span>
|
||
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> /var/lib/vz/template/iso
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># Скачать Debian 12 cloud image</span>
|
||
</span></span><span class="line"><span class="cl">wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># Проверить</span>
|
||
</span></span><span class="line"><span class="cl">ls -lh debian-12-generic-amd64.qcow2</span></span></code></pre></div></div>
|
||
<p><strong>Ожидаемый результат:</strong></p>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">-rw-r--r-- 1 root root 521M ... debian-12-generic-amd64.qcow2</span></span></code></pre></div></div>
|
||
<!-- СКРИНШОТ: Терминал Proxmox с выводом wget и ls -lh, показывающим скачанный образ ~500MB -->
|
||
<p><strong>Если скачивание медленное:</strong> образ ~500MB, на слабом канале может занять время. Альтернатива - скачать на локальную машину и загрузить через Proxmox Web UI (Datacenter → Storage → Upload).</p>
|
||
<hr>
|
||
|
||
<h2 class="relative group">Шаг 2: Создать template VM
|
||
<div id="шаг-2-создать-template-vm" class="anchor"></div>
|
||
|
||
<span
|
||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%d1%88%d0%b0%d0%b3-2-%d1%81%d0%be%d0%b7%d0%b4%d0%b0%d1%82%d1%8c-template-vm" aria-label="Якорь">#</a>
|
||
</span>
|
||
|
||
</h2>
|
||
<p>Template - шаблон VM, из которого будем клонировать все 5 нод. Настраиваем один раз, клонируем пять.</p>
|
||
|
||
<h3 class="relative group">2.1. Задать переменные
|
||
<div id="21-задать-переменные" class="anchor"></div>
|
||
|
||
<span
|
||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#21-%d0%b7%d0%b0%d0%b4%d0%b0%d1%82%d1%8c-%d0%bf%d0%b5%d1%80%d0%b5%d0%bc%d0%b5%d0%bd%d0%bd%d1%8b%d0%b5" aria-label="Якорь">#</a>
|
||
</span>
|
||
|
||
</h3>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Настрой под свою конфигурацию</span>
|
||
</span></span><span class="line"><span class="cl"><span class="nv">TEMPLATE_ID</span><span class="o">=</span><span class="m">9000</span> <span class="c1"># ID для template (любой свободный)</span>
|
||
</span></span><span class="line"><span class="cl"><span class="nv">STORAGE</span><span class="o">=</span>local-lvm <span class="c1"># Твой storage pool</span>
|
||
</span></span><span class="line"><span class="cl"><span class="nv">BRIDGE</span><span class="o">=</span>vmbr0 <span class="c1"># Сетевой bridge</span>
|
||
</span></span><span class="line"><span class="cl"><span class="nv">SSH_KEY_PATH</span><span class="o">=</span>~/.ssh/id_rsa.pub <span class="c1"># Путь к публичному SSH-ключу</span></span></span></code></pre></div></div>
|
||
<p><strong>Как узнать имя storage:</strong></p>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">pvesm status</span></span></code></pre></div></div>
|
||
<p><strong>Ожидаемый результат</strong></p>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Name Type Status Total Used Available %
|
||
</span></span><span class="line"><span class="cl">local dir active 229199360 9095552 220103808 3.97%
|
||
</span></span><span class="line"><span class="cl">local-lvm pool active 220103964 96 220103868 0.00%</span></span></code></pre></div></div>
|
||
<!-- СКРИНШОТ: Вывод pvesm status с выделенным именем storage pool (например, local-lvm) -->
|
||
|
||
<h3 class="relative group">2.2. Создать VM и импортировать диск
|
||
<div id="22-создать-vm-и-импортировать-диск" class="anchor"></div>
|
||
|
||
<span
|
||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#22-%d1%81%d0%be%d0%b7%d0%b4%d0%b0%d1%82%d1%8c-vm-%d0%b8-%d0%b8%d0%bc%d0%bf%d0%be%d1%80%d1%82%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d1%82%d1%8c-%d0%b4%d0%b8%d1%81%d0%ba" aria-label="Якорь">#</a>
|
||
</span>
|
||
|
||
</h3>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 1. Создать пустую VM</span>
|
||
</span></span><span class="line"><span class="cl">qm create <span class="nv">$TEMPLATE_ID</span> <span class="se">\
|
||
</span></span></span><span class="line"><span class="cl"> --name debian-12-template <span class="se">\
|
||
</span></span></span><span class="line"><span class="cl"> --memory <span class="m">2048</span> <span class="se">\
|
||
</span></span></span><span class="line"><span class="cl"> --cores <span class="m">2</span> <span class="se">\
|
||
</span></span></span><span class="line"><span class="cl"> --net0 virtio,bridge<span class="o">=</span><span class="nv">$BRIDGE</span>
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># 2. Импортировать скачанный образ как диск</span>
|
||
</span></span><span class="line"><span class="cl">qm importdisk <span class="nv">$TEMPLATE_ID</span> <span class="se">\
|
||
</span></span></span><span class="line"><span class="cl"> /var/lib/vz/template/iso/debian-12-generic-amd64.qcow2 <span class="se">\
|
||
</span></span></span><span class="line"><span class="cl"> <span class="nv">$STORAGE</span></span></span></code></pre></div></div>
|
||
<p><strong>Ожидаемый результат:</strong></p>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">importing disk '/var/lib/vz/template/iso/debian-12-generic-amd64.qcow2' to VM 9000 ...
|
||
</span></span><span class="line"><span class="cl">Successfully imported disk as 'unused0:local-lvm:vm-9000-disk-0'</span></span></code></pre></div></div>
|
||
|
||
<h3 class="relative group">2.3. Настроить диск и загрузку
|
||
<div id="23-настроить-диск-и-загрузку" class="anchor"></div>
|
||
|
||
<span
|
||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#23-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b8%d1%82%d1%8c-%d0%b4%d0%b8%d1%81%d0%ba-%d0%b8-%d0%b7%d0%b0%d0%b3%d1%80%d1%83%d0%b7%d0%ba%d1%83" aria-label="Якорь">#</a>
|
||
</span>
|
||
|
||
</h3>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 3. Подключить диск к VM</span>
|
||
</span></span><span class="line"><span class="cl">qm <span class="nb">set</span> <span class="nv">$TEMPLATE_ID</span> <span class="se">\
|
||
</span></span></span><span class="line"><span class="cl"> --scsihw virtio-scsi-pci <span class="se">\
|
||
</span></span></span><span class="line"><span class="cl"> --scsi0 <span class="nv">$STORAGE</span>:vm-<span class="nv">$TEMPLATE_ID</span>-disk-0
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># 4. Настроить загрузку и cloud-init</span>
|
||
</span></span><span class="line"><span class="cl">qm <span class="nb">set</span> <span class="nv">$TEMPLATE_ID</span> <span class="se">\
|
||
</span></span></span><span class="line"><span class="cl"> --boot c <span class="se">\
|
||
</span></span></span><span class="line"><span class="cl"> --bootdisk scsi0 <span class="se">\
|
||
</span></span></span><span class="line"><span class="cl"> --ide2 <span class="nv">$STORAGE</span>:cloudinit <span class="se">\
|
||
</span></span></span><span class="line"><span class="cl"> --serial0 socket <span class="se">\
|
||
</span></span></span><span class="line"><span class="cl"> --vga serial0</span></span></code></pre></div></div>
|
||
|
||
<h3 class="relative group">2.4. Настроить cloud-init
|
||
<div id="24-настроить-cloud-init" class="anchor"></div>
|
||
|
||
<span
|
||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#24-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b8%d1%82%d1%8c-cloud-init" aria-label="Якорь">#</a>
|
||
</span>
|
||
|
||
</h3>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 5. Пользователь, пароль, SSH-ключ</span>
|
||
</span></span><span class="line"><span class="cl">qm <span class="nb">set</span> <span class="nv">$TEMPLATE_ID</span> <span class="se">\
|
||
</span></span></span><span class="line"><span class="cl"> --ciuser k3s <span class="se">\
|
||
</span></span></span><span class="line"><span class="cl"> --cipassword <span class="s2">"ВашНадёжныйПароль"</span> <span class="se">\
|
||
</span></span></span><span class="line"><span class="cl"> --sshkeys <span class="nv">$SSH_KEY_PATH</span> <span class="se">\
|
||
</span></span></span><span class="line"><span class="cl"> --ipconfig0 <span class="nv">ip</span><span class="o">=</span>dhcp
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># 6. Увеличить диск до 32GB (базовый размер для master)</span>
|
||
</span></span><span class="line"><span class="cl">qm resize <span class="nv">$TEMPLATE_ID</span> scsi0 32G</span></span></code></pre></div></div>
|
||
<p><strong>Замени:</strong></p>
|
||
<ul>
|
||
<li><code>ВашНадёжныйПароль</code> - пароль для пользователя k3s (резервный доступ, если SSH не работает)</li>
|
||
<li><code>$SSH_KEY_PATH</code> - путь к твоему публичному ключу</li>
|
||
</ul>
|
||
|
||
<h3 class="relative group">2.5. Превратить в template
|
||
<div id="25-превратить-в-template" class="anchor"></div>
|
||
|
||
<span
|
||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#25-%d0%bf%d1%80%d0%b5%d0%b2%d1%80%d0%b0%d1%82%d0%b8%d1%82%d1%8c-%d0%b2-template" aria-label="Якорь">#</a>
|
||
</span>
|
||
|
||
</h3>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 7. Конвертировать VM в template</span>
|
||
</span></span><span class="line"><span class="cl">qm template <span class="nv">$TEMPLATE_ID</span></span></span></code></pre></div></div>
|
||
<p>После этого VM 9000 станет шаблоном - её нельзя запустить, только клонировать.</p>
|
||
<!-- СКРИНШОТ: Proxmox Web UI - список VM, где debian-12-template отображается с иконкой template (отличается от обычных VM) -->
|
||
|
||
<h3 class="relative group">Checkpoint: Template создан
|
||
<div id="checkpoint-template-создан" class="anchor"></div>
|
||
|
||
<span
|
||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#checkpoint-template-%d1%81%d0%be%d0%b7%d0%b4%d0%b0%d0%bd" aria-label="Якорь">#</a>
|
||
</span>
|
||
|
||
</h3>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Проверить что template существует</span>
|
||
</span></span><span class="line"><span class="cl">qm list <span class="p">|</span> grep template</span></span></code></pre></div></div>
|
||
<p><strong>Ожидаемый результат:</strong></p>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">9000 debian-12-template stopped 2048 32.00 0</span></span></code></pre></div></div>
|
||
<p><strong>Если ошибка “disk import failed”:</strong></p>
|
||
<ul>
|
||
<li>Проверь свободное место: <code>pvesm status</code></li>
|
||
<li>Проверь путь к образу: <code>ls -l /var/lib/vz/template/iso/</code></li>
|
||
</ul>
|
||
<hr>
|
||
|
||
<h2 class="relative group">Шаг 3: Клонировать master ноды
|
||
<div id="шаг-3-клонировать-master-ноды" class="anchor"></div>
|
||
|
||
<span
|
||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%d1%88%d0%b0%d0%b3-3-%d0%ba%d0%bb%d0%be%d0%bd%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d1%82%d1%8c-master-%d0%bd%d0%be%d0%b4%d1%8b" aria-label="Якорь">#</a>
|
||
</span>
|
||
|
||
</h2>
|
||
<p>Теперь создаём 3 master ноды из template. Каждая получит свой IP, имя и ресурсы.</p>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nv">TEMPLATE_ID</span><span class="o">=</span><span class="m">9000</span>
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># ─────────────────────────────────────────────</span>
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># Master 1</span>
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># ─────────────────────────────────────────────</span>
|
||
</span></span><span class="line"><span class="cl">qm clone <span class="nv">$TEMPLATE_ID</span> <span class="m">201</span> --name k3s-master-1 --full
|
||
</span></span><span class="line"><span class="cl">qm <span class="nb">set</span> <span class="m">201</span> --cores <span class="m">2</span> --memory <span class="m">8192</span>
|
||
</span></span><span class="line"><span class="cl">qm <span class="nb">set</span> <span class="m">201</span> --ipconfig0 <span class="nv">ip</span><span class="o">=</span>192.168.11.201/24,gw<span class="o">=</span>192.168.11.1
|
||
</span></span><span class="line"><span class="cl">qm <span class="nb">set</span> <span class="m">201</span> --nameserver 8.8.8.8
|
||
</span></span><span class="line"><span class="cl">qm resize <span class="m">201</span> scsi0 32G
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># ─────────────────────────────────────────────</span>
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># Master 2</span>
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># ─────────────────────────────────────────────</span>
|
||
</span></span><span class="line"><span class="cl">qm clone <span class="nv">$TEMPLATE_ID</span> <span class="m">202</span> --name k3s-master-2 --full
|
||
</span></span><span class="line"><span class="cl">qm <span class="nb">set</span> <span class="m">202</span> --cores <span class="m">2</span> --memory <span class="m">8192</span>
|
||
</span></span><span class="line"><span class="cl">qm <span class="nb">set</span> <span class="m">202</span> --ipconfig0 <span class="nv">ip</span><span class="o">=</span>192.168.11.202/24,gw<span class="o">=</span>192.168.11.1
|
||
</span></span><span class="line"><span class="cl">qm <span class="nb">set</span> <span class="m">202</span> --nameserver 8.8.8.8
|
||
</span></span><span class="line"><span class="cl">qm resize <span class="m">202</span> scsi0 32G
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># ─────────────────────────────────────────────</span>
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># Master 3</span>
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># ─────────────────────────────────────────────</span>
|
||
</span></span><span class="line"><span class="cl">qm clone <span class="nv">$TEMPLATE_ID</span> <span class="m">203</span> --name k3s-master-3 --full
|
||
</span></span><span class="line"><span class="cl">qm <span class="nb">set</span> <span class="m">203</span> --cores <span class="m">2</span> --memory <span class="m">8192</span>
|
||
</span></span><span class="line"><span class="cl">qm <span class="nb">set</span> <span class="m">203</span> --ipconfig0 <span class="nv">ip</span><span class="o">=</span>192.168.11.203/24,gw<span class="o">=</span>192.168.11.1
|
||
</span></span><span class="line"><span class="cl">qm <span class="nb">set</span> <span class="m">203</span> --nameserver 8.8.8.8
|
||
</span></span><span class="line"><span class="cl">qm resize <span class="m">203</span> scsi0 32G</span></span></code></pre></div></div>
|
||
<p><strong>Параметры:</strong></p>
|
||
<ul>
|
||
<li><code>--full</code> - полное клонирование (не linked clone), VM независима от template</li>
|
||
<li><code>--cores 2 --memory 8192</code> - 2 vCPU, 8GB RAM (как планировали)</li>
|
||
<li><code>--ipconfig0</code> - статический IP через cloud-init</li>
|
||
<li><code>--nameserver</code> - DNS сервер (можешь указать свой)</li>
|
||
</ul>
|
||
<p><strong>Адаптируй под свою сеть:</strong></p>
|
||
<ul>
|
||
<li><code>192.168.11.0/24</code> → твоя подсеть</li>
|
||
<li><code>192.168.11.1</code> → твой gateway</li>
|
||
</ul>
|
||
<hr>
|
||
|
||
<h2 class="relative group">Шаг 4: Клонировать worker ноды
|
||
<div id="шаг-4-клонировать-worker-ноды" class="anchor"></div>
|
||
|
||
<span
|
||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%d1%88%d0%b0%d0%b3-4-%d0%ba%d0%bb%d0%be%d0%bd%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d1%82%d1%8c-worker-%d0%bd%d0%be%d0%b4%d1%8b" aria-label="Якорь">#</a>
|
||
</span>
|
||
|
||
</h2>
|
||
<p>Workers получают больше ресурсов - здесь будут работать приложения.</p>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># ─────────────────────────────────────────────</span>
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># Worker 1</span>
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># ─────────────────────────────────────────────</span>
|
||
</span></span><span class="line"><span class="cl">qm clone <span class="nv">$TEMPLATE_ID</span> <span class="m">210</span> --name k3s-worker-1 --full
|
||
</span></span><span class="line"><span class="cl">qm <span class="nb">set</span> <span class="m">210</span> --cores <span class="m">4</span> --memory <span class="m">16384</span>
|
||
</span></span><span class="line"><span class="cl">qm <span class="nb">set</span> <span class="m">210</span> --ipconfig0 <span class="nv">ip</span><span class="o">=</span>192.168.11.210/24,gw<span class="o">=</span>192.168.11.1
|
||
</span></span><span class="line"><span class="cl">qm <span class="nb">set</span> <span class="m">210</span> --nameserver 8.8.8.8
|
||
</span></span><span class="line"><span class="cl">qm resize <span class="m">210</span> scsi0 50G
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># ─────────────────────────────────────────────</span>
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># Worker 2</span>
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># ─────────────────────────────────────────────</span>
|
||
</span></span><span class="line"><span class="cl">qm clone <span class="nv">$TEMPLATE_ID</span> <span class="m">211</span> --name k3s-worker-2 --full
|
||
</span></span><span class="line"><span class="cl">qm <span class="nb">set</span> <span class="m">211</span> --cores <span class="m">4</span> --memory <span class="m">16384</span>
|
||
</span></span><span class="line"><span class="cl">qm <span class="nb">set</span> <span class="m">211</span> --ipconfig0 <span class="nv">ip</span><span class="o">=</span>192.168.11.211/24,gw<span class="o">=</span>192.168.11.1
|
||
</span></span><span class="line"><span class="cl">qm <span class="nb">set</span> <span class="m">211</span> --nameserver 8.8.8.8
|
||
</span></span><span class="line"><span class="cl">qm resize <span class="m">211</span> scsi0 50G</span></span></code></pre></div></div>
|
||
<p><strong>Отличия от master:</strong></p>
|
||
<ul>
|
||
<li>4 vCPU вместо 2</li>
|
||
<li>16GB RAM вместо 8GB</li>
|
||
<li>50GB диск вместо 32GB</li>
|
||
</ul>
|
||
<hr>
|
||
|
||
<h2 class="relative group">Шаг 5: Запустить все VM
|
||
<div id="шаг-5-запустить-все-vm" class="anchor"></div>
|
||
|
||
<span
|
||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%d1%88%d0%b0%d0%b3-5-%d0%b7%d0%b0%d0%bf%d1%83%d1%81%d1%82%d0%b8%d1%82%d1%8c-%d0%b2%d1%81%d0%b5-vm" aria-label="Якорь">#</a>
|
||
</span>
|
||
|
||
</h2>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Запустить все 5 VM</span>
|
||
</span></span><span class="line"><span class="cl"><span class="k">for</span> vmid in <span class="m">201</span> <span class="m">202</span> <span class="m">203</span> <span class="m">210</span> 211<span class="p">;</span> <span class="k">do</span>
|
||
</span></span><span class="line"><span class="cl"> qm start <span class="nv">$vmid</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="nb">echo</span> <span class="s2">"Запущена VM </span><span class="nv">$vmid</span><span class="s2">"</span>
|
||
</span></span><span class="line"><span class="cl"> sleep <span class="m">3</span>
|
||
</span></span><span class="line"><span class="cl"><span class="k">done</span>
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># Проверить статус</span>
|
||
</span></span><span class="line"><span class="cl">qm list <span class="p">|</span> grep k3s</span></span></code></pre></div></div>
|
||
<p><strong>Ожидаемый результат:</strong></p>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl"> 201 k3s-master-1 running 8192 32.00 12345
|
||
</span></span><span class="line"><span class="cl"> 202 k3s-master-2 running 8192 32.00 12346
|
||
</span></span><span class="line"><span class="cl"> 203 k3s-master-3 running 8192 32.00 12347
|
||
</span></span><span class="line"><span class="cl"> 210 k3s-worker-1 running 16384 50.00 12348
|
||
</span></span><span class="line"><span class="cl"> 211 k3s-worker-2 running 16384 50.00 12349</span></span></code></pre></div></div>
|
||
<!-- СКРИНШОТ: Proxmox Web UI - Summary или список VM, все 5 нод в статусе "running" с правильными ресурсами -->
|
||
|
||
<h3 class="relative group">Checkpoint: VM работают
|
||
<div id="checkpoint-vm-работают" class="anchor"></div>
|
||
|
||
<span
|
||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#checkpoint-vm-%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0%d1%8e%d1%82" aria-label="Якорь">#</a>
|
||
</span>
|
||
|
||
</h3>
|
||
<p>Подожди 1-2 минуты (cloud-init применяет настройки при первом запуске), затем проверь SSH:</p>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Проверить доступность всех нод</span>
|
||
</span></span><span class="line"><span class="cl"><span class="k">for</span> ip in 192.168.11.201 192.168.11.202 192.168.11.203 192.168.11.210 192.168.11.211<span class="p">;</span> <span class="k">do</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="nb">echo</span> -n <span class="s2">"Проверяю </span><span class="nv">$ip</span><span class="s2">... "</span>
|
||
</span></span><span class="line"><span class="cl"> ssh -o <span class="nv">ConnectTimeout</span><span class="o">=</span><span class="m">5</span> -o <span class="nv">StrictHostKeyChecking</span><span class="o">=</span>no k3s@<span class="nv">$ip</span> <span class="s2">"hostname"</span> 2>/dev/null <span class="o">&&</span> <span class="nb">echo</span> <span class="s2">"OK"</span> <span class="o">||</span> <span class="nb">echo</span> <span class="s2">"FAIL"</span>
|
||
</span></span><span class="line"><span class="cl"><span class="k">done</span></span></span></code></pre></div></div>
|
||
<p><strong>Ожидаемый результат:</strong></p>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Проверяю 192.168.11.201... k3s-master-1
|
||
</span></span><span class="line"><span class="cl">OK
|
||
</span></span><span class="line"><span class="cl">Проверяю 192.168.11.202... k3s-master-2
|
||
</span></span><span class="line"><span class="cl">OK
|
||
</span></span><span class="line"><span class="cl">...</span></span></code></pre></div></div>
|
||
<p><strong>Если SSH не работает:</strong></p>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Симптом</th>
|
||
<th>Причина</th>
|
||
<th>Решение</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td>Connection refused</td>
|
||
<td>VM не загрузилась или SSH не запущен</td>
|
||
<td>Открой консоль в Proxmox, проверь загрузку</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Connection timeout</td>
|
||
<td>Неправильный IP или firewall</td>
|
||
<td>Проверь IP в консоли: <code>ip addr</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Permission denied</td>
|
||
<td>Неправильный SSH-ключ</td>
|
||
<td>Проверь <code>~/.ssh/authorized_keys</code> на VM</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Host key verification failed</td>
|
||
<td>Первое подключение</td>
|
||
<td>Добавь <code>-o StrictHostKeyChecking=no</code></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<!-- СКРИНШОТ: Proxmox Console для одной из VM - экран входа или вывод `ip addr show` с правильным IP -->
|
||
<hr>
|
||
|
||
<h2 class="relative group">Шаг 6: Подготовить ОС на всех нодах
|
||
<div id="шаг-6-подготовить-ос-на-всех-нодах" class="anchor"></div>
|
||
|
||
<span
|
||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%d1%88%d0%b0%d0%b3-6-%d0%bf%d0%be%d0%b4%d0%b3%d0%be%d1%82%d0%be%d0%b2%d0%b8%d1%82%d1%8c-%d0%be%d1%81-%d0%bd%d0%b0-%d0%b2%d1%81%d0%b5%d1%85-%d0%bd%d0%be%d0%b4%d0%b0%d1%85" aria-label="Якорь">#</a>
|
||
</span>
|
||
|
||
</h2>
|
||
<p>Теперь нужно настроить каждую ноду: обновить пакеты, отключить swap, настроить ядро. Команды одинаковые для всех 5 нод.</p>
|
||
|
||
<h3 class="relative group">6.1. Обновить систему
|
||
<div id="61-обновить-систему" class="anchor"></div>
|
||
|
||
<span
|
||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#61-%d0%be%d0%b1%d0%bd%d0%be%d0%b2%d0%b8%d1%82%d1%8c-%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d1%83" aria-label="Якорь">#</a>
|
||
</span>
|
||
|
||
</h3>
|
||
<p><strong>На каждой ноде (или через цикл):</strong></p>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Вариант 1: по одной</span>
|
||
</span></span><span class="line"><span class="cl">ssh k3s@192.168.11.201
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl">sudo apt update
|
||
</span></span><span class="line"><span class="cl">sudo apt upgrade -y
|
||
</span></span><span class="line"><span class="cl">sudo apt install -y curl wget vim htop iptables
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># Вариант 2: массово (с локальной машины)</span>
|
||
</span></span><span class="line"><span class="cl"><span class="k">for</span> ip in 192.168.11.<span class="o">{</span>201..203<span class="o">}</span> 192.168.11.<span class="o">{</span>210..211<span class="o">}</span><span class="p">;</span> <span class="k">do</span>
|
||
</span></span><span class="line"><span class="cl"> <span class="nb">echo</span> <span class="s2">"=== Обновляю </span><span class="nv">$ip</span><span class="s2"> ==="</span>
|
||
</span></span><span class="line"><span class="cl"> ssh k3s@<span class="nv">$ip</span> <span class="s2">"sudo apt update && sudo apt upgrade -y && sudo apt install -y curl wget vim htop iptables"</span>
|
||
</span></span><span class="line"><span class="cl"><span class="k">done</span></span></span></code></pre></div></div>
|
||
|
||
<h3 class="relative group">6.2. Отключить swap
|
||
<div id="62-отключить-swap" class="anchor"></div>
|
||
|
||
<span
|
||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#62-%d0%be%d1%82%d0%ba%d0%bb%d1%8e%d1%87%d0%b8%d1%82%d1%8c-swap" aria-label="Якорь">#</a>
|
||
</span>
|
||
|
||
</h3>
|
||
<p>Kubernetes не любит swap. При включённом swap поды ведут себя непредсказуемо - OOMKiller срабатывает не тогда, когда ожидаешь.</p>
|
||
<p><strong>На всех нодах:</strong></p>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Отключить swap сейчас</span>
|
||
</span></span><span class="line"><span class="cl">sudo swapoff -a
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># Отключить навсегда (закомментировать в fstab)</span>
|
||
</span></span><span class="line"><span class="cl">sudo sed -i <span class="s1">'/swap/s/^/#/'</span> /etc/fstab
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># Проверить</span>
|
||
</span></span><span class="line"><span class="cl">free -h <span class="p">|</span> grep Swap</span></span></code></pre></div></div>
|
||
<p><strong>Ожидаемый результат:</strong></p>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Swap: 0B 0B 0B</span></span></code></pre></div></div>
|
||
|
||
<h3 class="relative group">6.3. Загрузить kernel-модули
|
||
<div id="63-загрузить-kernel-модули" class="anchor"></div>
|
||
|
||
<span
|
||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#63-%d0%b7%d0%b0%d0%b3%d1%80%d1%83%d0%b7%d0%b8%d1%82%d1%8c-kernel-%d0%bc%d0%be%d0%b4%d1%83%d0%bb%d0%b8" aria-label="Якорь">#</a>
|
||
</span>
|
||
|
||
</h3>
|
||
<p>K3s использует overlay filesystem и bridge netfilter. Без этих модулей - ошибки при старте.</p>
|
||
<p><strong>На всех нодах:</strong></p>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Загрузить модули</span>
|
||
</span></span><span class="line"><span class="cl">sudo modprobe overlay
|
||
</span></span><span class="line"><span class="cl">sudo modprobe br_netfilter
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># Настроить автозагрузку</span>
|
||
</span></span><span class="line"><span class="cl">cat <span class="s"><<EOF | sudo tee /etc/modules-load.d/k3s.conf
|
||
</span></span></span><span class="line"><span class="cl"><span class="s">overlay
|
||
</span></span></span><span class="line"><span class="cl"><span class="s">br_netfilter
|
||
</span></span></span><span class="line"><span class="cl"><span class="s">EOF</span>
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># Проверить</span>
|
||
</span></span><span class="line"><span class="cl">lsmod <span class="p">|</span> grep -E <span class="s1">'overlay|br_netfilter'</span></span></span></code></pre></div></div>
|
||
<p><strong>Ожидаемый результат:</strong></p>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">overlay 151552 0
|
||
</span></span><span class="line"><span class="cl">br_netfilter 32768 0</span></span></code></pre></div></div>
|
||
|
||
<h3 class="relative group">6.4. Настроить sysctl
|
||
<div id="64-настроить-sysctl" class="anchor"></div>
|
||
|
||
<span
|
||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#64-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b8%d1%82%d1%8c-sysctl" aria-label="Якорь">#</a>
|
||
</span>
|
||
|
||
</h3>
|
||
<p>Параметры для сетевого взаимодействия между подами.</p>
|
||
<p><strong>На всех нодах:</strong></p>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Создать конфиг</span>
|
||
</span></span><span class="line"><span class="cl">cat <span class="s"><<EOF | sudo tee /etc/sysctl.d/k3s.conf
|
||
</span></span></span><span class="line"><span class="cl"><span class="s">net.ipv4.ip_forward = 1
|
||
</span></span></span><span class="line"><span class="cl"><span class="s">net.bridge.bridge-nf-call-iptables = 1
|
||
</span></span></span><span class="line"><span class="cl"><span class="s">net.bridge.bridge-nf-call-ip6tables = 1
|
||
</span></span></span><span class="line"><span class="cl"><span class="s">EOF</span>
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># Применить</span>
|
||
</span></span><span class="line"><span class="cl">sudo sysctl --system
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># Проверить</span>
|
||
</span></span><span class="line"><span class="cl">sysctl net.ipv4.ip_forward net.bridge.bridge-nf-call-iptables</span></span></code></pre></div></div>
|
||
<p><strong>Ожидаемый результат:</strong></p>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">net.ipv4.ip_forward = 1
|
||
</span></span><span class="line"><span class="cl">net.bridge.bridge-nf-call-iptables = 1</span></span></code></pre></div></div>
|
||
|
||
<h3 class="relative group">6.5. Проверить cgroup v2
|
||
<div id="65-проверить-cgroup-v2" class="anchor"></div>
|
||
|
||
<span
|
||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#65-%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%b8%d1%82%d1%8c-cgroup-v2" aria-label="Якорь">#</a>
|
||
</span>
|
||
|
||
</h3>
|
||
<p>Debian 12 по умолчанию использует cgroup v2 - просто проверим.</p>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">mount <span class="p">|</span> grep cgroup</span></span></code></pre></div></div>
|
||
<p><strong>Ожидаемый результат (cgroup v2):</strong></p>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot)</span></span></code></pre></div></div>
|
||
<p><strong>Если видишь <code>tmpfs on /sys/fs/cgroup type tmpfs</code></strong> - это cgroup v1. Нужно включить v2:</p>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Добавить параметр ядра</span>
|
||
</span></span><span class="line"><span class="cl">sudo sed -i <span class="s1">'s|^GRUB_CMDLINE_LINUX_DEFAULT="\(.*\)"|GRUB_CMDLINE_LINUX_DEFAULT="\1 systemd.unified_cgroup_hierarchy=1"|'</span> /etc/default/grub
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># Обновить GRUB</span>
|
||
</span></span><span class="line"><span class="cl">sudo update-grub
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># Перезагрузить</span>
|
||
</span></span><span class="line"><span class="cl">sudo reboot
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># После reboot проверить</span>
|
||
</span></span><span class="line"><span class="cl">mount <span class="p">|</span> grep cgroup2</span></span></code></pre></div></div>
|
||
<hr>
|
||
|
||
<h2 class="relative group">Шаг 7: Настроить firewall
|
||
<div id="шаг-7-настроить-firewall" class="anchor"></div>
|
||
|
||
<span
|
||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%d1%88%d0%b0%d0%b3-7-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b8%d1%82%d1%8c-firewall" aria-label="Якорь">#</a>
|
||
</span>
|
||
|
||
</h2>
|
||
<p>UFW - простой интерфейс к iptables. Откроем только нужные порты.</p>
|
||
|
||
<h3 class="relative group">7.1. На master нодах (201, 202, 203)
|
||
<div id="71-на-master-нодах-201-202-203" class="anchor"></div>
|
||
|
||
<span
|
||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#71-%d0%bd%d0%b0-master-%d0%bd%d0%be%d0%b4%d0%b0%d1%85-201-202-203" aria-label="Якорь">#</a>
|
||
</span>
|
||
|
||
</h3>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Установить UFW</span>
|
||
</span></span><span class="line"><span class="cl">sudo apt install -y ufw
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># Базовые правила</span>
|
||
</span></span><span class="line"><span class="cl">sudo ufw default deny incoming
|
||
</span></span><span class="line"><span class="cl">sudo ufw default allow outgoing
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># SSH (чтобы не потерять доступ)</span>
|
||
</span></span><span class="line"><span class="cl">sudo ufw allow 22/tcp
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># Kubernetes API</span>
|
||
</span></span><span class="line"><span class="cl">sudo ufw allow 6443/tcp
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># etcd (между masters)</span>
|
||
</span></span><span class="line"><span class="cl">sudo ufw allow 2379:2380/tcp
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># Kubelet</span>
|
||
</span></span><span class="line"><span class="cl">sudo ufw allow 10250/tcp
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># Flannel VXLAN</span>
|
||
</span></span><span class="line"><span class="cl">sudo ufw allow 8472/udp
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># Включить</span>
|
||
</span></span><span class="line"><span class="cl">sudo ufw --force <span class="nb">enable</span>
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="c1"># Проверить</span>
|
||
</span></span><span class="line"><span class="cl">sudo ufw status</span></span></code></pre></div></div>
|
||
|
||
<h3 class="relative group">7.2. На worker нодах (210, 211)
|
||
<div id="72-на-worker-нодах-210-211" class="anchor"></div>
|
||
|
||
<span
|
||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#72-%d0%bd%d0%b0-worker-%d0%bd%d0%be%d0%b4%d0%b0%d1%85-210-211" aria-label="Якорь">#</a>
|
||
</span>
|
||
|
||
</h3>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo apt install -y ufw
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl">sudo ufw default deny incoming
|
||
</span></span><span class="line"><span class="cl">sudo ufw default allow outgoing
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl">sudo ufw allow 22/tcp <span class="c1"># SSH</span>
|
||
</span></span><span class="line"><span class="cl">sudo ufw allow 10250/tcp <span class="c1"># Kubelet</span>
|
||
</span></span><span class="line"><span class="cl">sudo ufw allow 8472/udp <span class="c1"># Flannel VXLAN</span>
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl">sudo ufw --force <span class="nb">enable</span>
|
||
</span></span><span class="line"><span class="cl">sudo ufw status</span></span></code></pre></div></div>
|
||
<figure><img
|
||
class="my-0 rounded-md"
|
||
loading="lazy"
|
||
decoding="async"
|
||
fetchpriority="low"
|
||
alt=""
|
||
src="/posts/k3s-infrastructure/mermaid-diagram.svg"
|
||
></figure>
|
||
<hr>
|
||
|
||
<h2 class="relative group">Шаг 8: Настроить /etc/hosts
|
||
<div id="шаг-8-настроить-etchosts" class="anchor"></div>
|
||
|
||
<span
|
||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%d1%88%d0%b0%d0%b3-8-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b8%d1%82%d1%8c-etchosts" aria-label="Якорь">#</a>
|
||
</span>
|
||
|
||
</h2>
|
||
<p>Не обязательно, но удобно - ноды смогут обращаться друг к другу по имени.</p>
|
||
<p><strong>На всех нодах:</strong></p>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">cat <span class="s"><<EOF | sudo tee -a /etc/hosts
|
||
</span></span></span><span class="line"><span class="cl"><span class="s">
|
||
</span></span></span><span class="line"><span class="cl"><span class="s"># K3s Cluster
|
||
</span></span></span><span class="line"><span class="cl"><span class="s">192.168.11.201 k3s-master-1
|
||
</span></span></span><span class="line"><span class="cl"><span class="s">192.168.11.202 k3s-master-2
|
||
</span></span></span><span class="line"><span class="cl"><span class="s">192.168.11.203 k3s-master-3
|
||
</span></span></span><span class="line"><span class="cl"><span class="s">192.168.11.210 k3s-worker-1
|
||
</span></span></span><span class="line"><span class="cl"><span class="s">192.168.11.211 k3s-worker-2
|
||
</span></span></span><span class="line"><span class="cl"><span class="s">EOF</span></span></span></code></pre></div></div>
|
||
<p>Проверить:</p>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">ping -c <span class="m">1</span> k3s-master-2</span></span></code></pre></div></div>
|
||
<hr>
|
||
|
||
<h2 class="relative group">Финальная проверка
|
||
<div id="финальная-проверка" class="anchor"></div>
|
||
|
||
<span
|
||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%d1%84%d0%b8%d0%bd%d0%b0%d0%bb%d1%8c%d0%bd%d0%b0%d1%8f-%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%ba%d0%b0" aria-label="Якорь">#</a>
|
||
</span>
|
||
|
||
</h2>
|
||
<p>Перед переходом к установке K3s убедись, что всё готово. Запусти на любой ноде:</p>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s2">"=== Проверка готовности ноды ==="</span>
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> -n <span class="s2">"1. Swap отключён: "</span>
|
||
</span></span><span class="line"><span class="cl"><span class="o">[</span> <span class="k">$(</span>free <span class="p">|</span> grep Swap <span class="p">|</span> awk <span class="s1">'{print $2}'</span><span class="k">)</span> -eq <span class="m">0</span> <span class="o">]</span> <span class="o">&&</span> <span class="nb">echo</span> <span class="s2">"✓"</span> <span class="o">||</span> <span class="nb">echo</span> <span class="s2">"✗ ОШИБКА"</span>
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> -n <span class="s2">"2. Модуль overlay: "</span>
|
||
</span></span><span class="line"><span class="cl">lsmod <span class="p">|</span> grep -q overlay <span class="o">&&</span> <span class="nb">echo</span> <span class="s2">"✓"</span> <span class="o">||</span> <span class="nb">echo</span> <span class="s2">"✗ ОШИБКА"</span>
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> -n <span class="s2">"3. Модуль br_netfilter: "</span>
|
||
</span></span><span class="line"><span class="cl">lsmod <span class="p">|</span> grep -q br_netfilter <span class="o">&&</span> <span class="nb">echo</span> <span class="s2">"✓"</span> <span class="o">||</span> <span class="nb">echo</span> <span class="s2">"✗ ОШИБКА"</span>
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> -n <span class="s2">"4. IP forwarding: "</span>
|
||
</span></span><span class="line"><span class="cl"><span class="o">[</span> <span class="k">$(</span>sysctl -n net.ipv4.ip_forward<span class="k">)</span> -eq <span class="m">1</span> <span class="o">]</span> <span class="o">&&</span> <span class="nb">echo</span> <span class="s2">"✓"</span> <span class="o">||</span> <span class="nb">echo</span> <span class="s2">"✗ ОШИБКА"</span>
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> -n <span class="s2">"5. bridge-nf-call-iptables: "</span>
|
||
</span></span><span class="line"><span class="cl"><span class="o">[</span> <span class="k">$(</span>sysctl -n net.bridge.bridge-nf-call-iptables<span class="k">)</span> -eq <span class="m">1</span> <span class="o">]</span> <span class="o">&&</span> <span class="nb">echo</span> <span class="s2">"✓"</span> <span class="o">||</span> <span class="nb">echo</span> <span class="s2">"✗ ОШИБКА"</span>
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> -n <span class="s2">"6. cgroup v2: "</span>
|
||
</span></span><span class="line"><span class="cl">mount <span class="p">|</span> grep -q <span class="s2">"cgroup2"</span> <span class="o">&&</span> <span class="nb">echo</span> <span class="s2">"✓"</span> <span class="o">||</span> <span class="nb">echo</span> <span class="s2">"✗ ОШИБКА"</span>
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> -n <span class="s2">"7. UFW активен: "</span>
|
||
</span></span><span class="line"><span class="cl">sudo ufw status <span class="p">|</span> grep -q <span class="s2">"Status: active"</span> <span class="o">&&</span> <span class="nb">echo</span> <span class="s2">"✓"</span> <span class="o">||</span> <span class="nb">echo</span> <span class="s2">"✗ ОШИБКА"</span>
|
||
</span></span><span class="line"><span class="cl">
|
||
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> -n <span class="s2">"8. Пинг k3s-master-1: "</span>
|
||
</span></span><span class="line"><span class="cl">ping -c <span class="m">1</span> -W <span class="m">1</span> k3s-master-1 >/dev/null 2><span class="p">&</span><span class="m">1</span> <span class="o">&&</span> <span class="nb">echo</span> <span class="s2">"✓"</span> <span class="o">||</span> <span class="nb">echo</span> <span class="s2">"✗ ОШИБКА"</span></span></span></code></pre></div></div>
|
||
<p><strong>Ожидаемый результат:</strong></p>
|
||
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">=== Проверка готовности ноды ===
|
||
</span></span><span class="line"><span class="cl">1. Swap отключён: ✓
|
||
</span></span><span class="line"><span class="cl">2. Модуль overlay: ✓
|
||
</span></span><span class="line"><span class="cl">3. Модуль br_netfilter: ✓
|
||
</span></span><span class="line"><span class="cl">4. IP forwarding: ✓
|
||
</span></span><span class="line"><span class="cl">5. bridge-nf-call-iptables: ✓
|
||
</span></span><span class="line"><span class="cl">6. cgroup v2: ✓
|
||
</span></span><span class="line"><span class="cl">7. UFW активен: ✓
|
||
</span></span><span class="line"><span class="cl">8. Пинг k3s-master-1: ✓</span></span></code></pre></div></div>
|
||
<p>Если где-то ✗ - вернись к соответствующему шагу.</p>
|
||
<hr>
|
||
|
||
<h2 class="relative group">Troubleshooting
|
||
<div id="troubleshooting" class="anchor"></div>
|
||
|
||
<span
|
||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#troubleshooting" aria-label="Якорь">#</a>
|
||
</span>
|
||
|
||
</h2>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Симптом</th>
|
||
<th>Причина</th>
|
||
<th>Решение</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td>VM не получает IP</td>
|
||
<td>cloud-init не отработал</td>
|
||
<td>Проверь консоль, жди 2-3 минуты, перезагрузи VM</td>
|
||
</tr>
|
||
<tr>
|
||
<td>SSH connection refused</td>
|
||
<td>sshd не запущен</td>
|
||
<td>Открой консоль, проверь <code>systemctl status ssh</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Swap не отключается</td>
|
||
<td>Строка не закомментирована в fstab</td>
|
||
<td><code>cat /etc/fstab</code>, проверь swap строку, <code>reboot</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td>cgroup v1 после reboot</td>
|
||
<td>GRUB не обновился</td>
|
||
<td>Проверь <code>/proc/cmdline</code>, повтори <code>update-grub</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td>UFW блокирует всё</td>
|
||
<td>Забыл разрешить SSH до включения</td>
|
||
<td>Через консоль Proxmox: <code>ufw allow 22/tcp</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Ноды не пингуются</td>
|
||
<td>UFW или неправильный IP</td>
|
||
<td>Проверь <code>ip addr</code>, проверь правила UFW</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<hr>
|
||
|
||
<h2 class="relative group">Итог
|
||
<div id="итог" class="anchor"></div>
|
||
|
||
<span
|
||
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
|
||
<a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%d0%b8%d1%82%d0%be%d0%b3" aria-label="Якорь">#</a>
|
||
</span>
|
||
|
||
</h2>
|
||
<p><strong>Что сделано:</strong></p>
|
||
<ul>
|
||
<li>✅ Скачан Debian 12 cloud image</li>
|
||
<li>✅ Создан template VM с cloud-init</li>
|
||
<li>✅ Склонированы 5 VM (3 master + 2 worker)</li>
|
||
<li>✅ Настроены статические IP</li>
|
||
<li>✅ Подготовлена ОС (swap, modules, sysctl, cgroup v2)</li>
|
||
<li>✅ Настроен firewall с нужными портами</li>
|
||
<li>✅ SSH работает на все ноды</li>
|
||
</ul>
|
||
<p><strong>Что дальше:</strong></p>
|
||
<p>👉 <strong>Следующая статья: “Установить K3s HA кластер”</strong></p>
|
||
<p>Там мы:</p>
|
||
<ul>
|
||
<li>Сгенерируем token для кластера</li>
|
||
<li>Установим K3s на первую master ноду</li>
|
||
<li>Добавим ещё 2 master ноды (HA)</li>
|
||
<li>Подключим worker ноды</li>
|
||
<li>Настроим kubectl</li>
|
||
<li>Проверим работу кластера</li>
|
||
</ul>
|
||
|
||
|
||
|
||
|
||
</div>
|
||
|
||
|
||
<details class="mt-2 mb-5 overflow-hidden rounded-lg ms-0 ps-5">
|
||
|
||
<summary
|
||
class="py-1 text-lg font-semibold cursor-pointer bg-primary-200 text-neutral-800 -ms-5 ps-5 dark:bg-primary-800 dark:text-neutral-100">
|
||
K3s HA кластер для homelab -
|
||
Эта статья — часть серии.
|
||
</summary>
|
||
|
||
|
||
|
||
<div
|
||
class="py-1 border-dotted border-neutral-300 border-s-1 -ms-5 ps-5 dark:border-neutral-600">
|
||
<a href="/posts/k3s-part1-architecture/">
|
||
Часть 1:
|
||
K3s HA для homelab: архитектура без боли
|
||
</a>
|
||
</div>
|
||
|
||
|
||
|
||
<div
|
||
class="py-1 border-dotted border-neutral-300 border-s-1 -ms-5 ps-5 dark:border-neutral-600">
|
||
Часть 2:
|
||
Читаешь сейчас
|
||
</div>
|
||
|
||
|
||
|
||
<div
|
||
class="py-1 border-dotted border-neutral-300 border-s-1 -ms-5 ps-5 dark:border-neutral-600">
|
||
<a href="/posts/k3s-installation/">
|
||
Часть 3:
|
||
Установить K3s HA кластер
|
||
</a>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
</details>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h2 class="mt-8 text-2xl font-extrabold mb-10">Статьи по теме</h2>
|
||
<section class="w-full grid gap-4 sm:grid-cols-2 md:grid-cols-3">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<article
|
||
class="article-link--related relative min-h-full min-w-full overflow-hidden rounded-lg border border-neutral-300 dark:border-neutral-600">
|
||
|
||
<div class="flex-none relative overflow-hidden thumbnail_card_related">
|
||
<img
|
||
src="/posts/k3s-part1-architecture/featured_hu_93e9342ed126d912.png"
|
||
role="presentation"
|
||
loading="lazy"
|
||
decoding="async"
|
||
fetchpriority="low"
|
||
class="not-prose absolute inset-0 w-full h-full object-cover">
|
||
</div>
|
||
|
||
|
||
<div class="p-4">
|
||
<header>
|
||
<a
|
||
|
||
href="/posts/k3s-part1-architecture/"
|
||
|
||
class="not-prose before:absolute before:inset-0 decoration-primary-500 dark:text-neutral text-xl font-bold text-neutral-800 hover:underline hover:underline-offset-2">
|
||
<h2>
|
||
K3s HA для homelab: архитектура без боли
|
||
|
||
</h2>
|
||
</a>
|
||
</header>
|
||
<div class="text-sm text-neutral-500 dark:text-neutral-400">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div class="flex flex-row flex-wrap items-center">
|
||
|
||
|
||
<time datetime="2025-10-14T00:00:00+00:00">14 октября 2025</time><span class="px-2 text-primary-500">·</span><span title="Время чтения">8 минут</span><span class="px-2 text-primary-500">·</span><span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span
|
||
id="views_posts/k3s-part1-architecture/index.md"
|
||
class="animate-pulse inline-block text-transparent max-h-3 rounded-full -mt-[2px] align-middle bg-neutral-300 dark:bg-neutral-400"
|
||
title="views"
|
||
>loading</span
|
||
>
|
||
<span class="inline-block align-text-bottom"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512">
|
||
<path fill="currentColor" d="M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM432 256c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zM288 192c0 35.3-28.7 64-64 64c-11.5 0-22.3-3-31.6-8.4c-.2 2.8-.4 5.5-.4 8.4c0 53 43 96 96 96s96-43 96-96s-43-96-96-96c-2.8 0-5.6 .1-8.4 .4c5.3 9.3 8.4 20.1 8.4 31.6z"/></svg></span></span>
|
||
</span>
|
||
<span class="px-2 text-primary-500">·</span><span>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<span
|
||
id="likes_posts/k3s-part1-architecture/index.md"
|
||
class="animate-pulse inline-block text-transparent max-h-3 rounded-full -mt-[2px] align-middle bg-neutral-300 dark:bg-neutral-400"
|
||
title="likes"
|
||
>loading</span
|
||
>
|
||
<span class="inline-block align-text-bottom"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||
<path fill="currentColor" d="M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9L464.4 300.4c30.4-28.3 47.6-68 47.6-109.5v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5z"/></svg></span></span>
|
||
</span>
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
<div class="flex flex-row flex-wrap items-center">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<a class="relative mt-[0.5rem] me-2" href="/tags/kubernetes/">
|
||
<span class="flex cursor-pointer">
|
||
<span
|
||
class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400">
|
||
Kubernetes
|
||
</span>
|
||
</span>
|
||
|
||
</a>
|
||
|
||
<a class="relative mt-[0.5rem] me-2" href="/tags/k3s/">
|
||
<span class="flex cursor-pointer">
|
||
<span
|
||
class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400">
|
||
K3s
|
||
</span>
|
||
</span>
|
||
|
||
</a>
|
||
|
||
<a class="relative mt-[0.5rem] me-2" href="/tags/homelab/">
|
||
<span class="flex cursor-pointer">
|
||
<span
|
||
class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400">
|
||
Homelab
|
||
</span>
|
||
</span>
|
||
|
||
</a>
|
||
|
||
<a class="relative mt-[0.5rem] me-2" href="/tags/proxmox/">
|
||
<span class="flex cursor-pointer">
|
||
<span
|
||
class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400">
|
||
Proxmox
|
||
</span>
|
||
</span>
|
||
|
||
</a>
|
||
|
||
<a class="relative mt-[0.5rem] me-2" href="/tags/architecture/">
|
||
<span class="flex cursor-pointer">
|
||
<span
|
||
class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400">
|
||
Architecture
|
||
</span>
|
||
</span>
|
||
|
||
</a>
|
||
|
||
<a class="relative mt-[0.5rem] me-2" href="/tags/ha/">
|
||
<span class="flex cursor-pointer">
|
||
<span
|
||
class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400">
|
||
Ha
|
||
</span>
|
||
</span>
|
||
|
||
</a>
|
||
|
||
<a class="relative mt-[0.5rem] me-2" href="/tags/devops/">
|
||
<span class="flex cursor-pointer">
|
||
<span
|
||
class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400">
|
||
Devops
|
||
</span>
|
||
</span>
|
||
|
||
</a>
|
||
|
||
|
||
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
|
||
</div>
|
||
<div class="px-6 pt-4 pb-2"></div>
|
||
</article>
|
||
|
||
|
||
</section>
|
||
|
||
|
||
|
||
</div>
|
||
</section>
|
||
|
||
|
||
<footer class="pt-8 max-w-prose print:hidden">
|
||
|
||
|
||
|
||
|
||
|
||
<div class="pt-8">
|
||
<hr class="border-dotted border-neutral-300 dark:border-neutral-600">
|
||
<div class="flex justify-between pt-3">
|
||
<span class="flex flex-col">
|
||
|
||
<a
|
||
class="flex text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400"
|
||
href="/posts/k3s-part1-architecture/">
|
||
<span class="leading-6">
|
||
<span class="inline-block rtl:rotate-180">←</span> K3s HA для homelab: архитектура без боли
|
||
</span>
|
||
</a>
|
||
|
||
<span class="ms-6 mt-1 text-xs text-neutral-500 dark:text-neutral-400">
|
||
<time datetime="2025-10-14T00:00:00+00:00">14 октября 2025</time>
|
||
</span>
|
||
|
||
|
||
</span>
|
||
<span class="flex flex-col items-end">
|
||
|
||
<a
|
||
class="flex text-right text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400"
|
||
href="/posts/k3s-installation/">
|
||
<span class="leading-6">
|
||
Установить K3s HA кластер <span class="inline-block rtl:rotate-180">→</span>
|
||
</span>
|
||
</a>
|
||
|
||
<span class="me-6 mt-1 text-xs text-neutral-500 dark:text-neutral-400">
|
||
<time datetime="2025-11-02T00:00:00+00:00">2 ноября 2025</time>
|
||
</span>
|
||
|
||
|
||
</span>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
</footer>
|
||
</article>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<div
|
||
id="scroll-to-top"
|
||
class="fixed bottom-6 end-6 z-50 transform translate-y-4 opacity-0 duration-200">
|
||
<a
|
||
href="#the-top"
|
||
class="pointer-events-auto flex h-12 w-12 items-center justify-center rounded-full bg-neutral/50 text-xl text-neutral-700 hover:text-primary-600 dark:bg-neutral-800/50 dark:text-neutral dark:hover:text-primary-400"
|
||
aria-label="Пролистать наверх"
|
||
title="Пролистать наверх">
|
||
↑
|
||
</a>
|
||
</div>
|
||
|
||
</main><footer id="site-footer" class="py-10 print:hidden">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<nav class="flex flex-row pb-4 text-base font-medium text-neutral-500 dark:text-neutral-400 ">
|
||
<ul class="flex list-none flex-col sm:flex-row">
|
||
|
||
<li class=" flex mb-1 text-end sm:mb-0 sm:me-7 sm:last:me-0 ">
|
||
<a
|
||
class="decoration-primary-500 hover:underline hover:decoration-2 hover:underline-offset-2 flex items-center"
|
||
href="/tags/"
|
||
title="Tags">
|
||
|
||
Теги
|
||
</a>
|
||
</li>
|
||
|
||
<li class=" flex mb-1 text-end sm:mb-0 sm:me-7 sm:last:me-0 ">
|
||
<a
|
||
class="decoration-primary-500 hover:underline hover:decoration-2 hover:underline-offset-2 flex items-center"
|
||
href="/categories/"
|
||
title="Categories">
|
||
|
||
Категории
|
||
</a>
|
||
</li>
|
||
|
||
<li class=" flex mb-1 text-end sm:mb-0 sm:me-7 sm:last:me-0 ">
|
||
<a
|
||
class="decoration-primary-500 hover:underline hover:decoration-2 hover:underline-offset-2 flex items-center"
|
||
href="/authors/"
|
||
title="Authors">
|
||
|
||
Авторы
|
||
</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
|
||
<div class="flex items-center justify-between">
|
||
|
||
|
||
<p class="text-sm text-neutral-500 dark:text-neutral-400">
|
||
©
|
||
2026
|
||
Олег Казанин
|
||
</p>
|
||
|
||
|
||
|
||
|
||
<p class="text-xs text-neutral-500 dark:text-neutral-400">
|
||
|
||
|
||
Работает на <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
||
href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a> & <a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
|
||
href="https://blowfish.page/" target="_blank" rel="noopener noreferrer">Blowfish</a>
|
||
</p>
|
||
|
||
</div>
|
||
|
||
<script>
|
||
mediumZoom(document.querySelectorAll("img:not(.nozoom)"), {
|
||
margin: 24,
|
||
background: "rgba(0,0,0,0.5)",
|
||
scrollOffset: 0,
|
||
});
|
||
</script>
|
||
|
||
|
||
|
||
</footer>
|
||
<div
|
||
id="search-wrapper"
|
||
class="invisible fixed inset-0 flex h-screen w-screen cursor-default flex-col bg-neutral-500/50 p-4 backdrop-blur-sm dark:bg-neutral-900/50 sm:p-6 md:p-[10vh] lg:p-[12vh] z-500"
|
||
data-url="http://localhost:1313/">
|
||
<div
|
||
id="search-modal"
|
||
class="flex flex-col w-full max-w-3xl min-h-0 mx-auto border rounded-md shadow-lg top-20 border-neutral-200 bg-neutral dark:border-neutral-700 dark:bg-neutral-800">
|
||
<header class="relative z-10 flex items-center justify-between flex-none px-2">
|
||
<form class="flex items-center flex-auto min-w-0">
|
||
<div class="flex items-center justify-center w-8 h-8 text-neutral-400">
|
||
<span class="relative block icon"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/></svg>
|
||
</span>
|
||
</div>
|
||
<input
|
||
type="search"
|
||
id="search-query"
|
||
class="flex flex-auto h-12 mx-1 bg-transparent appearance-none focus:outline-dotted focus:outline-2 focus:outline-transparent"
|
||
placeholder="Поиск"
|
||
tabindex="0">
|
||
</form>
|
||
<button
|
||
id="close-search-button"
|
||
class="flex items-center justify-center w-8 h-8 text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400"
|
||
title="Закрыть (Esc)">
|
||
<span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"/></svg>
|
||
</span>
|
||
</button>
|
||
</header>
|
||
<section class="flex-auto px-2 overflow-auto">
|
||
<ul id="search-results">
|
||
|
||
</ul>
|
||
</section>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</body>
|
||
|
||
</html>
|