Helló! A nevem Sergey, DevOps vagyok a Surfnál. A Surf DevOps részlegének célja nem csak a szakemberek közötti interakció kialakítása és a munkafolyamatok integrálása, hanem a jelenlegi technológiák aktív kutatása és bevezetése mind saját infrastruktúrájában, mind az ügyfél infrastruktúrájában.
Az alábbiakban beszélek egy kicsit a konténerek technológiai veremében bekövetkezett változásokról, amelyekkel a disztribúció tanulmányozása során találkoztunk CentOS 8 és arról, hogy mi van LÉTREHOZNI és hogyan lehet gyorsan végrehajtani a futtatható környezetet Kubernetes.

Miért nincs benne a Docker a standard disztribúcióban? CentOS 8
A legújabb főbb kiadások telepítése után rhel 8 vagy CentOS 8 Nem lehet nem észrevenni: ezek a disztribúciók és hivatalos tárolók nem tartalmazzák az alkalmazást Dokkmunkás, amelyek ideológiailag és funkcionálisan helyettesítik a csomagokat Podman, Buildah (alapértelmezés szerint jelen van a disztribúcióban) és LÉTREHOZNI. Ez többek között a Red Hat által az Open Container Initiative (OCI) projekt részeként kidolgozott szabványok gyakorlati megvalósításának köszönhető.
Az OCI célja, amely a The része. Linux Alapítvány, nyílt ipari szabványok létrehozása konténerformátumok és futásidejű környezetek számára, amelyek egyszerre több problémát oldanának meg. Először is, nem mondanának ellent a filozófiának Linux (például abban a részben, ahol minden programnak végre kell hajtania egy bizonyos műveletet, és Dokkmunkás egyfajta all-in-one kombájn). Másodszor, kiküszöbölhetik a szoftver összes meglévő hiányosságát Dokkmunkás. Harmadszor, teljes mértékben kompatibilisek lennének a konténeres alkalmazások telepítésére, kezelésére és kiszolgálására vonatkozó vezető kereskedelmi platformok (például Red Hat OpenShift) üzleti követelményeivel.
Korlátozások Dokkmunkás és az új szoftver előnyeit már részletesen leírtuk , valamint az OCI projektben kínált teljes szoftververem és annak építészeti jellemzőinek részletes leírása megtalálható a hivatalos dokumentációban és magának a Red Hatnek a cikkeiben (nem rossz a Red Hat blogban) és harmadik féltől .
Fontos megjegyezni, hogy a javasolt verem összetevői milyen funkciókkal rendelkeznek:
- Podman — közvetlen interakció a tárolókkal és a képtárral a runC folyamaton keresztül;
- Buildah — képek összeállítása és feltöltése a nyilvántartóba;
- LÉTREHOZNI — végrehajtható környezet konténer-hangszerelési rendszerek számára (például Kubernetes).
Úgy gondolom, hogy a verem összetevői közötti interakció általános sémájának megértéséhez célszerű itt megadni egy kapcsolódási diagramot Kubernetes c runC és alacsony szintű könyvtárak segítségével LÉTREHOZNI:

LÉTREHOZNI и Kubernetes ugyanazt a kiadási és támogatási ciklust tartsa be (a kompatibilitási mátrix nagyon egyszerű: főbb verziók Kubernetes и LÉTREHOZNI egybeesik), és ez, figyelembe véve, hogy a fejlesztők a verem működésének teljes és átfogó tesztelésére összpontosítanak, jogot ad számunkra, hogy bármilyen felhasználási forgatókönyv esetén a maximálisan elérhető működési stabilitást várjuk el (itt a relatív könnyűség is előnyös LÉTREHOZNI összehasonlítva Dokkmunkás a funkcionalitás szándékos korlátozása miatt).
Telepítéskor Kubernetes "helyes út" módon (természetesen az OCI szerint) használatával LÉTREHOZNI on CentOS 8 Kisebb nehézségekbe ütköztünk, amelyeket azonban sikeresen leküzdöttünk. Szívesen megosztom Önnel a telepítési és konfigurációs utasításokat, amelyek összesen körülbelül 10 percet vesznek igénybe.
Hogyan telepítsük a Kubernetest? CentOS 8 a CRI-O környezet használatával
Előfeltételek: legalább egy gazdagép megléte (2 mag, 4 GB RAM, legalább 15 GB tárhely) telepített CentOS 8 (a „Server” telepítési profil ajánlott), valamint a helyi DNS-ben található bejegyzések (végső lehetőségként az /etc/hosts bejegyzéssel is meg lehet oldani). És ne felejtsd el .
Minden műveletet root felhasználóként hajtunk végre a gazdagépen, legyen óvatos.
- Az első lépésben konfiguráljuk az operációs rendszert, telepítjük és beállítjuk a CRI-O előzetes függőségeit.
- Frissítsük az operációs rendszert:
dnf -y update
- Ezután konfigurálnia kell a tűzfalat és az SE-t.LinuxItt minden attól a környezettől függ, amelyben a gazdagépünk vagy gazdagépeink működni fognak. A tűzfalat a következő ajánlásoknak megfelelően konfigurálhatja: , vagy ha megbízható hálózaton van, vagy harmadik féltől származó tűzfalat használ, módosítsa az alapértelmezett zónát megbízhatóra, vagy kapcsolja ki a tűzfalat:
firewall-cmd --set-default-zone trusted firewall-cmd --reloadA tűzfal kikapcsolásához használja a következő parancsot:
systemctl disable --now firewalldSELinux Ki kell kapcsolni vagy át kell kapcsolni az "engedélyező" módra:
setenforce 0 sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
- Töltse be a szükséges kernel modulokat és csomagokat, állítsa be a „br_netfilter” modul automatikus betöltését a rendszer indításakor:
modprobe overlay modprobe br_netfilter echo "br_netfilter" >> /etc/modules-load.d/br_netfilter.conf dnf -y install iproute-tc
- A csomagtovábbítás aktiválásához és a megfelelő forgalomfeldolgozáshoz elvégezzük a megfelelő beállításokat:
cat > /etc/sysctl.d/99-kubernetes-cri.conf <<EOF net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-ip6tables = 1 EOFalkalmazza a megadott beállításokat:
sysctl --system
- állítsa be a kívánt verziót LÉTREHOZNI (fő verzió LÉTREHOZNI, mint már említettük, megfeleljen a kívánt verziónak Kubernetes), a legújabb stabil verzió óta Kubernetes jelenleg 1.18:
export REQUIRED_VERSION=1.18adja hozzá a szükséges tárolókat:
dnf -y install 'dnf-command(copr)' dnf -y copr enable rhcontainerbot/container-selinux curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/CentOS_8/devel:kubic:libcontainers:stable.repo curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable:cri-o:$REQUIRED_VERSION.repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$REQUIRED_VERSION/CentOS_8/devel:kubic:libcontainers:stable:cri-o:$REQUIRED_VERSION.repo
- most telepíthetjük LÉTREHOZNI:
dnf -y install cri-oÜgyeljen az első árnyalatra, amellyel a telepítés során találkozunk: szerkesztenie kell a konfigurációt LÉTREHOZNI a szolgáltatás elindítása előtt, mivel a szükséges közös összetevő a megadotttól eltérő helyen található:
sed -i 's//usr/libexec/crio/conmon//usr/bin/conmon/' /etc/crio/crio.confMost aktiválhatja és elindíthatja a démont LÉTREHOZNI:
systemctl enable --now crioA démon állapotát ellenőrizheti:
systemctl status crio
- Frissítsük az operációs rendszert:
- Telepítés és aktiválás Kubernetes.
- Adjuk hozzá a szükséges tárolót:
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-$basearch enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg exclude=kubelet kubeadm kubectl EOFMost telepíthetjük Kubernetes (1.18-as verzió, a fent említettek szerint):
dnf install -y kubelet-1.18* kubeadm-1.18* kubectl-1.18* --disableexcludes=kubernetes
- A második fontos árnyalat: mivel nem használunk démont Dokkmunkás, de a démont használjuk LÉTREHOZNI, indítás és inicializálás előtt Kubernetes el kell végeznie a megfelelő beállításokat a /var/lib/kubelet/config.yaml konfigurációs fájlban, miután először létrehozta a kívánt könyvtárat:
mkdir /var/lib/kubelet cat <<EOF > /var/lib/kubelet/config.yaml apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration cgroupDriver: systemd EOF
- A harmadik fontos pont, amellyel a telepítés során találkozunk: annak ellenére, hogy feltüntettük a használt illesztőprogramot cgroup, és konfigurációja az átadott argumentumokon keresztül kubelet elavult (ahogy a dokumentációban kifejezetten szerepel), argumentumokat kell hozzáadnunk a fájlhoz, különben a fürt nem inicializálódik:
cat /dev/null > /etc/sysconfig/kubelet cat <<EOF > /etc/sysconfig/kubelet KUBELET_EXTRA_ARGS=--container-runtime=remote --cgroup-driver=systemd --container-runtime-endpoint='unix:///var/run/crio/crio.sock' EOF
- Most aktiválhatjuk a démont kubelet:
sudo systemctl enable --now kubeletA testreszabáshoz irányító-sík vagy munkás csomópontokat percek alatt használhatja .
- Adjuk hozzá a szükséges tárolót:
- Ideje inicializálni a klaszterünket.
- A fürt inicializálásához futtassa a következő parancsot:
kubeadm init --pod-network-cidr=10.244.0.0/16Feltétlenül írja le a „kubeadm join…” fürthöz való csatlakozás parancsát, amelyet a kimenet végén kell használnia, vagy legalább a megadott tokeneket.
- Telepítsük a bővítményt (CNI) a Pod hálózathoz. Javaslom a használatát Karton. Esetleg népszerűbb Flanel kompatibilitási problémái vannak nftables, igen és Karton - a projekt által ajánlott és teljes körűen tesztelt egyetlen CNI implementáció Kubernetes:
kubectl --kubeconfig /etc/kubernetes/admin.conf apply -f https://docs.projectcalico.org/v3.15/manifests/calico.yaml
- Ahhoz, hogy egy dolgozó csomópontot fürtünkhöz csatlakoztasson, be kell állítania az 1. és 2. utasítás szerint, vagy , majd futtassa a parancsot a „kubeadm init...” kimenetből, amelyet az előző lépésben írtunk le:
kubeadm join $CONTROL_PLANE_ADDRESS:6443 --token $TOKEN --discovery-token-ca-cert-hash $TOKEN_HASH
- Ellenőrizzük, hogy a klaszterünk inicializálva van-e, és elkezdett-e működni:
kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
Kész! Már tárolhat hasznos terheket a K8s-fürtön.
- A fürt inicializálásához futtassa a következő parancsot:
Mi vár ránk előttünk
Remélem, hogy a fenti utasítások segítségével időt és idegeket takarított meg.
Az iparágban lezajló folyamatok kimenetele gyakran attól függ, hogy a végfelhasználók és a megfelelő résbe tartozó egyéb szoftverek fejlesztői hogyan fogadják azokat. Egyelőre nem teljesen világos, hogy néhány év múlva mihez vezetnek az OCI-kezdeményezések, de örömmel figyeljük. Most megoszthatja véleményét a megjegyzésekben.
Maradjon velünk!
Ez a cikk a következő forrásoknak köszönhetően jelent meg:
- A tárolók futtatási idejéről szóló szakasz
- CRI-O projekt az interneten
- Red Hat blog cikkei: , és sokan mások
Forrás: will.com
