Skip to content

Talos OS

在这篇文章中

信息

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

Talos OS 主要功能

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

部署功能

ID 操作系统名称 别名 活跃 裸金属 GPU VPS VDS 系列 操作系统组 CloudInit 可用
268 Talos 1.9.5 - Yes + + + - Talos Others No ORDER

重要:临时加载而非安装

订购带有 Talos OS 的服务器时,系统会**最初加载到 RAM 中**,而不会安装到磁盘上。如果在完成配置和安装过程之前重启服务器,系统将丢失并需要重新订购。

订购带有 Talos OS 的服务器时,您将收到:

  • 一台以维护模式临时加载 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:准备配置文件

生成密钥:

talosctl gen secrets

生成基本配置:

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

[SERVER-IP] 替换为您服务器的实际 IP 地址。

步骤 3:创建补丁文件

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

  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);
  • 网络接口的名称(通常为 eth0ens3enp0s3 等)。

创建一个名为 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.yamltalosconfig 保存在安全位置 - 它们对于将来访问集群是必需的;
  • 成功安装后,系统将保存在磁盘上,重启时不会丢失;
  • 主机名必须在您的配置文件和命令之间完全匹配。

配置和管理

成功在磁盘上安装 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. 对于新的控制平面节点:

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

  2. 对于工作节点:

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

备注

Bootstrap 仅在第一个节点上执行一次。其他节点将自动加入现有集群。

集群管理界面

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

  • talosctl:管理 Talos OS 节点;
  • kubectl:管理 Kubernetes 资源;
  • Web 面板:可以通过 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 ×