管理 Kubernetes 上的臨時儲存
Kubernetes Pod 需要臨時 (暫時) 本機儲存體。
Kubernetes Pod 使用臨時儲存空間來清理空間、快取和日誌。此儲存體是暫時的,並且是 Pod 的週期專用。暫時儲存不會跨 Pod 共用,而會在 Pod 刪除時離開。
如需有關 Kubernetes 臨時儲存的一般資訊,請參閱 Kubernetes 文件中的本機臨時儲存。
下列步驟適用於 Oracle Kubernetes Engine,但概念在其他 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 引擎的更新節點集區。
完成下列步驟,以調整含有執行中節點之 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