CNE:環境ライセンスの確認とトラブルシューティング
DXP オペレーターは、環境の 自動ライセンス ステータスを、短い名前 lenv を持つ環境の LiferayEnvironment リソースに報告します。オペレーターはデフォルトで10分ごとにライセンスをチェックし、そのチェックはハートビートに相当する。 kubectlを使用してステータスを読み取り、 トラブルシューティング で各失敗条件を調べます。
以下の例では、名前空間 liferay と LiferayEnvironment 名前 liferay-default を使用しています。 liferay-default-activation などのシークレット名を含め、独自のものに置き換えてください。
ライセンスステータスの確認
2 つのコマンドでライセンスの状態が表示されます。 kubectl get lenv はそれを列に要約し、 kubectl describe lenv は各条件とその理由を一覧表示します。
柱と相
環境のライセンスステータスを確認するには、 kubectl get lenv を実行してください。
kubectl --namespace liferay get lenv
出力には以下の列が含まれます。
| 列 | 説明 |
|---|---|
WORKLOAD | 環境のステートフルセット |
ACTIVATED | 有効化 条件の状態 |
ADD-ONS | AddOnsReady の状態 |
MAX | ライセンスの ノード制限 |
VALID-UNTIL | ライセンスの有効期限 |
DESIRED | liferay-default チャートの replicaCountは、オートスケーリングが有効になっている場合は空になります。 |
EFFECTIVE | StatefulSet に設定されたオペレーターのレプリカ数をカウントします。 |
--output wide を追加して、 PHASE、 ENVIRONMENT-ID、 ACTIVATED-AT、および UNREACHABLE-SINCE も表示します。フェーズ には、次のいずれかの値があります。
| 段階 | 説明 |
|---|---|
Pending | 環境はアクティベーションコードまたはバンドルを待っています。 |
Degraded | アクティベーションに失敗しました。ライセンスの有効期限が切れているか無効であるか、プロビジョニングサービスに接続できません。 |
Ready | 保留中 も 劣化状態 も該当しません。準備完了 は、すべての状態が健康であることを意味するものではありません。 |
条件
各症状とその原因、メッセージを確認するには、環境を説明してください。
kubectl --namespace liferay describe lenv liferay-default
環境は以下のような状況を報告しています。
| 状態 | 説明 |
|---|---|
Activated | 環境が活性化されているかどうか |
AddOnsReady | 対象となるマーケットプレイスアドオンがすべてダウンロードされるかどうか |
GracePeriodExpired | プロビジョニング サービスが猶予期間 (gracePeriod の liferay-dxp-operator チャート、 168 時間 がデフォルトで) よりも長く到達不能だったかどうかは、 True の場合にのみ表示されます。 |
LicenseValid | 現在のライセンスが検証に合格するかどうか |
ProvisioningReachable | 最新のオンラインハートビートがプロビジョニングサービスからライセンスを取得したかどうか |
ReplicasCountValid | 要求されたレプリカ数がライセンスのノード制限内に収まるかどうか |
トラブルシューティング
問題を報告する条件を見つけると、その理由 kubectl describe lenv が表示されます。アクティベーションのワークフローが失敗した場合は、その失敗したステップを特定してください。
Activated
有効化 条件は、以下のいずれかの理由により 偽 です。
AwaitingActivationCode
オペレーターはアクティベーションコードを読み取ることができません。これが、アクティベーション シークレット (liferay-default-activation を作成した後でも ACTIVATED 列が空のままになる理由でもあります。
環境の名前空間にシークレットが存在しない場合は、 作成します。期待されるキーの下にコードがない場合 (デフォルトではactivationCode )、それを kubectl applyに置き換えます。これは、既に存在する Secret に対して kubectl create が失敗するためです。
kubectl --namespace liferay create secret generic liferay-default-activation \
--from-literal=activationCode="[activation code]" \
--dry-run=client --output yaml | kubectl apply --filename -
ActivationRejected
症状メッセージには原因が示されています。
アクティベーション: 予期しないステータス [コード]: サービスがエラーを返しました。次の再試行までお待ちください。それでもエラーが解消されない場合は、Liferayサポートにお問い合わせください。プロビジョニング: アクティベーションが拒否されました: プロビジョニング サービスがコードを拒否しました。 One Liferay から新しいコードを取得し、 でアクティベーション シークレットのコードを置き換えます。- 接続エラーなどのその他のメッセージ: オペレーターがサービスに接続できませんでした。プロビジョニングサービスへの発信HTTPSアクセスを復元します(デフォルトでは
https://api.one.liferay.com)。
オペレーターは、遅延時間を徐々に長くしながら再試行する。すぐに再試行するには、 licensing.liferay.com/activation-requested-at アノテーションを現在時刻に設定してください。
kubectl --namespace liferay annotate lenv liferay-default \
licensing.liferay.com/activation-requested-at="$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
--overwrite
AwaitingOfflineActivationBundle
オペレーターがバンドルファイルを見つけられませんでした。理由は以下のいずれかです。
licensing.offlineActivationBundleが設定されていません。他の オフラインモード値 と共に設定します。- マーケットプレイスボリューム上の、環境の名前空間と同じ名前のフォルダには、その名前のファイルは存在しません。バンドルをそこにコピーします。
marketplace.enabledonliferay-dxp-operatorchart はfalseなので、オペレーターのマーケットプレイスボリュームはありません。マーケットプレイスの音量をオンにします。
OfflineActivationBundleInvalid
バンドルが読み取れないか、 manifest.json または add-ons/ が不足しています。バンドル を置き換えます。
アクティベーションワークフローが失敗しました
アクティベーションワークフロー の失敗したステップを見つけてください。
read-environment: 何も変更されていません。環境が既にアクティブ化されているか、LiferayEnvironmentにliferay-environment-nameパラメーターに指定された名前がありません。 2番目のケースでは、正しい名前でワークフローを再度送信してください。待機: オペレーターが 300 秒以内に環境をアクティブ化しませんでした。Activated条件の理由をkubectl describe lenvとログイン トークンではなく自分の認証情報で読み取ってください。原因を修正し、ワークフローを再度送信してください。- その他の手順:失敗した手順のログを読み、エラーを修正し、ワークフローを再度送信します。
AddOnsReady
AddOnsReady 条件は False で、理由は DownloadsFailingです。条件のメッセージには、オペレーターがダウンロードできないアドオンの名前が表示されます。
オンライン環境の場合は、 マーケットプレイスボリューム がオンになっていることを確認してください。そうであれば、オペレーターは遅延時間を徐々に長くしながらダウンロードを再試行します。エラーが解消しない場合は、Liferayサポートにお問い合わせください。
オフライン環境の場合、バンドルにアドオンが不足しているか、破損しています。バンドル を置き換えます。
ProvisioningReachable
ProvisioningReachable 条件は False で、理由は EntitlementsFetchFailedです。オペレーターが One Liferay のプロビジョニング サービスからライセンスを取得できませんでした。猶予期間が終了するまで、環境は最後に使用したライセンスで稼働し続けます。症状メッセージには原因が示されています。
で始まるメッセージ entitlements: decodeまたはentitlements: 予期しないステータス: サービスがエラーまたはオペレーターが読み取れない応答を返しました。次の再試行までお待ちください。それでもエラーが解消されない場合は、Liferayサポートにお問い合わせください。- 接続エラーなどのその他のメッセージ: オペレーターがサービスに接続できませんでした。プロビジョニングサービスへの発信HTTPSアクセスを復元します(デフォルトでは
https://api.one.liferay.com)。
GracePeriodExpired
GracePeriodExpired 条件は True で、理由は ProvisioningUnreachable です。オペレーターは、猶予期間よりも長くライセンスの取得に失敗し続けたため (EntitlementsFetchFailed)、StatefulSet を 1 つのレプリカにスケールダウンしました。 EntitlementsFetchFailedの原因を修正する。
オペレーターがライセンスを再度取得すると、StatefulSet を レプリカ数に縮小し、ノード制限まで戻します。オートスケーリングの場合、StatefulSetはオートスケーラーがスケールするまで、1つのレプリカのままになります。
LicenseValid
LicenseValid 条件は、以下のいずれかの理由で False です。
Expired
購読を更新してください。オンライン環境は、ハートビートごとにライセンスを要求するため、次のハートビートでライセンスが更新されます。オフライン環境には 新しいバンドル が必要です。
Invalid
オペレーターは、ライセンスの所有者や有効期限を読み取ることができません。オンライン環境については、Liferayサポートにお問い合わせください。オフライン環境の場合は、 をバンドル に置き換えてください。
EnvironmentMismatch
ライセンスは別の環境向けに発行されたものであり、オペレーターはStatefulSetをゼロにスケールします。 kubectl get lenv は 0 を MAX 列に表示します。
オンライン環境については、Liferayサポートにお問い合わせください。オフライン環境の場合、 はこの環境の現在のオフライン要求を使用して新しいバンドル を要求します。
環境に対してライセンスが発行されると、オペレーターはステートフルセットを レプリカ数まで縮小し、ノード制限まで維持します。 StatefulSet のレプリカ数がゼロのままの場合は、例えば kubectl scale のようにして、自分でスケールアップしてください。
ReplicasCountValid
ReplicasCountValid 条件は、以下のいずれかの理由で False または Unknown です。
ExceedsLicensedMaximum
要求されたレプリカ数がライセンスのノード制限を超えているため、オペレーターは制限までしか実行されません。制限を超えてスケーリングすると、 レプリカ [カウント] がライセンスされた maxClusterNodes [制限] を超え、失敗します。
制限が 0の場合、 EnvironmentMismatch を修正します。条件メッセージに制限が 1 と表示され、 GracePeriodExpired が Trueである場合、 GracePeriodExpired を修正します。そうでない場合は、要求された数を減らして ノード制限 に収まるようにします。
WorkloadUpdateRejected
Kubernetesは、オペレーターによるStatefulSetのレプリカ数の変更を拒否しました。状態メッセージに示されている原因を修正してください。オペレーターは再試行します。
WorkloadNotFound
ReplicasCountValid は Unknownです。名前空間内の StatefulSet には spec.workloadRef.nameの名前がないため、この演算子はノード制限を適用しません。正しい workloadRef を LiferayEnvironment に記述しました。