跳转至

Talos OS

在这篇文章中

信息

Talos OS 是一款专为运行 Kubernetes 而开发的现代操作系统。它采用不可变文件系统和容器架构,提供高安全性、极小的攻击面以及经过优化的 Kubernetes 集群性能。

Talos OS 主要特性

  • 最大限度降低攻击机会: 缺乏 shell (shell)、包管理器和其他标准 Linux 组件,从而减少了安全威胁。
  • 不可变基础设施: 基于不可变概念,更新是原子化应用的,而不是修改现有系统。
  • 嵌入式 Kubernetes: 集成了针对最大性能进行优化的 Kubernetes,而不是在系统之上安装。
  • 以 API 为中心的管理: 通过 API 进行完整管理,无需使用 SSH 或在 shell 中执行命令。
  • 高度自动化: 无需人工干预即可实现集群组件的自动化配置和恢复。
  • 简化更新: 可靠的 OS 和 Kubernetes 更新,并在出错时自动回滚。
  • 内置容器支持: 针对运行容器化应用进行了优化。
  • 严格的安全机制: 符合最佳安全实践,包括强制执行加密和签名验证。
  • 高效的资源利用: 最少消耗系统资源,从而最大限度地分配给工作负载。
  • 高韧性: 旨在分布式和容错环境中运行。

部署功能

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 中的**,并未安装在磁盘上。如果在完成配置和安装过程之前重启服务器,系统将会丢失,需要重新订购。

当订购带有 Talos OS 的服务器时,您将获得:

  • 一台处于维护模式 (Maintenance) 且临时加载了 Talos OS 的服务器;
  • 通过控制面板访问服务器控制台的权限;
  • 使用 Talos 工具在磁盘上配置和安装系统的能力。

在所提供的服务器上安装 Talos OS

收到带有 Talos OS 的服务器后,您需要前往 服务器和 API 管理面板 — Invapi,进入服务器卡片并打开 Native Console。您将在控制面板控制台中看到处于维护模式 (Maintenance) 且带有 Ready: True 备注的系统。这是一种临时状态,需要进行进一步配置以实现永久安装:

第 1 步:加载 Talos CLI 工具

首先,在您的本地机器上安装 talosctl 工具:

对于 Linux/MacOS:

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

对于 Windows:

  1. 创建一个用于 talosctl 的文件夹(如果尚未创建)
    mkdir -Force $env:USERPROFILE\.talos
    
  2. 下载适用于 Windows 的最新版 talosctl
    Invoke-WebRequest -Uri "https://github.com/siderolabs/talos/releases/latest/download/talosctl-windows-amd64.exe" -OutFile "$env:USERPROFILE\.talos\talosctl.exe"
    
  3. 将 talosctl 的路径添加到 PATH 环境变量中
    $path = [Environment]::GetEnvironmentVariable("Path", "User")
    if ($path -notlike "*$env:USERPROFILE\.talos*") {
        [Environment]::SetEnvironmentVariable("Path", "$path;$env:USERPROFILE\.talos", "User")
    }
    

信息

您也可以不使用命令行来安装 talosctl:

  1. 直接从 GitHub 下载适用于 Windows 的最新版 talosctl;
  2. 将下载的文件重命名为 talosctl.exe;
  3. 将文件复制到 C:\Windows\System32\ 文件夹中(需要管理员权限)。

安装完成后,打开一个新的终端窗口并检查功能:

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 File)

配置中的 disk 和 interface 参数应与您的服务器硬件匹配。要确定这些值,请运行以下命令:

  1. 确定可用磁盘

    talosctl -n [SERVER-IP] -e [SERVER-IP] get disks --insecure
    
    2. 确定网络接口

    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
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 地址。

备注

若要使用静态 IP,请使用以下补丁

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 客户端

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

第 5 步:将补丁应用到配置

对于 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

运行此命令后,服务器上的安装过程将开始。您可以通过控制面板控制台监控此过程。

第 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 文件保存在安全位置 —— 它们是未来访问集群所必需的;
  • 安装成功后,系统将保存到磁盘,重启后不会丢失;
  • 您的配置文件与命令中的主机名必须完全匹配。

配置与管理

在磁盘上成功安装 Talos OS 后,您可以使用 talosctl 管理您的服务器:

  1. 获取节点状态:
talosctl --talosconfig ./talosconfig dmesg
  1. 查看系统资源:
talosctl --talosconfig ./talosconfig dashboard
  1. 列出正在运行的服务:
talosctl --talosconfig ./talosconfig services
  1. 重启节点:
talosctl --talosconfig ./talosconfig reboot

创建 Kubernetes 集群

执行 bootstrap 命令后,您的 Kubernetes 集群应该已经初始化完成。要开始使用它:

  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. 配置集群访问:

对于 Linux/macOS:

export KUBECONFIG=./kubeconf
对于 Windows PowerShell:

$env:KUBECONFIG=".\kubeconf"
  1. 验证集群功能:
    .\kubectl get nodes
    

创建多节点集群

要向集群添加额外节点:

  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 操作仅在第一个节点上执行一次。其他节点将自动加入现有集群。

集群管理界面

创建集群后,可以使用各种工具进行管理:

  • talosctl: 管理 Talos OS 节点;
  • kubectl: 管理 Kubernetes 资源;
  • Web panels: 可以通过 Kubernetes 安装额外的控制面板。

系统更新与监控

更新 Talos OS

Talos OS 支持无需集群停机即可进行原子更新:

  1. 检查可用版本:

    talosctl --talosconfig ./talosconfig version --client
    

  2. 执行节点更新:

    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 额外配置的详细信息,请参阅 开发者文档。

相关主题的有用文章

使用 API 订购 Talos OS

要使用 API 安装此软件,请遵循这些说明。

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