Harvester 配置
配置範例
Harvester 配置文件可在手動或自動安裝期間提供,用於配置各種設定。以下是一個配置範例:
scheme_version: 1
server_url: https://cluster-VIP:443
token: TOKEN_VALUE
os:
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQAB...
- github:username
write_files:
- encoding: ""
content: test content
owner: root
path: /etc/test.txt
permissions: '0755'
hostname: myhost
modules:
- kvm
- nvme
sysctls:
kernel.printk: "4 4 1 7"
kernel.kptr_restrict: "1"
dns_nameservers:
- 8.8.8.8
- 1.1.1.1
ntp_servers:
- 0.suse.pool.ntp.org
- 1.suse.pool.ntp.org
password: rancher
environment:
http_proxy: http://myserver
https_proxy: http://myserver
labels:
topology.kubernetes.io/zone: zone1
foo: bar
mylabel: myvalue
install:
mode: create
management_interface:
interfaces:
- name: ens5
hwAddr: "B8:CA:3A:6A:64:7C"
method: dhcp
force_efi: true
device: /dev/sda
data_disk: /dev/sdb
silent: true
iso_url: http://myserver/test.iso
poweroff: true
no_format: true
debug: true
tty: ttyS0
vip: 10.10.0.19
vip_hw_addr: 52:54:00:ec:0e:0b
vip_mode: dhcp
cluster_pod_cidr: 10.52.0.0/16
cluster_service_cidr: 10.53.0.0/16
cluster_dns: 10.53.0.10
force_mbr: false
addons:
harvester_vm_import_controller:
enabled: false
values_content: ""
harvester_pcidevices_controller:
enabled: false
values_content: ""
rancher_monitoring:
enabled: true
values_content: ""
rancher_logging:
enabled: false
values_content: ""
harvester_seeder:
enabled: false
values_content: ""
system_settings:
auto-disk-provision-paths: ""
配置參考
以下是所有配置鍵的參考。
安全風險:配置文件包含應保密的憑證。請勿公開配置文件。
配置優先級:當您在安裝 Harvester 期間提供遠端 Harvester 配置文件時,Harvester 配置文件不會覆蓋您先前填寫和選擇的輸入值。優先級給予您在引導安裝期間輸入的值。
例如,如果您在 Harvester 配置文件中指定了 os.hostname,並且在安裝期間填寫了提示的 hostname 欄位,您填寫的值將優先於 Harvester 配置的 os.hostname。
scheme_version
定義
為未來配置遷移保留的架構版本。
此配置對於將配置遷移到新的架構版本是必需的。它告訴 Harvester 先前的版本以及遷移的需求。
此欄位在當前 Harvester 版本中不生效。
請確保您的自訂配置始終具有正確的架構版本。
server_url
定義
server_url 是 Harvester 叢集的 URL,用於新節點加入叢集。
當安裝處於 JOIN 模式時,此配置是必需的。server_url 的預設格式為 https://cluster-VIP:443。
為確保高可用性(HA)Harvester 叢集,請在 server_url 中使用 Harvester 叢集 VIP 或網域名稱。
範例
server_url: https://cluster-VIP:443
install:
mode: join
token
定義
叢集密鑰或節點令牌。如果值符合節點令牌的格式,將自動假定為節點令牌。否則視為叢集密鑰。
為了讓新節點加入 Harvester 叢集,令牌應與伺服器的令牌匹配。
範例
token: myclustersecret
或節點令牌
token: "K1074ec55daebdf54ef48294b0ddf0ce1c3cb64ee7e3d0b9ec79fbc7baf1f7ddac6::node:77689533d0140c7019416603a05275d4"
os.ssh_authorized_keys
定義
應添加到預設使用者 rancher 的 SSH 授權金鑰列表。SSH 金鑰可以使用格式 github:${USERNAME} 從 GitHub 使用者帳戶獲取。這是透過從 https://github.com/${USERNAME}.keys 下載金鑰來完成的。
範例
os:
ssh_authorized_keys:
- "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC2TBZGjE+J8ag11dzkFT58J3XPONrDVmalCNrKxsfADfyy0eqdZrG8hcAxAR/5zuj90Gin2uBR4Sw6Cn4VHsPZcFpXyQCjK1QDADj+WcuhpXOIOY3AB0LZBly9NI0ll+8lo3QtEaoyRLtrMBhQ6Mooy2M3MTG4JNwU9o3yInuqZWf9PvtW6KxMl+ygg1xZkljhemGZ9k0wSrjqif+8usNbzVlCOVQmZwZA+BZxbdcLNwkg7zWJSXzDIXyqM6iWPGXQDEbWLq3+HR1qKucTCSxjbqoe0FD5xcW7NHIME5XKX84yH92n6yn+rxSsyUfhJWYqJd+i0fKf5UbN6qLrtd/D"
- "github:ibuildthecloud"
os.write_files
在開機時寫入磁碟的文件列表。encoding 欄位指定內容的編碼。有效的 encoding 值為:
"":內容資料以純文字寫入。在這種情況下,也可以省略encoding欄位。b64、base64:內容資料為 base64 編碼。gz、gzip:內容資料為 gzip 壓縮。gz+base64、gzip+base64、gz+b64、gzip+b64:內容資料先進行 gzip 壓 縮,然後進行 base64 編碼。
範例
os:
write_files:
- encoding: b64
content: CiMgVGhpcyBmaWxlIGNvbnRyb2xzIHRoZSBzdGF0ZSBvZiBTRUxpbnV4...
owner: root:root
path: /etc/connman/main.conf
permissions: '0644'
- content: |
# My new /etc/sysconfig/samba file
SMDBOPTIONS="-D"
path: /etc/sysconfig/samba
- content: !!binary |
f0VMRgIBAQAAAAAAAAAAAAIAPgABAAAAwARAAAAAAABAAAAAAAAAAJAVAAAAAA
AEAAHgAdAAYAAAAFAAAAQAAAAAAAAABAAEAAAAAAAEAAQAAAAAAAwAEAAAAAAA
AAAAAAAAAwAAAAQAAAAAAgAAAAAAAAACQAAAAAAAAAJAAAAAAAAcAAAAAAAAAB
...
path: /bin/arch
permissions: '0555'
- content: |
15 * * * * root ship_logs
path: /etc/crontab
os.persistent_state_paths
定義
os.persistent_state_paths 選項允許您配置自訂路徑,在這些路徑中對文件的修改將在重新開機後持續保留。對這些路徑中文件的任何更改在重新開機後都不會丟失。
範例
參考以下在 Harvester 中安裝 rook-ceph 的範例配置:
os:
persistent_state_paths:
- /var/lib/rook
- /var/lib/ceph
modules:
- rbd
- nbd
os.after_install_chroot_commands
定 義
您可以使用 after_install_chroot_commands 添加額外的軟體套件。由 elemental-toolkit 提供的 after-install-chroot 階段允許您執行不受文件系統寫入問題限制的命令,確保使用者定義的命令即使在系統重新開機後也能持續保留。
範例
參考以下在 Harvester 中安裝 RPM 套件的範例配置:
os:
after_install_chroot_commands:
- rpm -ivh <the url of rpm package>
在 after-install-chroot 階段 DNS 解析不可用,且 nameserver 可能不可用。如果您需要存取網域名稱以使用 URL 安裝套件,請先建立臨時的 /etc/resolv.conf 文件。例如:
os:
after_install_chroot_commands:
- "rm -f /etc/resolv.conf && echo 'nameserver 8.8.8.8' | sudo tee /etc/resolv.conf"
- "mkdir /usr/local/bin"
- "curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 && chmod 700 get_helm.sh && ./get_helm.sh"
- "rm -f /etc/resolv.conf && ln -s /var/run/netconfig/resolv.conf /etc/resolv.conf"
升級 Harvester 會導致在 after-install-chroot 階段對作業系統的更改丟失。您還必須配置 after-upgrade-chroot 以使您的更改在升級後持續保留。在升級 Harvester 之前,請參閱 Runtime persistent changes。
os.hostname
定義
設定系統主機名稱。如果使用者未提供值,安裝程式將產生隨機主機名稱。
範例
os:
hostname: myhostname
os.modules
定義
在啟動時要載入的核心模組列表。
範例
os:
modules:
- kvm
- nvme
os.sysctls
定義
在啟動時設定的核心 sysctl。這些是通常在 /etc/sysctl.conf 中找到的配置。
值必須指定為字串。
範例
os:
sysctls:
kernel.printk: 4 4 1 7 # YAML 解析器將讀取為字串
kernel.kptr_restrict: "1" # 強制 YAML 解析器讀取為字串
os.dns_nameservers
定義
如果 DNS 未透過 DHCP 或作業系統配置,則使用的備用 DNS 名稱伺服器。
範例
os:
dns_nameservers:
- 8.8.8.8
- 1.1.1.1
os.ntp_servers
定義
如果 NTP 未在作業系統其他地方配置,則使用的備用 ntp 伺服器。強烈建議配置 os.ntp_servers 以避免機器之間的時間同步問題。
範例
os:
ntp_servers:
- 0.suse.pool.ntp.org
- 1.suse.pool.ntp.org
os.password
定義
預設使用者 rancher 的密碼。預設情況下,rancher 使用者沒有密碼。
如果您在執行時設定密碼,它將在下次開機時重置。密碼的值可以是明文或加密形式。獲取此加密形式的最簡單方法是在 Linux 系統上更改密碼,然後從 /etc/shadow 複製第二個欄位的值。您也可以使用 OpenSSL 加密密碼。有關 Harvester 支援的加密演算法,請參閱下表。
| 演算法 | 命令 | 支援 |
|---|---|---|
| SHA-512 | openssl passwd -6 | 是 |
| SHA-256 | openssl passwd -5 | 是 |
| MD5 | openssl passwd -1 | 是 |
| MD5,Apache 變體 | openssl passwd -apr1 | 是 |
| AIX-MD5 | openssl passwd -aixmd5 | 否 |
範例
加密:
os:
password: "$6$kZYUnRaTxNdg4W8H$WSEJydGWsNpaRbbbRdTDLJ2hDLbkizxSFGW2RtexlqG6njEATaGQG9ssztjaKDCsaNUPBZ1E1YdsvSLMAi/IO/"
或明文:
os:
password: supersecure
os.environment
定義
要在 K3s 和其他程序(如開機程序)上設定的環境變數。 此欄位的主要用途是設定 HTTP 代理。
範例
os:
environment:
http_proxy: http://myserver
https_proxy: http://myserver
此範例為基礎作業系統元件設定 HTTP(S) 代理。 要為 Harvester 元件(如擷取外部映像和備份到 S3 服務)設定 HTTP(S) 代理, 請參閱 Settings/http-proxy。
os.labels
定義
要添加到此節點的標籤。
範例
os:
labels:
topology.kubernetes.io/zone: zone1
foo: bar
mylabel: myvalue
os.sshd.sftp
定義
用於配置 OpenSSH 守護程序(sshd)的子系統。Harvester 目前僅支援 sftp。
範例
os:
sshd:
sftp: true # SFTP 子系統已啟用。
install.addons
版本:v1.2.0 及更高版本
定義:定義預設附加元件狀態的設定。Harvester 附加元件預設為停用。
支援的值:
vm-import-controller(chartName: harvester-vm-import-controller)pcidevices-controller(chartName: harvester-pcidevices-controller)rancher-monitoringrancher-loggingharvester-seeder(實驗性)
範例:
install:
addons:
rancher_monitoring:
enabled: true
rancher_logging:
enabled: false
install.automatic
定義:強制安裝程式跳過安裝過程中互動步驟的設定。
啟用後,配置可從 harvester.install.config_url 的值擷取,或使用核心參數單獨定義。
install.data_disk
版本:v1.0.1 及更高版本
定義:儲存 VM 資料的預設裝置。
透過 PXE 安裝時,如果伺服器包含多個實體磁碟區,請使用 /dev/disk/by-id/$id 或 /dev/disk/by-path/$path 指定儲存裝置。
預設值:在設定 install.device 中配置的儲存裝置
範例:
install:
data_disk: /dev/sdb
install.debug
定義:在安裝期間啟用額外日誌記錄和除錯的設定。
install.device
定義:安裝 Harvester 作業系統的裝置。
透過 PXE 安裝時,如果伺服器包含多個實體磁碟區,請使用 /dev/disk/by-id/$id 或 /dev/disk/by-path/$path 指定儲存裝置。
install.force_efi
定義:即使未偵測到 EFI 也強制 EFI 安裝的設定。
預設值:false
install.force_mbr
定義:在 BIOS 系統上強制使用 MBR 分割的設定。
Harvester 在 UEFI 和 BIOS 系統上預設使用 GPT 分割。相容性問題可能需要您改用 MBR 分割。
如果您為 install.device 和 install.data_disk 指定相同的儲存裝置,Harvester 會建立一個額外的分割區來儲存 VM 資料。當您強制使用 MBR 分割時,不會建立此額外分割區。相反,VM 資料儲存在儲存作業系統資料的分割區中。
範例:
install:
force_mbr: true
install.harvester.longhorn.default_settings.guaranteedInstanceManagerCPU
版本:v1.4.0 及更高版本
定義:每個節點上總可分配 CPU 的百分比,保留給每個 Longhorn Instance Manager pod。
建議使用預設值以獲得高系統可用性。部署單節點 Harvester 叢集時,您可以指定小於 12 的值。
有關如何設定正確值的更多資訊,請參閱 Longhorn 文件中的 Guaranteed Instance Manager CPU。
預設值:12
支援的值:0 到 12。所有其他值都視為 12。
範例:
harvester:
longhorn:
default_settings:
guaranteedInstanceManagerCPU: 6
install.harvester.storage_class.replica_count
版本:v1.1.2 及更高版本
定義:預設 Harvester StorageClass harvester-longhorn 的副本數。
建議使用預設值以獲得高儲存可用性。部署單節點 Harvester 叢集時,您必須將值設為 1。
有關更多資訊,請參閱 Longhorn 文件中的 Default Replica Count。
預設值:3
支援的值:1 到 3。所有其他值都視為 3。
範例:
install:
harvester:
storage_class:
replica_count: 1
install.iso_url
定義:從核心或 vmlinuz 開機時,要下載並用於安裝 Harvester 的 ISO 映像的 URL。
install.management_interface
定義:主機機器的網路介面。
Harvester 使用 systemd 網路命名方案。在安裝前請確保介面名稱存在於目標機器上。
欄位:
method:用於為網路分配 IP 的方法。支援的值:dhcp:Harvester 從 DHCP 伺服器請求 IP。static:手動分配 IP 和閘道位址。
ip:分配給網路的靜態 IP。當method的值為static時,此欄位為必填。subnet_mask:網路的子網路遮罩。當method的值為static時,此欄位為必填。gateway:分配給網路的閘道位址。當method的值為static時,此欄位為必填。interfaces:網路介面陣列。安裝程式將指定的介面(從屬介面)組合成單一邏輯綁定介面。interfaces.name:從屬介面的名稱。interfaces.hwAddr:從屬介面的硬體 MAC 位址。此欄位為選填。
bond_options:綁定介面的選項。未指定時,使用以下選項:mode:綁定模式。預設值為active-backup。miimon:MII 連結監控頻率(毫秒)。預設值為100。
mtu:介面的最大傳輸單元(MTU)。預設值為1500。vlan_id:介面的 VLAN ID。預設值為0,表示介面處於未標記模式。