Harvester 配置

配置示例

你可以在手动或自动安装期间提供 Harvester 配置文件,来进行特定的配置。以下是一个配置示例:

  1. scheme_version: 1
  2. server_url: https://cluster-VIP:443
  3. token: TOKEN_VALUE
  4. os:
  5. ssh_authorized_keys:
  6. - ssh-rsa AAAAB3NzaC1yc2EAAAADAQAB...
  7. - github:username
  8. write_files:
  9. - encoding: ""
  10. content: test content
  11. owner: root
  12. path: /etc/test.txt
  13. permissions: '0755'
  14. hostname: myhost
  15. modules:
  16. - kvm
  17. - nvme
  18. sysctls:
  19. kernel.printk: "4 4 1 7"
  20. kernel.kptr_restrict: "1"
  21. dns_nameservers:
  22. - 8.8.8.8
  23. - 1.1.1.1
  24. ntp_servers:
  25. - 0.suse.pool.ntp.org
  26. - 1.suse.pool.ntp.org
  27. password: rancher
  28. environment:
  29. http_proxy: http://myserver
  30. https_proxy: http://myserver
  31. labels:
  32. topology.kubernetes.io/zone: zone1
  33. foo: bar
  34. mylabel: myvalue
  35. install:
  36. mode: create
  37. management_interface:
  38. interfaces:
  39. - name: ens5
  40. hwAddr: "B8:CA:3A:6A:64:7C"
  41. method: dhcp
  42. force_efi: true
  43. device: /dev/vda
  44. silent: true
  45. iso_url: http://myserver/test.iso
  46. poweroff: true
  47. no_format: true
  48. debug: true
  49. tty: ttyS0
  50. vip: 10.10.0.19
  51. vip_hw_addr: 52:54:00:ec:0e:0b
  52. vip_mode: dhcp
  53. force_mbr: false
  54. system_settings:
  55. auto-disk-provision-paths: ""

配置参考

下文提供所有配置密钥的参考。

Harvester 配置 - 图1警告

安全风险:配置文件包含应保密的凭证。请不要公开配置文件。

Harvester 配置 - 图2备注

配置优先级:如果你在安装 Harvester 期间提供了远程 Harvester 配置文件,Harvester 配置文件不会覆盖你之前填写和选择的输入值。换言之,你在安装期间输入的值优先级更高。 例如,如果你在 Harvester 配置文件中指定了 os.hostname,并且在安装过程中填写了 hostname 字段,那么你填写的值将优先于 Harvester 配置文件中的 os.hostname

scheme_version

定义

为后续配置迁移保留的 scheme 版本。

如果要将配置迁移到新的 scheme 版本,此设置是必需的。它能告诉 Harvester 以前的版本以及迁移的需求。

Harvester 配置 - 图3备注

该字段在当前的 Harvester 版本中不起作用。

Harvester 配置 - 图4警告

确保你的自定义配置始终具有正确的 scheme 版本。

server_url

定义

server_url 是 Harvester 集群的 URL,用于在集群中加入新的节点

对于使用 JOIN 模式进行的安装,配置是必须的。server_url 的默认格式是 https://cluster-VIP:443

Harvester 配置 - 图5备注

为确保高可用的 Harvester 集群,请使用 Harvester 集群 VIPserver_url 中的域名。

示例

  1. server_url: https://cluster-VIP:443
  2. install:
  3. mode: join

token

定义

集群密文或节点 Token。如果该值符合节点 Token 的格式,它将自动被认为是一个节点 Token。否则,它将被视为集群密文。

为了将一个新节点加入 Harvester 集群,Token 应该与服务器所拥有的相匹配。

示例

  1. token: myclustersecret

节点 Token

  1. token: "K1074ec55daebdf54ef48294b0ddf0ce1c3cb64ee7e3d0b9ec79fbc7baf1f7ddac6::node:77689533d0140c7019416603a05275d4"

os.ssh_authorized_keys

定义

应该添加到默认用户 rancher 的 SSH 授权密钥的列表。SSH 密钥可以通过使用 github:${USERNAME} 格式从 GitHub 用户账户获取。这是通过从 https://github.com/${USERNAME}.keys 中下载密钥来实现的。

示例

  1. os:
  2. ssh_authorized_keys:
  3. - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC2TBZGjE+J8ag11dzkFT58J3XPONrDVmalCNrKxsfADfyy0eqdZrG8hcAxAR/5zuj90Gin2uBR4Sw6Cn4VHsPZcFpXyQCjK1QDADj+WcuhpXOIOY3AB0LZBly9NI0ll+8lo3QtEaoyRLtrMBhQ6Mooy2M3MTG4JNwU9o3yInuqZWf9PvtW6KxMl+ygg1xZkljhemGZ9k0wSrjqif+8usNbzVlCOVQmZwZA+BZxbdcLNwkg7zWJSXzDIXyqM6iWPGXQDEbWLq3+HR1qKucTCSxjbqoe0FD5xcW7NHIME5XKX84yH92n6yn+rxSsyUfhJWYqJd+i0fKf5UbN6qLrtd/D"
  4. - "github:ibuildthecloud"

os.write_files

启动时写入磁盘的文件列表。encoding 字段指定内容的编码。encoding 的值可以为:

  • "":内容数据以纯文本形式写入。在这种情况下,也可以省略 encoding 字段。
  • b64base64:内容数据采用 base64 编码。
  • gzgzip:内容数据经过 gzip 压缩。
  • gz+base64gzip+base64gz+b64gzip+b64:内容数据先经过 gzip 压缩然后再 base64 编码。

示例

  1. os:
  2. write_files:
  3. - encoding: b64
  4. content: CiMgVGhpcyBmaWxlIGNvbnRyb2xzIHRoZSBzdGF0ZSBvZiBTRUxpbnV4...
  5. owner: root:root
  6. path: /etc/connman/main.conf
  7. permissions: '0644'
  8. - content: |
  9. # My new /etc/sysconfig/samba file
  10. SMDBOPTIONS="-D"
  11. path: /etc/sysconfig/samba
  12. - content: !!binary |
  13. f0VMRgIBAQAAAAAAAAAAAAIAPgABAAAAwARAAAAAAABAAAAAAAAAAJAVAAAAAA
  14. AEAAHgAdAAYAAAAFAAAAQAAAAAAAAABAAEAAAAAAAEAAQAAAAAAAwAEAAAAAAA
  15. AAAAAAAAAwAAAAQAAAAAAgAAAAAAAAACQAAAAAAAAAJAAAAAAAAcAAAAAAAAAB
  16. ...
  17. path: /bin/arch
  18. permissions: '0555'
  19. - content: |
  20. 15 * * * * root ship_logs
  21. path: /etc/crontab

os.hostname

定义

设置系统主机名。如果用户不提供值,安装程序将生成一个随机主机名。

示例

  1. os:
  2. hostname: myhostname

os.modules

定义

启动时要加载的内核模块列表。

示例

  1. os:
  2. modules:
  3. - kvm
  4. - nvme

os.sysctls

定义

启动时要设置的内核 sysctl。这些配置与你在 /etc/sysctl.conf 中找到的配置类似。 指定的值必须是字符串。

示例

  1. os:
  2. sysctls:
  3. kernel.printk: 4 4 1 7 # YAML 解析器读取为字符串。
  4. kernel.kptr_restrict: "1" # 强制 YAML 解析器读取为字符串。

os.dns_nameservers

定义

备用 DNS 名称服务器。如果 DHCP 或操作系统中没有配置 DNS,则使用备用 DNS 名称服务器。

示例

  1. os:
  2. dns_nameservers:
  3. - 8.8.8.8
  4. - 1.1.1.1

os.ntp_servers

定义

备用 NTP 服务器。如果操作系统中的其他位置没有配置 NTP,则使用备用 NTP 服务器。强烈建议你配置 os.ntp_servers 以避免主机之间的时间同步问题。

示例

  1. os:
  2. ntp_servers:
  3. - 0.suse.pool.ntp.org
  4. - 1.suse.pool.ntp.org

os.password

定义

默认用户 rancher 的密码。默认情况下,rancher 用户没有密码。 如果你在运行时设置密码,密码会在下次启动时重置。密码可以是明文或加密形式。获得这种加密密码最容易的方法,是在 Linux 系统上更改你的密码,并从 /etc/shadow 复制第二个字段的值。你也可以使用 OpenSSL 来加密密码。以下表格是 Harvester 目前支持的加密算法。

算法命令是否支持
SHA-512openssl passwd -6
SHA-256openssl passwd -5是 (从 v1.1.2 开始)
MD5openssl passwd -1是 (从 v1.1.2 开始)
MD5, Apache variantopenssl passwd -apr1是 (从 v1.1.2 开始)
AIX-MD5openssl passwd -aixmd5

Harvester 配置 - 图6信息

在 v1.1.2 前仅支持 SHA-512。

示例

加密形式:

  1. os:
  2. password: "$6$kZYUnRaTxNdg4W8H$WSEJydGWsNpaRbbbRdTDLJ2hDLbkizxSFGW2RtexlqG6njEATaGQG9ssztjaKDCsaNUPBZ1E1YdsvSLMAi/IO/"

明文形式:

  1. os:
  2. password: supersecure

os.environment

定义

要在 K3s 和其他进程(如启动进程)上设置的环境变量。 此字段主要用于设置 HTTP 代理。

示例

  1. os:
  2. environment:
  3. http_proxy: http://myserver
  4. https_proxy: http://myserver

Harvester 配置 - 图7备注

此示例为基本的操作系统组件设置 HTTP(S) 代理。 如果需要为 Harvester 组件(如获取外部镜像和备份到 S3)配置 HTTP(S) 代理,请参见 Settings/http-proxy

os.labels

定义

要添加到节点的标签。

示例

  1. os:
  2. labels:
  3. topology.kubernetes.io/zone: zone1
  4. foo: bar
  5. mylabel: myvalue

install.mode

定义

Harvester 安装模式:

  • create:创建新的 Harvester 安装。
  • join:加入现有的 Harvester 安装。此模式需要指定 server_url

示例

  1. install:
  2. mode: create

install.management_interface

定义

为主机配置网络接口。每个键值对均代表一个网络接口。键的名称会成为网络名称,而值是每个网络的配置。有效的配置字段是:

  • method:为该网络分配 IP 的方法。支持:
    • static:手动分配 IP 和 网关。
    • dhcp:向 DHCP 服务器请求一个 IP。
  • ip:此网络的静态 IP。如果选择了 static 方法,则必须设置此字段。
  • subnet_mask:此网络的子网掩码。如果选择了 static 方法,则必须设置此字段。
  • gateway:此网络的网关。如果选择了 static 方法,则必须设置此字段。
  • interfaces:接口名称数组。如果指定了该字段,安装程序会将这些 NIC 组合成单个逻辑绑定接口。
    • interfaces.name:绑定网络的从接口的名称。
    • interfaces.hwAddr:接口的硬件 MAC 地址。
  • bond_options:绑定接口的选项。详情请参见此处。如果不指定,则使用以下选项:
    • mode: balance-tlb
    • miimon: 100
  • mtu:接口的 MTU。
  • vlan_id:接口的 VLAN ID

Harvester 配置 - 图8备注

Harvester 使用 systemd 网络命名方案。 安装前请确保目标机器上存在接口名称。

示例

  1. install:
  2. mode: create
  3. management_interface:
  4. interfaces:
  5. - name: ens5
  6. hwAddr: "B8:CA:3A:6A:64:7D" # hwAddr 是可选的
  7. method: dhcp
  8. bond_options:
  9. mode: balance-tlb
  10. miimon: 100
  11. mtu: 1492
  12. vlan_id: 101

install.force_efi

即使未检测到 EFI,也强制安装 EFI。默认值:false

install.device

用于安装操作系统的设备。

install.silent

保留。

install.iso_url

如果从 kernel/vmlinuz 而不是 ISO 启动,则从这个 ISO 下载和安装。

install.poweroff

安装完成后关闭机器,而不是重启机器。

install.no_format

如果布局已经存在,不进行分区和格式化。

install.debug

为安装的系统启用日志管理和调试来运行安装。

install.tty

定义

用于控制台的 tty 设备。

示例

  1. install:
  2. tty: ttyS0,115200n8

install.vip

install.vip_mode

install.vip_hw_addr

定义

  • install.vip:Harvester 管理 endpoint 的 VIP。安装后,用户可以通过 URL https://<VIP> 访问 Harvester GUI。
  • install.vip_mode
    • dhcp:Harvester 会发送 DHCP 请求来获取 VIP。需要指定 install.vip_hw_addr 字段。
    • static:Harvester 使用静态 VIP。
  • install.vip_hw_addr:与 VIP 对应的硬件地址。用户需要配置本地的 DHCP 服务器来提供配置的 VIP。当 install.vip_mode 设为 dhcp 时,必须指定该字段。

详情请参见管理地址

示例

配置静态 VIP。

  1. install:
  2. vip: 192.168.0.100
  3. vip_mode: static

配置 DHCP VIP。

  1. install:
  2. vip: 10.10.0.19
  3. vip_mode: dhcp
  4. vip_hw_addr: 52:54:00:ec:0e:0b

install.force_mbr

定义

默认情况下,Harvester 在 UEFI 和 BIOS 系统上都使用 GPT 分区方案。 但是,如果你遇到兼容性问题,可以在 BIOS 系统上强制使用 MBR 分区方案。

Harvester 配置 - 图9备注

如果 install.data_disk 配置的存储设备与 install.device 相同,Harvester 会创建一个额外的分区来存储 VM 数据。 在强制使用 MBR 时,不会创建额外的分区,而且虚拟机数据将存储在与操作系统数据共享的分区中。

示例

  1. install:
  2. force_mbr: true

install.data_disk

从 v1.0.1 起可用

定义

设置默认存储设备来存储 VM 数据。

默认值:与 install.device 设置的存储设备相同

示例

  1. install:
  2. data_disk: /dev/sdb

system_settings

定义

你可以通过配置 system_settings 覆盖默认的 Harvester 系统设置。 有关其他信息和所有选项的列表,请参见设置页面。

Harvester 配置 - 图10备注

仅当 Harvester 以 Create 模式安装时,覆盖系统设置才有效。 如果你使用 join 模式安装 Harvester,则会忽略此设置。 join 模式安装会采用现有 Harvester 系统的设置。

示例

下面的示例覆盖了 containerd-registryhttp-proxyui-source 的设置。值必须是 string

  1. system_settings:
  2. containerd-registry: '{"Mirrors": {"docker.io": {"Endpoints": ["https://myregistry.local:5000"]}}, "Configs": {"myregistry.local:5000": {"Auth": {"Username": "testuser", "Password": "testpassword"}, "TLS": {"InsecureSkipVerify": false}}}}'
  3. http-proxy: '{"httpProxy": "http://my.proxy", "httpsProxy": "https://my.proxy", "noProxy": "some.internal.svc"}'
  4. ui-source: auto