Node 和 Nodearray 物件
Node 和 nodearray 物件是排名 2,且從屬至 cluster
。 節點代表單一虛擬機,而 nodearray 可以代表虛擬機的集合,或至少一個虛擬機擴展集。
節點預設值
[[node defaults]]
是一個特殊的抽象節點,指定叢集中所有節點和 nodearray 的預設設定:
[cluster my-cluster]
[[node defaults]]
Credentials = $Credentials
SubnetId = my-rg/my-vnet/my-subnet
MachineType = Standard_D2s_v3
[[nodearray grid]]
ImageName = cycle.image.centos6
MachineType = Standard_H16
$Credentials
是名為 「Credentials」 的參數參考。
在 my-cluster
中,grid
nodearray 會從節點 defaults
繼承 credential 和 SubnetId,但會使用特定的 HPC VM 大小 Standard_H16
。
例
此範例範本會建立具有兩個節點和 nodearray 的叢集。 Proxy 節點會使用 IsReturnProxy
來定義 ReturnProxy
的特殊角色,這會是叢集啟動時來自 CycleCloud 之反向通道 Proxy 的端點。
[cluster my-cluster]
[[node defaults]]
Credentials = $Credentials
SubnetId = $SubnetId
KeyPairLocation = ~/.ssh/cyclecloud.pem
ImageName = cycle.image.centos7
[[node proxy]]
IsReturnProxy = true
MachineType = Standard_B2
[[node scheduler]]
MachineType = Standard_D4s_v3
[[nodearray execute]]
MachineType = Standard_D16s_v3
必要屬性參考
至少需要四個必要屬性,才能成功啟動節點:
屬性 | 類型 | 定義 |
---|---|---|
MachineType | 字串 | Azure VM 大小 |
SubnetId | 字串 | 表單中的子網定義 ${rg}/${vnet}/${subnet} |
憑據 | 字串 | 雲端提供者帳戶的名稱。 |
第四個必要屬性與影像相關。 需要影像屬性,但可以採取數種形式 - 請參閱影像屬性。
其他屬性
屬性 | 類型 | 定義 |
---|---|---|
ComputerName | 字串 | VM 的電腦名稱。 如果指定,則會覆寫系統產生的名稱。 |
ComputerNamePrefix | 字串 | 預先設置至系統產生計算機名稱的前置詞 |
區 | 字串(清單) | VM 或 VMSS 的可用性區域。 可以是 VMSS 的清單。 例如 Zone = 1,3 |
KeyPairLocation | 整數 | CycleCloud 會在本機文件系統上找到 SSH 金鑰組的位置 |
KeepAlive | 布爾 | 如果為 true,CycleCloud 會防止此節點終止 |
櫃子 | 字串 | 指定要從中下載項目規格的保險箱名稱。 請參閱使用專案 |
屬性 | 類型 | 定義 |
---|---|---|
ComputerName | 字串 | VM 的電腦名稱。 如果指定,則會覆寫系統產生的名稱。 |
ComputerNamePrefix | 字串 | 預先設置至系統產生計算機名稱的前置詞 |
EphemeralOSDisk | 布爾 | 如果支援,請使用 VM 的暫時開機磁碟 |
區 | 字串(清單) | VM 或 VMSS 的可用性區域。 可以是 VMSS 的清單。 例如 Zone = 1,3 |
ProximityPlacementGroupId | 字串 | 要放入此節點之鄰近放置群組的完整標識符。 必須從 /subscriptions/ 開始 |
PlacementGroupId | 字串 | 如果設定,則會使用此標籤將此節點放在單一放置群組中,而其他所有節點都有 PlacementGroupId 的相符值。 這提供較低的延遲通訊,而且需要啟用支援 InfiniBand 的 VM 大小。 這通常會視需要由排程器設定,因此不需要手動指定。 |
KeyPairLocation | 整數 | CycleCloud 會在本機文件系統上找到 SSH 金鑰組的位置 |
KeepAlive | 布爾 | 如果為 true,CycleCloud 會防止此節點終止 |
櫃子 | 字串 | 指定要從中下載項目規格的保險箱名稱。 請參閱使用專案 |
BootDiagnosticsUri | 字串 | 開機診斷的記憶體 URI(例如:https://mystorageaccount.blob.core.windows.net/),如果指定的話。 將會套用記憶體費用。 |
HybridBenefit | 布爾 | 如果為 true,請啟用 Windows VM 的「Azure Hybrid Benefit」授權 |
EnableTerminateNotification (8.2.0+) | 布爾 | 如果為 true,請啟用 終止通知 將 VM 刪除時的事件傳送至 VM 以進行本機處理。 這隻適用於擴展集 VM。 |
TerminateNotificationTimeout (8.2.2+) | 相對時間 | 如果啟用終止通知,這會控制 VM 在刪除之前處理事件的時間長度。 |
ThrottleCapacity (8.2.2+) | 布爾 | 如果為 true,此 nodearray 會在遇到容量問題後,向自動調整程式回報 0 個容量,預設值為 5 分鐘 |
ThrottleCapacityTime (8.2.2+) | 相對時間 | 如果啟用 ThrottleCapacity ,這是在容量受限之後報告 0 可用性的時間長度。 預設值為 「5m」。。 |
HybridBenefitLicense (8.3.0+) | 字串 | 如果 HybridBenefit 為 true,這會指定要使用的授權:RHEL_BYOS 、SLES_BYOS 或 Windows_Server 。 預設值為 Windows_Server 。 |
FlexScaleSetId (8.3.0+) | 字串 | 如果設定,這是 Flex 協調流程模式中擴展集的完整標識碼, 用於此節點的 VM。 |
EncryptionAtHost (8.4.0+) | 布爾 | 如果為 true,則虛擬機將會啟用 主機加密。 |
SecurityType (8.5.0+) | 字串 | 設定 安全性類型;未定義、TrustedLaunch 或 ConfidentialVM |
EnableSecureBoot (8.5.0+) | 布爾 | 如果使用受信任的啟動 VM 或機密 VM,請啟用 安全開機。 |
EnableVTPM (8.5.0+) | 布爾 | 如果使用受信任的啟動 VM 或機密 VM,請啟用 虛擬信任平臺模組。 |
注意
鄰近放置群組是一般 Azure 功能,必須先建立一個,才能在節點上參考。
這可讓 CycleCloud VM 與該鄰近放置群組中的其他 Azure 資源共置,但不會啟用 InfiniBand 網路功能。
相反地,PlacementGroupId
是 CycleCloud 中的任意字串,用來將節點的 VM 分組成限制在相同網路交換器下的單一擴展集,但可能不會與其他 Azure 資源共置。
這兩者都可以一起使用,但這可能會減少可配置的 VM 數目。
影像屬性
VM 映像是啟動虛擬機的必要設定。 映射定義有三種有效形式:預設 CycleCloud 映射名稱、Marketplace 映射定義和映像標識符。
ImageName
CycleCloud 支援一些可供不同 OS 類別使用的預設 Marketplace 映射。 這些可以使用 ImageName
來指定。
屬性 | 類型 | 定義 |
---|---|---|
ImageName | 字串 | 週期支援的映像名稱。 cycle.image。[win2016, win2012, centos7, centos6, ubuntu16, ubuntu14] |
Marketplace 映射
除了迴圈管理的 Marketplace 映射,任何市集映射都可以藉由指定 Publisher
、Offer
、Sku
和 ImageVersion
來使用。
屬性 | 類型 | 定義 |
---|---|---|
Azure.Publisher | 字串 | VM Marketplace 映射的發行者 |
Azure.Offer | 字串 | VM Marketplace 映射的供應專案 |
Azure.Sku | 字串 | VM Marketplace 映射的 SKU |
Azure.ImageVersion | 字串 | Marketplace 映射的映射版本。 |
注意
Marketplace 映射也可以在 ImageName
屬性中指定,編碼為格式為 URN Publisher:Offer:Sku:ImageVersion
。
具有自訂定價方案的映像
附加定價方案的共用映射庫映射需要使用方案的相關信息,除非該資訊儲存在共用映像庫映射中。 使用 Publisher、Product 和 Plan 巢狀屬性,使用 ImagePlan
屬性來指定。
注意
搭配定價方案使用自定義映像需要 CycleCloud 8.0.2 或更新版本。
ImageId
或者,也可以使用認證訂用帳戶中 VM 映像的資源識別碼:
屬性 | 類型 | 定義 |
---|---|---|
ImageId | 字串 | VM 映像的資源標識碼 |
影像屬性
ImageIds 所定義的 Marketplace 映射和映射需要一些額外的設定,才能正確設定 CycleCloud OS 擴充功能:
屬性 | 類型 | 定義 |
---|---|---|
DownloadJetpack | 布爾 | 如果為 false,CycleCloud 將不會從記憶體帳戶下載 Jetpack。 Jetpack 必須已安裝。 注意:僅支援Linux節點。 默認值為 true。 已在8.4.1中新增。 |
InstallJetpack | 布爾 | 如果為 false,CycleCloud 將不會在新 VM 上安裝 Jetpack。 默認值為 true。 |
AwaitInstallation | 布爾 | 如果為 false,CycleCloud 將不會等候 Jetpack 在建立 VM 時報告安裝詳細數據。 默認值為 true。 |
JetpackPlatform | 字串 | Jetpack 安裝程式平臺使用:centos-7 、centos-6 、ubuntu-14.04 、ubuntu-16.04 、windows 。 7.7.0 中已被取代。 |
警告
不建議設定 InstallJetpack
或 AwaitInstallation
。 此外,設定 DownloadJetpack
需要具有正確 Jetpack 安裝的自定義映像,而且僅適用於從記憶體帳戶下載時發生問題的環境。
注意
如果單一節點定義中包含多個映像定義,則預設會使用 ImageId
。
替代影像範例
以下是使用節點的三個替代映像建構的範例範本:
[cluster image-example]
[[node defaults]]
Credentials = $Credentials
MachineType = Standard_D2_v3
SubnetId = my-rg/my-vnet/my-subnet
[[node cycle-image]]
ImageName = cycle.image.ubuntu16
[[node my-custom-vm-image]]
ImageId = /subscriptions/9B16BFF1-879F-4DB3-A55E-8F8AC1E6D461/resourceGroups/my-rg/providers/Microsoft.Compute/images/jetpack-rhel7-1b1e3e93
# Jetpack already installed on image
DownloadJetpack = false
[[node marketplace-vm-image]]
Azure.Publisher = Canonical
Azure.Offer = UbuntuServer
Azure.Sku = 16.04-LTS
Azure.ImageVersion = latest
[[node custom-marketplace-vm-image]]
ImageName = /subscriptions/9B16BFF1-879F-4DB3-A55E-8F8AC1E6D461/resourceGroups/my-rg/providers/Microsoft.Compute/images/jetpack-rhel8-1b1e3e93
ImagePlan.Name = rhel-lvm8
ImagePlan.Publisher = redhat
ImagePlan.Product = rhel-byos
進階網路屬性
屬性 | 類型 | 定義 |
---|---|---|
IsReturnProxy | 布爾 | 建立此節點的反向通道 Proxy。 每個叢集只能有一個節點,此設定為 true。 |
ReturnPath.Hostname | 主機名 | 節點可連線到 CycleCloud 的主機名。 |
ReturnPath.WebserverPort | 整數 | 節點可連線到 CycleCloud 的 Web 伺服器埠。 |
ReturnPath.BrokerPort | 整數 | 節點可連線到 CycleCloud 的訊息代理程式。 |
標籤
CycleCloud 支援標記 VM 和 VMSS。
屬性 | 字串 | 定義 |
---|---|---|
標籤 | 字串 | 除了 CycleCloud 預設指派的標籤之外,請使用 tags.my-tag = my-tag-value 將標籤新增至部署。 |
一般/現成屬性
CycleCloud 支援透過下列屬性使用 Spot VM。 如需詳細資訊,請參閱 現成虛擬機。
屬性 | 字串 | 定義 |
---|---|---|
可中斷 | 布爾 | 如果為 true,VM 將會是 Spot VM,以提供較低的定價。 |
MaxPrice | 浮 | 要花費在 VM 上的最高價格。 (預設值:-1) |
Nodearray-Specific 屬性
節點的所有屬性都對 nodearray 有效,但節點陣列是彈性資源,因此可以使用其他屬性。 Nodearray 是 Azure VirtualMachine ScaleSets (VMSS) 的驅動程式,而且可以有許多支援 VMSS。
屬性 | 字串 | 定義 |
---|---|---|
Azure.AllocationMethod | 字串 | 將此設定為 StandAlone 來管理單一 VM,或保留未定義以使用 VMSS。 |
Azure.SingleScaleset | 布爾 | 針對所有節點使用單一 VMSS (預設值:false)。 |
Azure.SinglePlacementGroup | 布爾 | 使用 VMSS 的單一放置群組設定。 (預設值:false) |
Azure.Overprovision | 布爾 | 使用 VMSS 的過度布建功能。 Cyclecloud 會根據案例動態設定。 這是覆寫。 |
Azure.MaxScaleSetSize | 整數 | 限制單一 VMSS 中的 VM 數目。 達到此最大值之後,CycleCloud 會將額外的 VMSS 新增至叢集。 (預設值: '40') |
InitialCount | 整數 | 叢集啟動時要啟動的節點數目。 |
MaxCount | 整數 | 為了確保叢集永遠不會超過10個節點,您會指定10個值。 請注意,MaxCount和 MaxCoreCount 可以一起使用,在此情況下,較低的有效條件約束將會生效。 |
InitialCoreCount | 整數 | 叢集啟動時要啟動的核心數目。 |
MaxCoreCount | 整數 | 為了確保叢集永遠不會超過 100 個核心,您會指定 100 個值。 請注意,MaxCount和 MaxCoreCount 可以一起使用,在此情況下,較低的有效條件約束將會生效。 |
ShutdownPolicy | 字串 | 指出當節點關閉時,VM 該怎麼做。 如果 「終止」,當節點關閉時,就會刪除 VM。 如果為 「解除分配」,則會改為停止節點。 (預設值:終止) |
屬性 | 字串 | 定義 |
---|---|---|
Azure.AllocationMethod | 字串 | 將此設定為 StandAlone 來管理單一 VM,或保留未定義以使用 VMSS。 |
Azure.SingleScaleset | 布爾 | 針對所有節點使用單一 VMSS (預設值:false)。 |
Azure.SinglePlacementGroup | 布爾 | 使用 VMSS 的單一放置群組設定。 (預設值:false) |
Azure.Overprovision | 布爾 | 使用 VMSS 的過度布建功能。 Cyclecloud 會根據案例動態設定。 這是覆寫。 |
Azure.MaxScaleSetSize | 整數 | 限制單一 VMSS 中的 VM 數目。 達到此最大值之後,CycleCloud 會將額外的 VMSS 新增至叢集。 (預設值: '40') |
InitialCount | 整數 | 叢集啟動時要啟動的節點數目。 |
MaxCount | 整數 | 為了確保叢集永遠不會超過10個節點,您會指定10個值。 請注意,MaxCount和 MaxCoreCount 可以一起使用,在此情況下,較低的有效條件約束將會生效。 |
InitialCoreCount | 整數 | 叢集啟動時要啟動的核心數目。 |
MaxCoreCount | 整數 | 為了確保叢集永遠不會超過 100 個核心,您會指定 100 個值。 請注意,MaxCount和 MaxCoreCount 可以一起使用,在此情況下,較低的有效條件約束將會生效。 |
ShutdownPolicy | 字串 | 指出當節點關閉時,VM 該怎麼做。 如果 「終止」,當節點關閉時,就會刪除 VM。 如果為 「解除分配」,則會改為停止節點。 (預設值:終止) |
ThrottleCapacity | 布爾 | 是否要在收到 Insufficient Capacity 訊號時暫停對 Azure 的要求。 (預設值:false) |
ThrottleCapacityTime | 相對時間 | 從 Azure 接收 Insufficient Capacity 訊號之後的輪詢時間。 在此期間,AvailableCount 會回報為零。 (預設值: '5m') |
注意
所有 VMSS 都會指派 FaultDomainCount = 1
遺產
與緊密相關的節點和 nodearray 可以衍生自相同叢集範本中的其他節點。
這些繼承的定義會將共用通用屬性所需的宣告降到最低。 常用的是 [[node defaults]]
區段,這是一個特殊的抽象定義,適用於叢集中的所有節點和 nodearray。
屬性 | 字串 | 定義 |
---|---|---|
抽象 | 布爾 | 如果為 true,請勿在叢集中建立節點或 nodearray。 抽象可以用於繼承。 (預設值:false) |
延伸 | 字串(清單) | 已排序的繼承節點/nodearray 名稱清單。 稍後清單中的專案在值衝突時優先。 'defaults' 節點一律會有效成為清單中的第一個節點。 (預設值: []) |
從屬物件
節點/nodearray 物件具有 磁碟區、網路介面、cluster-init、輸入端點,以及 設定 作為次級物件。