預計完成時間:3 小時
可操作元件擁有者:OLT/節點
技能設定檔:部署工程師
啟動程序機器是安裝在 Google Distributed Cloud (GDC) 氣隙單元中的第一個伺服器資訊系統 (IS),用於啟動其餘 Distributed Cloud 資訊系統。預檢完成後,機器會重新映像為工作站叢集節點。
在第三個機架中使用第一個標準伺服器做為啟動程序。舉例來說,在實驗室驗證中,我們使用 xx-ac-bm15,這是第三個機架 ac 上最頂端的伺服器,且資產標記中沒有 base。雖然啟動程序可使用機架中的任何機器,因為啟動程序沒有特定需求,但我們會為此目的標準化特定機器。不過,前 3 個機架中,名稱含有 base 的伺服器不應使用,因為這些伺服器用於根管理員和作業叢集。
9.1. 安裝作業系統
透過螢幕和鍵盤連線至啟動程式電腦。
在 iLO 專用網路埠中設定 IP。使用管理 IP 範圍內的位址,最後八位元為 160。
將工作站 IP 設為同一子網路上的任何其他位址,並暫時透過乙太網路交叉線連接至後方乙太網路連接埠。
9.1.1.透過工作站和本機 ISO 檔案安裝
從離線工作站瀏覽器連線至啟動程式機器的 iLO 控制台,然後前往導覽樹狀結構中的「Remote Console & Media」(遠端控制台和媒體) 選單。請勿透過 USB iLO 使用遠端媒體。
按一下「Virtual Media」,然後在「Connect CD/DVD-ROM」中指定虛擬媒體網址。
選用:選取「下次重設時啟動」。選取「Boot on Next reset」後,伺服器只會在下次重新啟動時,使用這個映像檔開機。伺服器第二次重新啟動時,系統會自動退出映像檔,避免伺服器重複啟動這個映像檔。如果未勾選這個核取方塊,系統會保留圖片的連線,直到手動退出為止。
按一下「插入媒體」進行驗證。
如要讓啟動程序機器從
.iso映像檔啟動,請重設機器:- 在 iLO 控制台中,按一下「Power & Thermal - Server Power」(電源與散熱 - 伺服器電源)。
- 按一下「重設」。您可以開啟虛擬控制台,監控機器的重設作業和
.iso檔案開機程序。
啟動程序完成後,請指定登入名稱和密碼,連線至啟動程序機器 (根帳戶)。啟動程序會使用 Google 建構的 ISO 檔案啟動,因此 Google 會指定預設的根密碼。
身為操作人員,您可以存取密碼,並視需要建立其他使用者。
開機程式 ISO 檔案已包含所有必要工具,例如 docker 和 kubectl,因此您不需要另外安裝這些工具。
9.1.2.透過燒錄至 USB 隨身碟的 ISO 安裝
9.1.2.1. 將 ISO 燒錄到 USB 隨身碟
- 系統控制器使用 rocky 映像檔,因此您可以使用 dd 指令或「Disks」使用者介面 (UI)。
透過「磁碟」使用者介面:
- 插入隨身碟。
- 按一下導覽選單中的「隨身碟」,然後按一下選單列中的漢堡選單。按一下「Restore Disk Image」,然後指向下載的開機程式 ISO。

使用 dd:
如要判斷哪個磁碟是 USB 隨身碟,請執行:
sudo fdisk -l使用「磁碟大小」判斷裝置是否為 USB。請記下裝置名稱,以便在後續步驟中使用。
依上一個步驟提供的裝置名稱掛接磁碟:
sudo umount <device name>格式化硬碟:
sudo mkfs.vfat <device name>將 ISO 複製到磁碟機:
sudo dd bs=4M if=<path to ISO file> of=<device name> status=progress
9.1.2.2. 使用 USB 開機磁碟開機
- 將 USB 隨身碟插入正面 USB 連接埠 (不是標示為 iLOiLO 的連接埠)。
- 在 iLO 介面中,選取電源按鈕上的「Momentary Press」(短暫按壓)。等待虛擬按鈕變為黃色,表示裝置已關機。
- 依序選取「管理」和「開機順序」。
- 在「One-Time Boot Status」部分中,選取「Select One-Time Boot」,然後選取「USB drive」。
- 在 iLO 介面中選取電源按鈕上的「瞬間按壓」,確認虛擬按鈕變成綠色。系統會自動安裝 OS 並重新啟動。主控台顯示
bootstrapper login提示後,表示啟動程序安裝完成。 - 移除 USB 隨身碟。
9.1.3. 安裝稽核記錄
如要手動安裝及啟用啟動程式稽核記錄,請按照下列步驟操作:
將下列程式碼區塊複製到
/etc/bash.bootstrapper_audit.sh的新檔案中function log_previous_cmd() { rc=$? ; [[ "$rc" -eq 130 ]] && return line="rc=${rc};;pwd=$(pwd);;ppid=${PPID}" line="${line};;started=$(history 1|awk 'NR==1{$0=gensub(/^.{0,7}([^ ]*) /,"\\1;;cmd=","g",$0)}1')" logger --priority local6.info --id="$$" "${line}" } export PROMPT_COMMAND='log_previous_cmd' export HISTTIMEFORMAT='%G-%m-%dT%T '在
/etc/bash.bashrc結尾處附加這行程式碼[ -f /etc/bash.bootstrapper_audit.sh ] && . /etc/bash.bootstrapper_audit.sh儲存這些變更後,所有新殼層都會將稽核記錄項目記錄到系統日誌。
(選用) 確認稽核記錄功能正常運作
如要確認稽核記錄是否順利記錄,請執行下列指令,並驗證是否發出類似的輸出內容:
USER@bootstrapper:~$ echo 'a command' USER@bootstrapper:~$ sudo journalctl -eo short-iso -p info SYSLOG_FACILITY=22 2024-10-12T00:30:24+0000 bootstrapper USER[96558]: rc=0;;pwd=/root;;ppid=96479;;started=2024-10-12T00:30:24;;cmd=date 2024-10-12T00:30:47+0000 bootstrapper USER[96558]: rc=0;;pwd=/root;;ppid=96479;;started=2024-10-12T00:30:47;;cmd=echo 'a command'(選用) 停用稽核記錄
萬一懷疑稽核記錄可能會影響其他啟動程序作業,您可以在目前的殼層中快速停用這項功能:
USER@bootstrapper:~$ unset PROMPT_COMMAND確認稽核記錄不會影響任何項目後,請在目前的殼層中重新啟用,方法是輸入:
source /etc/bash.bashrc
9.2. 設定管理介面和路徑
本節將設定管理介面和啟動程序所需的路徑。
9.2.1. 找出管理 IP、CIDR 和閘道位址
在
cellcfg/serv-core.yaml檔案中找出啟動程式的管理 IP 位址:yq eval -r 'select(.metadata.annotations."system.private.gdc.goog/bootstrapper" == "true") | .spec.managementNetwork.ips[0]' PATH_TO_SERV_CORE_FILE將
PATH_TO_SERV_CORE_FILE替換為cellcfg/serv-core.yaml檔案的路徑。啟動程序會以
system.private.gdc.goog/bootstrapper: "true"註解識別。在範例中,spec.managementNetwork.ips[0]的管理 IP 位址為172.22.80.76:apiVersion: system.private.gdc.goog/v1alpha1 kind: Server metadata: annotations: lcm.private.gdc.goog/claim-by-force: "true" helm.sh/resource-policy: keep system.private.gdc.goog/bootstrapper: "true" creationTimestamp: null labels: system.private.gdc.goog/rack-name: mb-aa name: mb-aa-bm13 namespace: gpc-system spec: bmc: credentialsRef: name: bmc-credentials-mb-aa-bm13 namespace: gpc-system ip: 172.22.80.108 mac: 5c:ba:2c:42:a9:68 protocol: redfish redfish: systemPath: /redfish/v1/Systems/1 dataplaneNetwork: {} encryptDisk: true firmwareInstall: true secureErase: true luks: enable: false managementNetwork: ips: - 172.22.80.76 link: LOM1找出設定管理介面 IP 位址所需的 CIDR 位址範圍。這項功能適用於 CIQ 問卷調查。
CIQ 範例:
oobManagementCIDRs: - ipFamily: IPv4 ipv4: 172.23.16.0/24 - ipFamily: IPv4 ipv4: 172.23.17.0/24 - ipFamily: IPv4 ipv4: 172.23.18.0/24 - ipFamily: IPv4 ipv4: 172.23.19.0/24在本例中,CIDR 範圍
172.23.16.0/22涵蓋列出的所有管理 CIDR 位址。找出啟動程序在與管理網路通訊時使用的閘道位址。如果啟動程式位於
ac機架,請使用下列指令找出CIDRClaim資源的名稱:grep -A 10 -B 10 "ac-mgmtsw01-server-os-cidr" cellcfg/pnet-core.yaml`.輸出內容如下:
apiVersion: system.private.gdc.goog/v1alpha1 kind: CIDRClaim metadata: annotations: lcm.private.gdc.goog/claim-by-force: "true" labels: cidrclaims.system.private.gdc.goog/cidr-category: internal cidrclaims.system.private.gdc.goog/cidr-org: root cidrclaims.system.private.gdc.goog/node-type: leaf network.private.gdc.goog/mgmtnw-device-category: server-os network.private.gdc.goog/mgmtsw: ag-ac-mgmtsw01 name: ag-ac-mgmtsw01-server-os-cidr namespace: root spec: ipv4Spec: staticCidrBlocks: - 172.28.120.128/26 parentCidrClaimName: server-os-mgmt-network-cidr使用
ag-ac-mgmtsw01-server-os-cidr資源中ipv4Spec.staticCidrBlocks的CIDRClaim172.28.120.128/26,閘道位址是172.28.120.128/26中的第一個 IP 位址,也就是172.28.120.129。
9.2.2. 設定管理介面的 IP 位址
ip address add dev MGMT_INTERFACE MGMT_IP/MGMT_SUBNET_PREFIX
更改下列內容:
MGMT_INTERFACE:管理介面名稱範例為ens15f0。使用cellcfg/serv-core.yaml中的 MAC 位址,找出用於管理網路的介面。MGMT_IP:管理 IP 位址,請參閱「尋找管理 IP 和 CIDR」一節。- :管理 CIDR 子網路前置字元 (例如上例中的
172.23.16.0/22為22)。MGMT_SUBNET_PREFIX詳情請參閱「尋找管理 IP 和 CIDR」。
然後在啟動程式上執行指令碼。 這個指令碼會將 IP 位址指派給管理介面,並為管理 CIDR 範圍建立預設路徑。
9.2.3. 啟用管理介面
本節說明如何啟用管理介面。在 cellcfg/serv-core.yaml 中找出管理介面的 MAC 位址,並在啟動程式的 ip a 輸出內容中交叉參照這個 MAC 位址,即可識別管理介面。
在本範例中,管理介面值為 ens15f0。按照這些指示操作時,請使用自己的值。使用 cellcfg/serv-core.yaml 檔案中的管理 IP 位址新增 IP 位址:
apiVersion: system.private.gdc.goog/v1alpha1
kind: Server
metadata:
annotations:
lcm.private.gdc.goog/claim-by-force: "true"
helm.sh/resource-policy: keep
system.private.gdc.goog/bootstrapper: "true"
creationTimestamp: null
labels:
system.private.gdc.goog/rack-name: ma-ac
name: ma-ac-bm15
namespace: gpc-system
spec:
bmc:
credentialsRef:
name: bmc-credentials-ma-ac-bm15
namespace: gpc-system
ip: 172.29.8.208
mac: 5c:ba:2c:42:28:2e
protocol: redfish
redfish:
systemPath: /redfish/v1/Systems/1
dataplaneNetwork: {}
encryptDisk: true
firmwareInstall: true
secureErase: true
luks:
enable: false
managementNetwork:
ips:
- 172.29.24.147
link: LOM1
provider: external
serverHardware:
bmhNetworkRef:
name: ma-ac-bm15
dataplaneNICPorts:
- mac: 5c:ba:2c:61:83:90
name: s1p1
- mac: 5c:ba:2c:61:83:98
name: s1p2
machineClassName: o1-standard1-64-gdc-metal
managementNICPort:
mac: 98:f2:b3:28:0b:70
name: LOM1
portBond:
name: s1p1-s1p2
networkBondModeType: 802.3ad
nicPortNames:
- s1p1
- s1p2
status: {}
在這個 YAML 檔案範例中,管理 IP 位址為 172.29.24.147。前置字串長度為 /26,因為「尋找管理 IP、CIDR 和閘道位址」中的 CIDR 區塊為 /26。
將管理 IP 位址新增至管理介面:
sudo ip addr add 172.29.24.147/26 dev ens15f0,
接著,使用下列 ip 指令設定介面:
ip link set ens15f0 up
如要檢查介面設定是否成功,請使用 ip link show ens15f0:
ip link show ens15f0
輸出內容會類似如下,其中 UP 訊息表示成功:
6: ens15f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 98:f2:b3:28:0b:70 brd ff:ff:ff:ff:ff:ff
inet 172.29.24.147/26 brd 172.29.24.191 scope global ens15f0
valid_lft forever preferred_lft forever
inet6 fe80::9af2:b3ff:fe28:b70/64 scope link
valid_lft forever preferred_lft forever
9.2.4. 設定轉送設定
MGMT_GATEWAY=MGMT_GATEWAY
MGMT_CIDR=MGMT_CIDR
MGMT_INTERFACE=MGMT_INTERFACE
ip route add $MGMT_CIDR via $MGMT_GATEWAY dev $MGMT_INTERFACE proto static"
更改下列內容:
MGMT_GATEWAY:在「尋找管理 IP、CIDR 和閘道位址」一節中找到的閘道 IP 位址。MGMT_CIDR:管理 CIDR 來自 CIQ。請參閱「找出管理 IP、CIDR 和閘道位址」一節。MGMT_INTERFACE:管理介面名稱範例為ens15f0。您可以使用cellcfg/serv-core.yaml中的 MAC 位址,識別管理網路使用的介面。
然後在啟動程序上執行指令碼。
9.3. 設定啟動程式的時鐘
此時還沒有 NTP 伺服器。我們需要手動將啟動程式的時鐘設定為相當準確的時間 (與實際時間的誤差在 1 秒內),時區為世界標準時間。請務必使用「上午」或「下午」,除非你確定要使用 24 小時制。如果時鐘設定錯誤,後續階段將無法修正。
date --set "DATE_TIME_UTC"
將 DATE_TIME_UTC 替換為 UTC 的日期和時間,例如 2023-03-21 01:14:30 AM UTC。
9.4. 登入啟動程式伺服器
如果登出啟動程序伺服器,可以回到啟動程序電腦的實體位置,或使用系統控制器重新登入。
9.4.1. 登入實體電腦
從實體電腦登入啟動程序伺服器:
將鍵盤、滑鼠和螢幕連接至啟動程式電腦。
使用預設使用者名稱和密碼登入電腦。
9.4.2. 登入系統控制器
使用系統控制器登入啟動程式伺服器:
前往放置系統控制器的急救車。
執行下列指令:
ssh ubuntu@BOOTSTRAPPER_IP_ADDRESS將 BOOTSTRAPPER_IP_ADDRESS 替換為啟動程式伺服器的 IP 位址。
9.5. 檔案結構
後續所有作業都會以根使用者身分執行。以下是建議的目錄結構,但並非必要。
root
├── kubeconfigs/ - recommend creating this directory to keep track of the many kubeconfigs
└── .kube/config - location of bootstrap(KIND) cluster kubeconfig
└── full-release-y.y.y-gdch.yyy - Extraction of the gdch tar from step download-files
├── bootstrapper.iso
├── docs
├── examples
├── gdcloud
├── harbor
├── oci
└── operations_center
└── root-admin/root-admin-kubeconfig - where the root-admin kubeconfig will be put after root-admin creation
└── full-release-y.y.y-gdch.yyy-hotfix - if necessary, hotfixes will be extracted to another folder
├── README - explains how to apply the hotfix
├── oci - directory containing the hotfix
├── config - this is for the output of the "create configuration files" step
├── output/cellcfg - initial CRs applied to the bootstrap cluster
├── output/assets
├── devices.csv - HW file useful to have for debugging
├── cables.csv - HW file useful to have for debugging
├── ciq.yaml - HW file useful to have for debugging