Automation Suite
2022.4
偽
- 概要
- 要件
- インストール
- インストール後
- クラスターの管理
- 監視とアラート機能
- 移行とアップグレード
- 製品固有の設定
- ベストプラクティスとメンテナンス
- トラブルシューティング
- インストール時にサービスをトラブルシューティングする方法
- クラスターをアンインストールする方法
- オフライン成果物をクリーンアップしてディスク領域を改善する方法
- Redis データをクリアする方法
- Istio ログを有効化する方法
- ログを手動でクリーンアップする方法
- sf-logs バンドルに保存されている古いログをクリーンアップする方法
- AI Center のストリーミング ログを無効化する方法
- 失敗した Automation Suite インストールをデバッグする方法
- アップグレード後に古いインストーラーからイメージを削除する方法
- Longhorn スナップショットを自動的にクリーンアップする方法
- NIC チェックサムオフロードを無効にする方法
- RHEL 8.4 OS でオフライン インストールを実行できない
- バンドルのダウンロード中のエラー
- バイナリがないため、オフライン インストールが失敗する
- オフライン インストールでの証明書の問題
- Longhorn のセットアップ中に最初のインストールが失敗する
- SQL 接続文字列の検証エラー
- selinux iscsid モジュールの前提条件の確認が失敗する
- Azure ディスクが SSD としてマークされない
- 証明書の更新後のエラー
- OS のアップグレード後に Automation Suite が動作しない
- Automation Suite で Backlog_wait_time を 1 に設定する必要がある
- ワークロードの準備ができていないためボリュームをマウントできない
- インストールおよびアップグレード中に RKE2 が失敗する
- 管理ポータルのタイムアウト期間を設定する
- 基になるディレクトリ接続を更新する
- 移行後にログインできない
- Kinit: Cannot Find KDC for Realm <AD Domain> While Getting Initial Credentials
- kinit: Keytab contains no suitable keys for *** while getting initial credentials
- GSSAPI operation failed with error: An invalid status code was supplied (Client's credentials have been revoked).
- Alarm received for failed kerberos-tgt-update job
- SSPI Provider: Server not found in Kerberos database
- Login Failed for User <ADDOMAIN><aduser>.Reason: The Account Is Disabled.
- ArgoCD へのログインに失敗した
- サンドボックス イメージを取得できない
- ポッドが ArgoCD UI に表示されない
- Redis プローブの障害
- RKE2 サーバーの起動に失敗する
- UiPath 名前空間でシークレットが見つからない
- 初期インストール後、ArgoCD アプリが Progressing ステートになる
- MongoDB ポッドが CrashLoopBackOff になるか、削除後に PVC プロビジョニングの保留中になる
- Unexpected inconsistency; run fsck manually
- クラスターの復元後に MongoDB またはビジネス アプリケーションの機能が低下する
- self-heal-operator および sf-k8-utils リポジトリが見つからない
- クラスターの復元またはロールバック後にサービスが異常になる
- RabbitMQ ポッドが CrashLoopBackOff でスタックする
- Prometheus が CrashloopBackoff ステートでメモリ不足 (OOM) エラーを伴う
- 監視ダッシュボードに Ceph-rook メトリックが表示されない
- Automation Suite 診断ツールを使用する
- Automation Suite サポート バンドル ツールを使用する
- ログを確認する
Longhorn スナップショットを自動的にクリーンアップする方法
Automation Suite インストール ガイド
最終更新日 2024年4月24日
Longhorn スナップショットを自動的にクリーンアップする方法
スナップショットを自動的にクリーンアップするには、次のファイルを使用して cronjob を作成する必要があります。 cronjob を作成するには、
kubectl apply -f snapshot-cleanup.yaml
を実行します。 必要に応じて、 schedule
パラメーターを変更できます。 デフォルトでは、この cronjob は 10 日より古いスナップショットを削除します。 この期間は、 days
変数を更新することで短縮できます。
apiVersion: batch/v1
kind: CronJob
metadata:
annotations:
labels:
job: uipath-snapshot-cleanup
name: lh-snapshot-cleanup
namespace: longhorn-system
spec:
concurrencyPolicy: Forbid
failedJobsHistoryLimit: 1
jobTemplate:
spec:
backoffLimit: 3
template:
metadata:
labels:
job: uipath-snapshot-cleanup
name: uipath-snapshot-cleanup
spec:
containers:
- command:
- sh
args:
- -ec
- |
url=$(kubectl get svc -n longhorn-system longhorn-backend -o json | jq -r '.spec | (.clusterIP|tostring) + ":" + (.ports[0].port|tostring)')
days=10
[[ -z "$url" ]] && echo "Missing longhorn URL" && exit 1
curl -s --connect-timeout 30 ${url}/v1 >> /dev/null || { echo "Unable to connect to longhorn backend"; exit 1; }
echo "Deleting snapshots older than $days days"
vols=$( (curl -s -X GET ${url}/v1/volumes |jq -r '.data[].name') )
function delete_snapshot() {
local vol=$1
local snap=$2
[[ -z "$vol" || -z "$snap" ]] && echo "Error: delete_snapshot: Empty argument" && return 1
curl -s -X POST ${url}/v1/volumes/${vol}?action=snapshotDelete -d '{"name": "'$snap'"}'
echo "Snapshot=$snap deleted for volume=$vol"
}
function cleanup_volume() {
local vol=$1
local deleted_snap=0
[[ -z "$vol" ]] && echo "Error: cleanup_volume: Empty argument" && return 1
# fetch list of snapshot
snaps=$( (curl -s -X POST ${url}/v1/volumes/${vol}?action=snapshotList | jq -r '.data[] | select(.usercreated==true) | .name' ) )
for i in ${snaps[@]}; do
if [[ $i == "volume-head" ]]; then
continue
fi
snapTime=$(curl -s -X POST ${url}/v1/volumes/${vol}?action=snapshotGet -d '{"name":"'$i'"}' |jq -r '.created')
currentTime=$(date "+%s")
timeDiff=$(($currentTime - ($(date -d $snapTime "+%s")) / 86400))
if [[ $timeDiff -lt $days ]]; then
echo "Ignoring snapshot $i, since it is older than $timeDiff days"
continue
fi
delete_snapshot $vol $i
deleted_snap=$((deleted_snap+1))
done
if [[ "$deleted_snap" -gt 0 ]]; then
curl -s -X POST ${url}/v1/volumes/${vol}?action=snapshotPurge >> /dev/null
fi
}
for i in ${vols[@]}; do
cleanup_volume $i
done
exit 0
env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
image: uipath/sf-k8-utils-rhel:0.9
imagePullPolicy: IfNotPresent
name: uipath-snapshot-cleanup
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
priorityClassName: system-cluster-critical
restartPolicy: OnFailure
schedulerName: default-scheduler
securityContext: {}
serviceAccount: longhorn-service-account
serviceAccountName: longhorn-service-account
terminationGracePeriodSeconds: 30
tolerations:
- effect: NoSchedule
key: kubernetes.io/hostname
operator: Equal
value: server0
schedule: '0 11 * * *'
successfulJobsHistoryLimit: 1
suspend: false
apiVersion: batch/v1
kind: CronJob
metadata:
annotations:
labels:
job: uipath-snapshot-cleanup
name: lh-snapshot-cleanup
namespace: longhorn-system
spec:
concurrencyPolicy: Forbid
failedJobsHistoryLimit: 1
jobTemplate:
spec:
backoffLimit: 3
template:
metadata:
labels:
job: uipath-snapshot-cleanup
name: uipath-snapshot-cleanup
spec:
containers:
- command:
- sh
args:
- -ec
- |
url=$(kubectl get svc -n longhorn-system longhorn-backend -o json | jq -r '.spec | (.clusterIP|tostring) + ":" + (.ports[0].port|tostring)')
days=10
[[ -z "$url" ]] && echo "Missing longhorn URL" && exit 1
curl -s --connect-timeout 30 ${url}/v1 >> /dev/null || { echo "Unable to connect to longhorn backend"; exit 1; }
echo "Deleting snapshots older than $days days"
vols=$( (curl -s -X GET ${url}/v1/volumes |jq -r '.data[].name') )
function delete_snapshot() {
local vol=$1
local snap=$2
[[ -z "$vol" || -z "$snap" ]] && echo "Error: delete_snapshot: Empty argument" && return 1
curl -s -X POST ${url}/v1/volumes/${vol}?action=snapshotDelete -d '{"name": "'$snap'"}'
echo "Snapshot=$snap deleted for volume=$vol"
}
function cleanup_volume() {
local vol=$1
local deleted_snap=0
[[ -z "$vol" ]] && echo "Error: cleanup_volume: Empty argument" && return 1
# fetch list of snapshot
snaps=$( (curl -s -X POST ${url}/v1/volumes/${vol}?action=snapshotList | jq -r '.data[] | select(.usercreated==true) | .name' ) )
for i in ${snaps[@]}; do
if [[ $i == "volume-head" ]]; then
continue
fi
snapTime=$(curl -s -X POST ${url}/v1/volumes/${vol}?action=snapshotGet -d '{"name":"'$i'"}' |jq -r '.created')
currentTime=$(date "+%s")
timeDiff=$(($currentTime - ($(date -d $snapTime "+%s")) / 86400))
if [[ $timeDiff -lt $days ]]; then
echo "Ignoring snapshot $i, since it is older than $timeDiff days"
continue
fi
delete_snapshot $vol $i
deleted_snap=$((deleted_snap+1))
done
if [[ "$deleted_snap" -gt 0 ]]; then
curl -s -X POST ${url}/v1/volumes/${vol}?action=snapshotPurge >> /dev/null
fi
}
for i in ${vols[@]}; do
cleanup_volume $i
done
exit 0
env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
image: uipath/sf-k8-utils-rhel:0.9
imagePullPolicy: IfNotPresent
name: uipath-snapshot-cleanup
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
priorityClassName: system-cluster-critical
restartPolicy: OnFailure
schedulerName: default-scheduler
securityContext: {}
serviceAccount: longhorn-service-account
serviceAccountName: longhorn-service-account
terminationGracePeriodSeconds: 30
tolerations:
- effect: NoSchedule
key: kubernetes.io/hostname
operator: Equal
value: server0
schedule: '0 11 * * *'
successfulJobsHistoryLimit: 1
suspend: false