Translated message

A translation of this page exists in English.

Warning message

This translation is outdated. For the most up-to-date information, please refer to the English version.

OpenShift 4 クラスターのアップグレードの事前チェック要件

Solution Verified - Updated -

Environment

  • Red Hat OpenShift Container Platform (RHOCP)
    • 4
  • Red Hat OpenShift Service on AWS (ROSA)
    • 4
  • Red Hat OpenShift Dedicated (OSD)
    • 4
  • Azure Red Hat OpenShift (ARO)
    • 4

Issue

  • OpenShift Cluster をアップグレードする前の初期要件は何ですか?
  • クラスターオブジェクトの正常性を確認するにはどうすればよいですか?
  • クラスター上のリソース割り当てを確認するにはどうすればよいですか?
  • Pod のステータスと実行状態を確認するにはどうすればよいですか?
  • その他の事前チェック。

Resolution

クラスターをアップグレードする前に、クラスターが正常に動作しており、安全にアップグレードできることを確認するために、以下のチェック項目を確認してください。

プロアクティブケースの作成

ARO の標準ガイドライン

以下は、標準 ProActive ARO クラスターアップグレードチケットを作成するために必要な前提条件です。

  • How to open a PROACTIVE case for a ROSA, OSD に従った、スケジュールされたメンテナンスウィンドウの日付/時刻 (タイムゾーンを含む)。
  • 適切な連絡先情報。
  • 標準 must-gather
  • ARO クラスターのリソース ID とリージョン (以下を使用して取得可能)。

    Resource ID:
    $ az aro show -n <cluster_name> -g <resource_group> --subscription <subscription_name> --query id

    Region:
    $ az aro show -n <cluster_name> -g <resource_group> --subscription <subscription_name> --query location

OSD/ROSA の標準ガイドライン

以下は、標準 ProActive OSD/ROSA クラスターのアップグレードチケットを作成するために必要な前提条件です。

OCP の標準ガイドライン

以下は、標準 ProActive OCP クラスターアップグレードチケットを作成するために必要な前提条件です。

クラスターの事前チェック

Operator のチェック

クラスター上で実行されている Operator のバージョンが、必要な OpenShift バージョンと互換性があるか確認します。OpenShift で Red Hat がサポートする Operator については、OpenShift Operator Life Cycles および Red Hat OpenShift Container Platform Operator Update Information Checker を参照し、それぞれの特定の Operator を検索してください。これは、新しい OpenShift マイナーバージョン (4.y.zy) にアップグレードするときに特に重要です。

重要な注意点: Red Hat OpenShift Data Foundations (RHODF) がクラスターにインストールされている場合は、RHODF バージョンが必要な RHOCP バージョンと互換性があるか確認することに加えて、OpenShift Data Foundations (ODF) Operator Upgrade Pre-Checks も参照してください。ODF クラスターのステータスが正常でない場合は、ODF ノードをドレインできず、OpenShift のアップグレードがハングする原因になります。

クラスターのアップグレードパスの確認

Red Hat OpenShift Container Platform Update Graph を使用すると、アップグレードに利用可能なアップグレードパスを確認できます。

削除された API の確認

新しい OpenShift マイナーバージョン (4.yzy) にアップグレードする場合は、削除された API があるかどうか、およびカスタムアプリケーションがまだそれを使用しているかどうかを確認する必要があります。カスタムアプリケーションが、目的のマイナーバージョンで削除される API を使用している場合は、アップグレード後に問題が発生しないように、それらのアプリケーションを更新する必要があります。詳細は 、Kubernetes API の非推奨と削除への対応 を参照してください。

クラスターオブジェクトの確認

  • ノードのステータスをチェックして、どのノードも NotReady 状態または SchedulingDisabled 状態になっていないことを確認します。

    $ oc get nodes
    NAME STATUS ROLES AGE VERSION
    master-0.lab.example.com Ready master 3d18h v1.23.12+8a6bfe4
    master-1.lab.example.com Ready master 3d18h v1.23.12+8a6bfe4
    master-2.lab.example.com Ready master 3d18h v1.23.12+8a6bfe4
    worker-0.lab.example.com Ready worker 3d17h v1.23.12+8a6bfe4
    worker-1.lab.example.com Ready worker 3d17h v1.23.12+8a6bfe4
    worker-2.lab.example.com Ready worker 3d17h v1.23.12+8a6bfe4
  • クラスター Operator のステータスをチェックして、すべてのクラスター Operator が Available 状態であり、Degraded 状態ではないことを確認します。

    $ oc get co
    NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE
    [...]
    etcd 4.10.54 True False False 3d18h
    image-registry 4.10.54 True False False 3d9h
    ingress 4.10.54 True False False 3d17h
    insights 4.10.54 True False False 3d18h
    kube-apiserver 4.10.54 True False False 3d18h
    kube-controller-manager 4.10.54 True False False 3d18h
    kube-scheduler 4.10.54 True False False 3d18h
    kube-storage-version-migrator 4.10.54 True False False 2d3h
    machine-api 4.10.54 True False False 3d18h
    machine-approver 4.10.54 True False False 3d18h
    machine-config 4.10.54 True False False 2d2h
    [...]
  • PVPVC の正常性をチェックして、以下を確認します。

    • すべての PV と PVC が mounted 状態である。
    • PV と PVC はいずれも unmounted 状態ではない。
    • PV と PVC はいずれも terminating 状態でスタックしていない。
    • 異常な設定は存在しない。
    $ oc get pv,pvc -A
    NAMESPACE NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
    [...]
    openshift-compliance persistentvolumeclaim/ocp4-cis Active 6d10h
    openshift-compliance persistentvolumeclaim/ocp4-cis-node-master Active 6d10h
    openshift-compliance persistentvolumeclaim/ocp4-cis-node-worker Active 6d10h
    [...]
  • machineConfigPools の正常性をチェックして、MACHINECOUNTREADYMACHINECOUNT と等しくなるようにし、UPDATEDMACHINECOUNT および DEGRADEDMACHINECOUNT にスタックしているマシンがないことを確認します。

    $ oc get mcp
    NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE
    master rendered-master-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX True False False 3 3 3 0 4d7h
    worker rendered-worker-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX True False False 3 3 3 0 4d7h

クラスターノードの割り当ての確認

リソース割り当てを確認するには、次の 2 つの方法があります。

$ oc describe の使用

$ oc describe node worker-0.lab.example.com
[...]
Conditions: <====
Type Status LastHeartbeatTime LastTransitionTime Reason Message
---- ------ ----------------- ------------------ ------ -------
MemoryPressure False Wed, 14 Jun 2023 15:24:09 -0400 Tue, 13 Jun 2023 02:59:26 -0400 KubeletHasSufficientMemory kubelet has sufficient memory available
DiskPressure False Wed, 14 Jun 2023 15:24:09 -0400 Tue, 13 Jun 2023 02:59:26 -0400 KubeletHasNoDiskPressure kubelet has no disk pressure
PIDPressure False Wed, 14 Jun 2023 15:24:09 -0400 Tue, 13 Jun 2023 02:59:26 -0400 KubeletHasSufficientPID kubelet has sufficient PID available
Ready True Wed, 14 Jun 2023 15:24:09 -0400 Tue, 13 Jun 2023 02:59:36 -0400 KubeletReady kubelet is posting ready status

Capacity: <====
cpu: 4
ephemeral-storage: 41407468Ki
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 8146240Ki
pods: 250

Allocatable: <====
cpu: 3500m
ephemeral-storage: 37087380622
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 6995264Ki
pods: 250

System Info: <====
Machine ID: bc21e1755a9142238b04129b97e118c0
System UUID: bc21e175-5a91-4223-8b04-129b97e118c0
Boot ID: b0520f6a-09e7-4bf8-8e0c-9aa749fd14bc
Kernel Version: 4.18.0-372.58.1.el8_6.x86_64
OS Image: Red Hat Enterprise Linux CoreOS 412.86.202305230130-0 (Ootpa)
Operating System: linux
Architecture: amd64
Container Runtime Version: cri-o://1.25.3-4.rhaos4.12.git76ceef4.el8
Kubelet Version: v1.25.8+37a9a08
Kube-Proxy Version: v1.25.8+37a9a08

Non-terminated Pods: (33 in total) <====
Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits Age
--------- ---- ------------ ---------- --------------- ------------- ---
new-test httpd-675fd5bfdd-9s4pr 0 (0%) 0 (0%) 0 (0%) 0 (0%) 34h
openshift-cluster-node-tuning-operator tuned-wfrxw 10m (0%) 0 (0%) 50Mi (0%) 0 (0%) 37h
openshift-cnv cdi-operator-6ffbc46886-rfb97 10m (0%) 0 (0%) 150Mi (2%) 0 (0%) 27h
openshift-cnv cluster-network-addons-operator-675b769f6f-954wl 60m (1%) 0 (0%) 50Mi (0%) 0 (0%) 27h
openshift-cnv hco-operator-7f8c48598d-c6vh5 10m (0%) 0 (0%) 96Mi (1%) 0 (0%) 27h
openshift-cnv hco-webhook-fc6b4c4b5-7zrdb 5m (0%) 0 (0%) 48Mi (0%) 0 (0%) 27h
openshift-cnv hostpath-provisioner-operator-6b6bc8bf8-6mxkp 10m (0%) 0 (0%) 150Mi (2%) 0 (0%) 27h
openshift-cnv hyperconverged-cluster-cli-download-7f5844cb77-ftjbz 10m (0%) 0 (0%) 96Mi (1%) 0 (0%) 27h

Allocated resources: <====
(Total limits may be over 100 percent, i.e., overcommitted.)
Resource Requests Limits
-------- -------- ------
cpu 959m (27%) 1700m (48%)
memory 2968Mi (43%) 1800Mi (26%)
ephemeral-storage 0 (0%) 0 (0%)
hugepages-1Gi 0 (0%) 0 (0%)
hugepages-2Mi 0 (0%) 0 (0%)
Events: <none> <====
[...]

以下のコマンドを使用して、すべてのノードを一度に記述することもできます。

$ oc describe nodes > nodes_description.yaml

YAML Output の使用

$ oc get node worker.lab.example.com -oyaml

すべてのノードのリソース割り当てを一度に取得するには、以下のコマンドを使用します。

$ for i in $(oc get nodes | awk '{print $1}'); do echo "==== $i ====";oc describe node $i 2> /dev/null | grep -A10 Allocated; echo; done
[...]
==== master-0.lab.example.com ====
Allocated resources:
(Total limits may be over 100 percent, i.e., overcommitted.)
Resource Requests Limits
-------- -------- ------
cpu 1970m (56%) 400m (11%)
memory 8022Mi (53%) 900Mi (6%)
ephemeral-storage 0 (0%) 0 (0%)
hugepages-1Gi 0 (0%) 0 (0%)
hugepages-2Mi 0 (0%) 0 (0%)
Events: <none>

==== master-1.lab.example.com ====
Allocated resources:
(Total limits may be over 100 percent, i.e., overcommitted.)
Resource Requests Limits
-------- -------- ------
cpu 1935m (55%) 0 (0%)
memory 8357Mi (56%) 0 (0%)
ephemeral-storage 0 (0%) 0 (0%)
hugepages-1Gi 0 (0%) 0 (0%)
hugepages-2Mi 0 (0%) 0 (0%)
Events: <none>

==== master-2.lab.example.com ====
Allocated resources:
(Total limits may be over 100 percent, i.e., overcommitted.)
Resource Requests Limits
-------- -------- ------
cpu 1579m (45%) 0 (0%)
memory 6282Mi (42%) 0 (0%)
ephemeral-storage 0 (0%) 0 (0%)
hugepages-1Gi 0 (0%) 0 (0%)
hugepages-2Mi 0 (0%) 0 (0%)
Events: <none>
[...]

リクエスト/制限ノードのオーバーコミット に関する詳細は、以下のドキュメントを参照してください。

Pod の正常性とステータスの確認

  • ステータスが RunningCompletedSucceeded ではない Pod を確認します。

    $ oc get pods --all-namespaces | egrep -v 'Running | Completed | Succeeded'
  • namespace 内のすべての Pod のステータスを確認します。

    $ for i in `oc adm top pods -A | awk '{print $1}' | uniq`; do echo $i; oc get pods -owide -n $i; done

    ###[Using grep against node name will limit the search to get more accurate results]

    $ for i in `oc adm top pods -A | awk '{print $1}' | uniq`; do echo $i; oc get pods -owide -n $i | grep <node_name>; echo '---------------------'; done
  • 以下を使用して Pod ログを確認します。

    $ oc logs pod/<pod_name> -n <namespace_name>
  • 特定のコンテナーからログを取得するには、-c パラメーターを使用します。

    $ oc logs pod/<pod_name> -c <conatiner_name> -n <namespace_name>

その他の事前チェック:

  • etcd クラスターの健全性 を確認します。
  • ネットワークの可観測性 を使用してネットワークの健全性を確認する
  • 保留中の証明書署名要求を確認する。

    $ oc get csr
  • Pod Disruption Budget の場合、アップグレード中にノードのドレインプロセスをブロックする可能性のある Pod があるか確認するには、以下のコマンド出力が必要です。通常、ノードが適切にドレインされるように、許容される中断は 1 に設定されます。must-gather はこれを適切にキャプチャーしないため、この出力を手動で確認する必要があります。

    $ oc get pdb -A
  • カスタムネットワークポリシー が存在すると、クラスターのアップグレードが中断される可能性もあります。アップグレード前に必ずネットワークポリシーを確認し、無効化/削除してください。

    $ oc get networkpolicies -A
  • Web Console -> Observe -> Alerting を介して Alertmanager で発動中のアラートを確認し、警告 または 重大 なアラートが発動していないこと、および既存の 情報 アラートを認識していることを確認します。

  • すべての namespace で 警告 イベントを探し、懸念されるものがないか確認します。

    $ oc get events -A --field-selector type=Warning --sort-by=".lastTimestamp" 

Root Cause

Red Hat OpenShift Container Platform 4 のアップグレードには、いくつかの異なるコンポーネントのアップグレードが伴うため、アップグレードを開始する前に、クラスターの全体的なステータスと、追加の Operator およびサードパーティーコンポーネントの互換性を確認する必要があります。

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.

Comments