管理 Kubernetes 上的臨時儲存
Kubernetes Pod 需要臨時 (暫時) 本機儲存體。
Kubernetes Pod 使用臨時儲存空間、快取和日誌。此儲存是暫時儲存的,專屬於 Pod 的生命週期。Pod 不會共用臨時儲存,而且會在 Pod 刪除時離開。
如需有關 Kubernetes 臨時儲存的更多一般資訊,請參閱 Kubernetes 文件中的本機臨時儲存。
下列步驟適用於 Oracle Kubernetes 引擎,但概念在其他 Kubernetes 環境中類似。
在節點集區中,節點會使用其開機磁碟區作為 Pod 儲存體。由於映像檔儲存在 /var
目錄中,因此大部分的臨時儲存體會被根分割區中的映像檔佔用。開機磁碟區所需的空間會在您每次安裝 Oracle Blockchain Platform Enterprise Edition 執行處理並在該節點上建立鏈碼時增加。
您可以使用下列 kubelet API 呼叫來檢查臨時儲存總計,以及指定節點中指派給每個 Pod 的數量:
kubectl get --raw "/api/v1/nodes/<node IP>/proxy/stats/summary"
JSON 結果的 rootfs
和 fs
區段會顯示容量和可用的位元組。
您可以在節點執行時調整開機磁碟區的大小,以更新臨時儲存的數量。如需詳細資訊,請參閱 Oracle Kubernetes Engine 的更新節點集區。
完成下列步驟,以重新調整 Oracle Kubernetes 引擎叢集上與執行中節點的臨時儲存大小。
- 在 Oracle Kubernetes 引擎叢集的資源底下,選取節點集區。
- 按一下編輯。在編輯節點集區頁面中,選取指定自訂開機磁碟區大小,然後以 GB 輸入開機磁碟區大小值。任何已建立的節點都將使用此值作為臨時儲存。
- 針對節點集區中的每個工作節點,完成下列步驟以調整開機磁碟區的大小。
- 按一下節點旁的向下箭號,即可查看節點的詳細資訊。
- 瀏覽至節點的開機磁碟區,然後按一下編輯。
- 在磁碟區大小和效能底下的編輯磁碟區頁面中,以 GB 為單位指定磁碟區大小值,然後按一下儲存變更。
- 請完成下列步驟以設定堡壘主機階段作業,然後使用它連線至專用工作節點。
- 在執行處理詳細資訊頁面上,按一下 Oracle Cloud 代理程式頁籤,然後啟用堡壘主機 Plugin。
- 在搜尋列中搜尋堡壘主機,然後按一下結果中「服務」底下的堡壘主機識別與安全。
- 按一下建立堡壘主機。
- 在建立堡壘主機頁面上,針對目標虛擬雲端網路 (VCN) 指定 Oracle Kubernetes 引擎 VCN,後面接著叢集名稱。若為目標子網路,請指定 Kubernetes API 端點。針對 CIDR 區塊允許清單,輸入 0.0.0.0/0 ,然後按一下建立堡壘主機。
- 按一下堡壘主機以開啟它,然後按一下建立階段作業。
- 輸入 opc 作為使用者名稱值,然後從運算執行處理清單中選取您的節點。
- 請將您的 SSH 金鑰貼到新增 SSH 金鑰底下。
- 按一下顯示進階選項,然後從目標運算執行處理 IP 位址清單中選取節點或執行處理的 IP 位址。這是節點或執行處理的專用 IPv4 位址,可在執行處理的資訊區段中使用。
- 按一下建立階段作業 (Create session) 。
- 從階段作業的相關內容功能表中,按一下複製 SSH 命令。
- 您現在可以使用 SSH 命令中的 -i 參數提供私密金鑰,透過 SSH 登入節點。
- 請針對叢集中的每個工作節點,重複先前的步驟。
- 針對每個節點,透過 SSH 登入節點,然後執行下列命令 (掃描新增到執行處理或節點的新區塊儲存裝置),然後在儲存可用時展開檔案系統。
sudo dd iflag=direct if=/dev/oracleoci/oraclevda of=/dev/null count=1 echo "1" | sudo tee /sys/class/block/`readlink /dev/oracleoci/oraclevda | cut -d'/' -f 2`/device/rescan sudo /usr/libexec/oci-growfs -y
決定暫時儲存用量
您可以執行下列命令檔,查看在 Oracle Kubernetes 引擎上執行之執行處理的暫時儲存用量。此命令檔使用 Kubernetes API 擷取叢集中每個節點上執行之每個 Pod 的暫時儲存用量。
#!/usr/bin/env bash
kubectl proxy --append-server-path &
set -eo pipefail
{
echo "NODE NAMESPACE POD EPHEMRAL_USED"
for node in $(kubectl get nodes -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'); do
curl -fsSL "http://127.0.0.1:8001/api/v1/nodes/$node/proxy/stats/summary" |
yq '.pods[] | [.podRef.namespace, .podRef.name, .ephemeral-storage.usedBytes] | join(" ")' |
while read -r namespace name usedBytes; do
# A pod might have no running containers and consequently no ephemeral-storage usage.
echo "$node" "$namespace" "$name" "$(numfmt --to iec "${usedBytes:-0}")"
done
done | sort -k4,4rh
} | column -t