Անցնել պարունակությանը

Talos OS

Այս հոդվածում

Տեղեկատվություն

Talos OS-ը ժամանակակից օպերացիոն համակարգ է, որը հատուկ մշակվել է Kubernetes-ի աշխատանքի համար: Այն օգտագործում է անփոփոխ (immutable) ֆայլային համակարգ և կոնտեյներային ճարտարահงրում՝ ապահովելով բարձր անվտանգություն, հարձակումների նվազագույն մակերես և Kubernetes կլաստերների օպտիմալացված արտադրողականություն:

Talos OS. Հիմնական հնարավորություններ

  • Նվազեցնում է հարձակումների հավանականությունը: shell-ի, փաթեթների կառավարիչի (package manager) և այլ ստանդարտ Linux բաղադրիչների բացակայությունը նվազեցնում է անվտանգության սպառնալիքները:
  • Անփոփոխ ենթակառուցվածք (Immutable infrastructure): հիմնված է անփոփոխության հայեցակարգի վրա, որտեղ թարմացումները կիրဆောင်վում են ատոմիկ ձևով, այլ ոչ թե գործող համակարգի փոփոխման միջոցով:
  • Embedded Kubernetes: ինտեգրված Kubernetes, որը օպտիմալացված է առավելագույն արտադրողականության համար և տեղադրված է համակարգի վրա:
  • API-centric կառավարում: ամբողջական կառավարում API-ի միջոցով՝ առանց SSH-ի կամ shell-ում հրամաններ գործարկելու անհրաժեշտության:
  • Բարձր ավտոմատացում: կլաստերի բաղադրիչների ավտոմատացված կոնֆիգուրացիա և վերականգնում՝ առանց ձեռքով միջամտության:
  • Պարզեցված թարմացումներ: OS-ի և Kubernetes-ի հուսալի թարմացում՝ սխալների դեպքում ավտոմատ հետադարձման (rollback) հնարավորությամբ:
  • Կոնտեյներային աջակցություն: օպտիմալացված է կոնտեյներացված հավելվածների աշխատանքի համար:
  • Խիստ անվտանգություն: համապատասխանություն անվտանգության լավագույն պրակտիկաներին, ներառյալ պարտադատիրվող шиფրավորում և ստորագրության ստուգում:
  • Ռեսուրսների արդյունավետ օգտագործում: համակարգային ռեսուրսների նվազագույն սպառում՝ աշխատանքային բեռին (workloads) առավելագույն բաշխում ապահովելու համար:
  • Բարձր դիմացկունություն: նախագծված է բաշտված և սխալահանդուր մակրոմակարդակի միջավայրերում աշխատելու համար:

Տեղակայման հնարավորություններ

ID OS Name Alias Active BM GPU VPS VDS Family OS Group CloudInit Avilible
322 Talos 1.12.2 - Yes + + + - Talos Others No ORDER
329 Talos 1.14.2 - Yes + + + - Talos Others No ORDER

Զգուշացում: Ժամանակավոր բեռնում՝ առանց տեղադրման

Talos OS-ով սերվեր պատվիրելիս համակարգը նախնական շրջանում բեռնվում է RAM-ի մեջ և ոչ թե տեղադրվում սկավառակի վրա: Եթե սերվերը վերագործարկվի (reboot) նախքան կոնֆիգուրացիայի և տեղադրման գործընթացի ավարտը, համակարգը կկորի և կպահանջի նոր պատվեր:

Talos OS-ով սերվեր պատվիրելիս դուք ստանում եք՝

  • Սերվեր՝ Talos OS-ով ժամանակավոր բեռնված՝ maintenance mode ռեժիմում,
  • Հասանելիություն սերվերի կոնսոլին՝ control panel-ի միջոցով,
  • Համակարգը սկավառակի վրա կոնֆիգուրացնելու և տեղադրելու հնարավորություն՝ օգտագործելով Talos գործիքները:

Talos OS-ի տեղադրումը տրամադրված սերվերի վրա

Ստանալով Talos OS-ով սերվերը, անհրաժեշտ է անցնել սերվերների և API կառավարման պանել — Invapi գնալ սերվերի քարտ և բացել Native Console: Դուք կտեսնեք համակարգը maintenance mode ռեժիմում (Maintenance)՝ Ready: True նշումով control panel-ի կոնսոլի միջոցով: Սա ժամանակավոր վիճակ է, որը պահանջում է հետագա կոնֆիգուրացիա՝ մշտական տեղադրման համար.

Քայլ 1: Talos CLI գործիքի բեռնում

Նախ, տեղադրեք talosctl օգտակրոցը ձեր տեղական մեքենայի վրա.

Linux/MacOS-ի համար:

curl -sL https://talos.dev/install | sh

Windows-ի համար:

  1. Ստեղծեք թղթապանակ talosctl-ի համար (եթե դեռ չկա)
    mkdir -Force $env:USERPROFILE\.talos
    
  2. Ներբեռնեք talosctl-ի Windows-ի համար նախատեսված վերջին տարբերակը
    Invoke-WebRequest -Uri "https://github.com/siderolabs/talos/releases/latest/download/talosctl-windows-amd64.exe" -OutFile "$env:USERPROFILE\.talos\talosctl.exe"
    
  3. Ավելացրեք talosctl-ի ուղին PATH շրջանակային փոփոխականին (environment variable)
    $path = [Environment]::GetEnvironmentVariable("Path", "User")
    if ($path -notlike "*$env:USERPROFILE\.talos*") {
        [Environment]::SetEnvironmentVariable("Path", "$path;$env:USERPROFILE\.talos", "User")
    }
    

Տեղադրումից հետո բացեք տերմինալի նոր պատուհան և ստուգեք ֆունկցիոնալությունը.

talosctl version

Քայլ 2: Կոնֆիգուրացիոն ֆայլերի պատրաստում

Secrets-ների գեներացում:

talosctl gen secrets

Հիմնական կոնֆիգուրացիայի գեներացում:

talosctl gen config --with-secrets secrets.yaml node-talos https://[SERVER-IP]:6443

Փոխարինեք [SERVER-IP] ձեր սերվերի իրական IP հասցեով:

Քայլ 3: Patch ֆայլի ստեղծում

Կոնֆիգուրացիայի մեջ disk և interface պարամետրերը պետք է համապատասխանեն ձեր սերվերի սարքավորումներին: Այդ արժեքները որոշելու համար գործարկեք հետևյալ հրամանները.

  1. Պարզեք առկա սկավառակները (disks)

    talosctl -n [SERVER-IP] -e [SERVER-IP] get disks --insecure
    
    2. Պարզեք ցանցային ինտերֆեյսերը (network interfaces)

    talosctl -n [SERVER-IP] -e [SERVER-IP] get links --insecure
    

Հրամանի արդյունքում գտեք՝

  • Ձեր հիմնական սկավառակի անունը (սովորաբար /dev/sda, /dev/vda կամ /dev/nvme0n1):
  • Ձեր ցանցային ինտերֆեյսի անունը (սովորաբար eth0, ens3, enp0s3 և այլն):

Ստեղծեք patch.controlplane.yaml անունով ֆայլ՝ հետևյալ պարունակությամբ.

cluster:
  apiServer:
    certSANs:
      - [SERVER-IP]
      - 127.0.0.1
      - localhost
      - kubernetes
      - kubernetes.default
      - kubernetes.default.svc
      - kubernetes.default.svc.cluster.local
      - kubernetes.default.svc.cluster.local
machine:
  install:
    disk: /dev/sda
    image: factory.talos.dev/installer/376567988ad370138ad8b2698212367b8edcb69b5fd68c80be1f2ec7d603b4ba:v1.9.5
    wipe: true
    extraKernelArgs:
      - talos.platform=metal
  features:
    hostDNS:
      enabled: false
      forwardKubeDNSToHost: false
  kubelet:
    clusterDNS:
      - [SERVER-IP]
  network:
    hostname: node-talos
    interfaces:
      - interface: eth0
        dhcp: true
    nameservers:
      - 8.8.8.8
      - 8.8.4.4
  time:
    disabled: false
    servers:
      - ntp.ix.com
    bootTimeout: 2m0s

Փոխարինեք ֆայլի մի քանի տեղերում [SERVER-IP] ձեր սերվերի IP հասցեով:

Նշում

Static IP-ներով աշխատելու համար օգտագործեք հետևյալ patch-ը.

cluster:
  apiServer:
    certSANs:
      - 127.0.0.1
      - localhost
      - kubernetes
      - kubernetes.default
      - kubernetes.default.svc
      - kubernetes.default.svc.cluster.local
      - [SERVER-IP-ADDRESS]
machine:
  install:
    disk: /dev/sda
    image: factory.talos.dev/installer/376567988ad370138ad8b2698212367b8edcb69b5fd68c80be1f2ec7d603b4ba:v1.9.5
    wipe: true
    extraKernelArgs:
      - talos.platform=metal
  features:
    hostDNS:
      enabled: false
      forwardKubeDNSToHost: false
  kubelet:
    clusterDNS:
      - [SERVER-IP-ADDRESS]
  network:
    hostname: node-talos
    interfaces:
      - interface: [INTERFACE NAME]
        addresses:
          - [YOUR SERVER'S API]/[SUBNET MASK]
        mtu: 8765
        routes:
          - network: 0.0.0.0/0
            gateway: [YOUR SERVER's GATEWAY]
    nameservers:
      - 8.8.8.8
      - 8.8.4.4
  time:
    disabled: false
    servers:
      -  pool.ntp.org
    bootTimeout: 2m0s

Քայլ 4: Talos Client-ի կոնֆիգուրացիա

talosctl --talosconfig talosconfig config endpoint [SERVER-IP]
talosctl --talosconfig talosconfig config node [SERVER-IP]

Քայլ 5: Patch-ի կիրարկում կոնֆիգուրացիային

Linux/macOS-ի համար:

talosctl machineconfig patch controlplane.yaml --patch @patch.controlplane.yaml -o controlplane_patched.yaml

Windows-ի համար (PowerShell):

talosctl machineconfig patch controlplane.yaml --patch "`@patch.controlplane.yaml" -o controlplane_patched.yaml

Քայլ 6: Կոնֆիգուրացիայի կիրտարկում սերվերի վրա

talosctl --talosconfig ./talosconfig apply-config --insecure -n [SERVER-IP] -e [SERVER-IP] --file ./controlplane_patched.yaml

Այս հրամանը գործարկելուց հետո սերվերի վրա կսկսվի տեղադրման գործընթացը: Դուք կարող եք մոնիթորինգ անել այս գործընթացը control panel-ի կոնսոլի միջոցով:

Քայլ 7: Տեղադրման ավարտին սպասել

Սպասեք, մինչև սերվերի կոնսոլի կարգավիճակը փոխվի.

  • Stage: Booting > Stage: Running;
  • Ready: True պետք է մնա ակտիվ:

Կոնսոլում պետք է հայտնվի հաղակարգում.

[talos] etcd is waiting to join the cluster. If this node is the first node in the cluster, please run 'talosctl bootstrap'

Քայլ 8: Կլաստերի ինիցիալիզացիա

Երբ սերվերը հաղակարգում է կլաստերին միանալու մասին, գործարկեք.

talosctl --talosconfig ./talosconfig bootstrap

Քայլ 9: Kubernetes կոնֆիգուրացիայի ստացում

Սպասեք կոնսոլում հայտնվող [talos] machine is running and ready հաղակարգմանը, ապա գործարկեք.

talosctl --talosconfig ./talosconfig kubeconfig kubeconf

Այս հրամանը կստեղծի kubeconf ֆայլը, որը կարող է օգտագործվել Kubernetes կլաստերը կառավարելու համար:

Կարևոր նշումներ

  • Պահպանեք secrets.yaml և talosconfig ֆայլերը անվտանգ վայրում - դրանք անհրաժեշտ են կլաստերին հետագայում հասանելիություն ստանալու համար.
  • Հաջող տեղադրումից հետո համակարգը կպահպանվի սկավառակի վրա և չի կորի վերագործարկման ժամանակ:
  • Ձեր կոնֆիգուրացիոն ֆայլերի և հրամանների միջև host name-ը պետք է լինի նույնը:

Կոնֆիգուրացիա և կառավարում

Հաջող տեղադրումից հետո դուք կարող եք կառավարել ձեր սերվերը՝ օգտագործելով talosctl.

  1. Ստանալ node-ի կարգավիճակը.
talosctl --talosconfig ./talosconfig dmesg
  1. Դիտել համակարգային ռեսուրսները.
talosctl --talosconfig ./talosconfig dashboard
  1. Ցուցակագրել գործող ծառայությունները.
talosctl --talosconfig ./talosconfig services
  1. Վերագործարկել node-ը.
talosctl --talosconfig ./talosconfig reboot

Kubernetes կլաստերի ստեղծում

Ձեր Kubernetes կլաստերը պետք է արդեն ինիցիալիզացված լինի bootstrap հրամանից հետո: Այնով աշխատելու համար՝

  1. Տեղադրեք kubectl ձեր տեղական մեքենայի վրա.

Linux-ի համար:

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/

Windows-ի համար:

curl.exe -LO "https://dl.k8s.io/release/v1.29.0/bin/windows/amd64/kubectl.exe"

  1. Կոնֆիգուրացրեք հասանելիությունը կլաստերին.

for Linux/macOS:

export KUBECONFIG=./kubeconf
for Windows PowerShell:

$env:KUBECONFIG=".\kubeconf"
  1. Ստուգեք կլաստերի ֆունկցիոնալությունը.
    .\kubectl get nodes
    

Multi-Node կլաստերի ստեղծում

Կլաստերին լրացուցիչ node-եր ավելացնելու համար՝

  1. Նոր control plane node-ի համար.

    talosctl apply-config --insecure --nodes <new-node-ip> --file controlplane.yaml
    

  2. Worker node-ի համար.

    talosctl apply-config --insecure --nodes <new-node-ip> --file worker.yaml
    

Նշում

Bootstrap-ը կատարվում է միայն մեկ անգամ՝ առաջին node-ի վրա: Հաջորդ node-երը ավտոմատ կերպով կմիանան գոյություն ունեցող կլաստերին:

Կլաստերի կառավարման ինտերֆեյս

Կլաստեր ստեղծելուց հետո հասանելի են տարբեր գործիքներ կառավարման համար.

  • talosctl: Talos OS node-երի կառավարման համար;
  • kubectl: Kubernetes ռեսուրսների կառավարման համար;
  • Web panels: հավելյալ կառավարման պանելներ կարող են տեղադրվել Kubernetes-ի միջոցով:

Համակարգի թարմացում և մոնիթորինգ

Talos OS-ի թարմացում

Talos OS-ը ստամատիկ թարմացումներ է ապահովում՝ առանց կլաստերի դադարի (downtime):

  1. Ստուգել հասանելի տարբերակները.

    talosctl --talosconfig ./talosconfig version --client
    

  2. Կատարել node-ի թարմացում.

    talosctl --talosconfig ./talosconfig upgrade --nodes <node-ip> --image ghcr.io/siderolabs/installer:v1.9.5
    

Համակարգի մոնիթորինգ

Talos OS-ը տրամադրում է մոնիթորինգի մի քանի մեթոդ.

  1. Ներկառուցված գործիքներ.

    talosctl --talosconfig ./talosconfig dashboard
    

  2. Տեղադրել մոնիթորինգի լուծումներ Kubernetes-ի միջոցով.

    kubectl apply -f https://github.com/prometheus-operator/kube-prometheus/releases/download/v0.12.0/manifests.yaml
    

Նշում

Talos OS-ի լրացուցիչ կոնֆիգուրացիաների վերաբերյալ մանրամասն տեղեկատվությունը հասանելի է մշակողների փաստաթղթերում.

Օգտակար հոդվածներ թեմայի վերաբերյալ

Պատվիրել Talos OS API-ի միջոցով

Այս ծրագրի տեղադրման համար օգտագործեք API՝ հետևելով այս հրահանգներին.

question_mark
Is there anything I can help you with?
question_mark
AI Assistant ×