VMware Integrated OpenStack CLI 健全狀況檢查 Runbook 介紹了修正所報告問題的 viocli check health 案例和程序。

您可以針對 viocli check health 中報告的問題執行以下任一解決方案:

節點未就緒

  • 若要取得節點狀態,請執行 osctl get node 命令。
    osctl get node
    NAME                                       STATUS   ROLES                     AGE   VERSION
    controller-dqpzc8r69w                      Ready    openstack-control-plane   17d   v1.17.2+vmware.1
    controller-lqb7xjgm9r                      Ready    openstack-control-plane   17d   v1.17.2+vmware.1
    controller-mvn5nmdrsp                      Ready    openstack-control-plane   17d   v1.17.2+vmware.1
    vxlan-vm-111-161.vio-mgmt.eng.vmware.com   Ready    master                    17d   v1.17.2+vmware.1
  • 使用以下命令對 not ready node 重新啟動 kubelet 服務:
    viosshcmd ${not_ready_node} 'sudo systemctl restart kubelet'
  • 若要重新檢查此問題的狀態,請執行 viocli check health -n kubernetes

節點的 IP 位址重複

如需有關 IP 位址重複的節點的詳細資訊,請參閱知識庫 82608

若要重新檢查此問題的狀態,請執行 viocli check health -n kubernetes

節點狀況不良

  • 執行 osctl describe node <node> 以取得節點的健全狀況狀態。
    Type                 Status  LastHeartbeatTime                 LastTransitionTime                Reason                       Message
    
      ----                 ------  -----------------                 ------------------                ------                       -------
    
      NetworkUnavailable   False   Sat, 05 Jun 2021 10:47:53 +0000   Sat, 05 Jun 2021 10:47:53 +0000   CalicoIsUp                   Calico is running on this node
    
      MemoryPressure       False   Mon, 07 Jun 2021 01:21:55 +0000   Mon, 07 Jun 2021 00:57:29 +0000   KubeletHasSufficientMemory   kubelet has sufficient memory available
    
      DiskPressure         False   Mon, 07 Jun 2021 01:21:55 +0000   Mon, 07 Jun 2021 00:57:29 +0000   KubeletHasNoDiskPressure     kubelet has no disk pressure
    
      PIDPressure          False   Mon, 07 Jun 2021 01:21:55 +0000   Mon, 07 Jun 2021 00:57:29 +0000   KubeletHasSufficientPID      kubelet has sufficient PID available
    
      Ready                True    Mon, 07 Jun 2021 01:21:55 +0000   Mon, 07 Jun 2021 00:57:32 +0000   KubeletReady                 kubelet is posting ready status
    
  • 如果 NetworkUnavailableMemoryPressureDiskPressurePIDPressure 狀態為 true,表示 Kubernetes 節點處於狀況不良的狀態。因此,您必須檢查狀況不良的節點的系統狀態和資源使用情況。
  • 若要重新檢查此問題的狀態,請執行 viocli check health -n kubernetes

節點的磁碟使用率較高

  • 登入報告磁碟使用率較高的節點。
    #viossh ${node}
  • 使用 df -h 檢查磁碟使用率。
  • 移除節點上未使用的檔案。
  • 若要重新檢查此問題的狀態,請執行 viocli check health -n kubernetes
備註: 當可用磁碟空間低於 15% 時,kubelet 會從 VMware Integrated OpenStack Manager 上的本機映像存放庫中清除一些 Docker 映像。如果發生這種情況且一些網繭變為 Evicted,請連絡 VMware 支援進行救援。
節點的 inode 使用率較高
  • 登入 inode 使用率較高的節點。
    #viossh ${node}
  • 使用 df -i / 檢查 inode 的使用率。
  • 移除節點上未使用的檔案。
  • 若要重新檢查此問題的狀態,請執行 viocli check health -n kubernetes

節點有快照

  • 登入 vCenter,然後移除為 VMware Integrated OpenStack 控制器節點產生的快照。
  • 如果報告錯誤無法連線到 vCenter,則必須在 VMware Integrated OpenStack 中檢查 vCenter 連線資訊。
  • 若要重新檢查此問題的狀態,請執行 viocli check health -n kubernetes

無法解析 FQDN

  • VMware Integrated OpenStack 管理節點中,使用以下命令檢查 DNS 解析:
    #viosshcmd ${node_name}  -c "nslookup ${reported_host}"
    #toolbox -c "dig $host +noedns +tcp"
  • 如果失敗,請檢查在 VMware Integrated OpenStack 節點的 /etc/resolve.conf 中設定的 DNS 伺服器。
  • 若要重新檢查此問題的狀態,請執行 viocli check health -n connectivity

節點中未同步 NTP

如需有關 NTP 節點的詳細資訊,請參閱知識庫 78565。若要重新檢查此問題的狀態,請執行 viocli check health -n connectivity

無法連線到 LDAP

檢查 VMware Integrated OpenStack 節點與指定 LDAP 伺服器的連線,並確保 VMware Integrated OpenStack 中的 LDAP (使用者、認證) 設定正確無誤。若要重新檢查此問題的狀態,請執行 viocli check health -n connectivity

無法連線到 vCenter

如果無法連線到 vCenter,請檢查 VMware Integrated OpenStack 節點與指定 vCenter 的連線,並確保 VMware Integrated OpenStack 中的 vCenter 設定 (使用者、認證) 正確無誤。若要重新檢查此問題的狀態,請執行 viocli check health -n connectivity

無法連線到 NSX

如果無法連線到 NSX,請檢查 VMware Integrated OpenStack 節點與指定 NSX 伺服器的連線,並確保 NSX 設定 (使用者、認證) 正確無誤。若要重新檢查此問題的狀態,請執行 viocli check health -n connectivity

無法連線到記錄伺服器
無法連線到 DNS 伺服器
  • 確保 DNS 伺服器可以與 VMware Integrated OpenStack API 存取網路進行通訊。
  • 必須將〈啟用 Designate 元件〉文件中列出的所有必要條件準備妥當。
  • 若要重新檢查此問題的狀態,請執行 viocli check health -n connectivity

rabbitmq 節點中的網路磁碟分割不正確

  • 若要強制重新建立 rabbitmq 節點,請在 VMware Integrated OpenStack 管理節點上執行。
    #osctl delete pod ${reported_rabbitmq_node}
  • 若要重新檢查此問題的狀態,請執行 viocli heath check -n rabbitmq

WSREP 叢集問題

如果 viocli get deployment 中的部署狀態為「執行中」,請連絡 VIO 支援。否則,請依照以下指示進行操作。
  • VMware Integrated OpenStack Manager 節點執行以下命令:
    #kubectl -n openstack exec -ti mariadb-server-0 -- mysql --defaults-file=/etc/mysql/admin_user.cnf --connect-timeout=5 --host=localhost -B -N -e "show status;"
    #kubectl -n openstack exec -ti mariadb-server-1 -- mysql --defaults-file=/etc/mysql/admin_user.cnf --connect-timeout=5 --host=localhost -B -N -e "show status;"
    #kubectl -n openstack exec -ti mariadb-server-2 -- mysql --defaults-file=/etc/mysql/admin_user.cnf --connect-timeout=5 --host=localhost -B -N -e "show status;"
  • 如果 mariadb-server-x 的輸出 wsrep_cluster_size 不是 3,請使用以下命令重新建立 mariadb 節點:
    #kubectl -n openstack delete pod mariadb-server-x
  • 如果三個節點之間的 wsrep_last_commited 差距較大,請重新啟動 mariadb 節點或 wsrep_last_committed 數值較小的節點。
    #kubectl -n openstack delete pod mariadb-server-x
  • 若要重新檢查此問題的狀態,請執行 viocli check health -n mariadb

OpenStack 資料庫中的資料表較大

  • glance.images

    依預設,將啟用 cron 工作以自動清除 Glance 資料庫中的軟刪除記錄。

    請檢查資料庫清除 cron 工作是否已啟用並正常執行。

    viocli update glance
    jobs:
      db_purge:
        age_in_days: 60
        max_rows: 1000
      db_purge_images:
        age_in_days: 60
        max_rows: 1000
    manifests:
      cron_job_db_purge: true
      cron_job_db_purge_images: true
    

    cron_job_db_purge 用於對除「映像」資料表之外的 Glance 資料表啟用資料庫清除。

    cron_job_db_purge_images 用於對 Glance「映像」資料表啟用資料庫清除。

    --age_in_days NUM 僅清除刪除時間超過 NUM 天的資料列。預設為 30 天。

    --max_rows NUM 從每個資料表中清除最多 NUM 個資料列。預設值為 100。

  • cinder.volumescinder.volume_attachment

    清除 Cinder 資料庫的手動步驟

  1. 備份 Cinder 資料庫。
    osctl exec -ti mariadb-server-0 -- mysqldump --defaults-file=/etc/mysql/admin_user.cnf -R cinder > /tmp/cinder_backup.sql
    
  2. 登入 cinder-api-xxxxx pod。
    osctl exec -ti deploy/cinder-api bash
    
  3. 清理 Cinder 資料庫。
    cinder-manage db purge 60
    
    備註:

    命令用法:cinder-manage db purge age_in_days

    位置引數:age_in_days 清除早於使用時間 (以天為單位) 的已刪除資料列。

    可能需要調整 age_in_days,以清理 Cinder 資料庫中更多的軟刪除記錄。

控制平面中的舊網路資源過多

如需解決方案,請參閱 VMware Integrated OpenStack 7.1 版本說明中的如果存在 1 萬個 Neutron 承租人網路,則無法啟用 Ceilometer

OpenStack Keystone 無法正常運作

  • 必須嘗試以管理員使用者身分從工具箱登入 OpenStack,然後嘗試執行 openstack user listopenstack user show 等命令。如果登入失敗,請收集 Keystone 記錄以瞭解錯誤訊息。
  • 取得 keystone-api 網繭清單:
    #osctl get pod | grep keystone-api
  • 收集記錄:
    #osctl logs keystone-api-xxxx -c keystone-api >keystone-api-xxxx.log
  • 若要檢查此問題的狀態,請執行 viocli check health -n keystone

Neutron 資料庫中的網路識別碼為空白

如需解決方案,請參閱知識庫 76455。若要檢查此問題的狀態,請執行 viocli check health -n neutron

Neutron 中的 vCenter 參考錯誤

  • 取得 viocluster 名稱。
    osctl get viocluster
    如果傳回 viocluster1,請繼續執行下一步。否則,這是一條錯誤警示。請連絡 VMware 支援,以取得永久性解決方案。
  • 取得 viocluster vCenter 組態。
    # osctl get viocluster viocluster1 -oyaml
  • 備份 Neutron 組態。
    osctl get neutron -oyaml > neutron-<time-now>.yml
  • 編輯 Neutron CR cmd:osctl edit neutron neutron-xxx,然後透過取代步驟 1 中找到的 vCenter 參考來變更 CR 規格。
    spec:
      conf:
        plugins:
          nsx:
            dvs:
              dvs_name: vio-dvs
              host_ip: .VCenter:vcenter812:spec.hostname <---- change the vcenter instance to viocluster refered
              host_password: .VCenter:vcenter812:spec.password <---- same above
              host_username: .VCenter:vcenter812:spec.username <----
              insecure: .VCenter:vcenter812:spec.insecure <----
    
  • 若要檢查此問題的狀態,請執行 viocli check health -n neutron
Nova 服務關閉
  • 取得 Nova 網繭。
    osctl get pod | grep nova

    檢查 Nova 網繭是否未處於正在執行狀態。

  • 使用以下命令刪除網繭:osctl delete pod xxx

    等待新網繭,直到其狀態為正在執行

  • 若要檢查此問題的狀態,請執行 viocli check health -n nova

Nova 服務失效

有關失效的 Nova 服務,請參閱 知識庫 78736。若要檢查此問題的狀態,請執行 viocli check health -n nova

目錄清單中存在冗餘 Nova
  • 登入工具箱,然後嘗試尋找並刪除冗餘的 Nova 服務和某些不含端點的 Nova 服務。
    # openstack catalog list
    # openstack service list
  • 尋找正在使用的 Nova 服務。
    # openstack endpoint list |grep nova
  • 若要檢查此問題的狀態,請執行 viocli check health -n nova

一些 Nova 運算網繭由於啟動逾時不斷重新啟動

此警示表示一些 Nova 運算網繭可能處於狀況不良狀態。請連絡 VMware 支援,以取得解決方案。若要檢查問題的狀態,請執行 viocli check health -n nova

無法連線到 Glance 資料存放區

  • 取得 Glance 服務清單。
    osctl get glance
  • 取得 Glance 資料存放區資訊。
    osctl get glance $glance-xxx -o yaml
  • 尋找資料存放區連線資訊。
    spec:
      conf:
        backends:
          vmware_backend:
            vmware_datastores: xxxx
            vmware_server_host: xxxx
            vmware_server_password: xxxx
            vmware_server_username: .xxxx
  • 如果資訊不正確,請檢查 vCenter 和資料存放區連線,並相應地使用 osctl update glance $glance-xxx 進行更新。
  • 若要檢查此問題的狀態,請執行 viocli check health -n glance

位置格式不正確的 Glance 映像

此訊息表示一些 Glance 映像的位置格式不正確。請連絡 VMware 支援,以取得解決方案。若要檢查問題的狀態,請執行 viocli check health -n glance

Cinder 服務關閉

  • 取得 Cinder 網繭。
    osctl get pod | grep cinder | grep -v Completed

    檢查 Cinder 網繭是否未處於正在執行狀態。

  • 使用以下命令刪除網繭:osctl delete pod xxx

    等待新網繭,直到其狀態顯示為正在執行

  • 若要檢查此問題的狀態,請執行 viocli check health -n cinder
Cinder 服務失效
  • 登入 cinder-volume 網繭。
    #osctl exec -ti cinder-volume-0 bash
  • 檢查並列出失效的 Cinder 服務。
    #cinder-manage service list
    例如:
    #cinder-manage service list
  • 使用 cinder-manage 命令從 cinder-volume 網繭中刪除失效的 Cinder 服務。
    # cinder-manage service remove cinder-scheduler cinder-scheduler-7868dc59dc-km9mj
    # cinder-manage service remove cinder-volume controller01@e-muc-cb-1b-az3:172.23.48.18
    
  • 若要檢查此問題的狀態,請執行 viocli check health -n cinder
未找到命令
  • 若要在 VMware Integrated OpenStack 管理節點中安裝所需的命令,請執行 tdnf install xxx
  • 若要檢查此問題的狀態,請執行 viocli check health -n basic

Kubernetes 節點清單為空白或無法連線到節點

VMware Integrated OpenStack 管理節點執行 osctl get nodes 並檢查它是否可以擷取正確的輸出。若要檢查此問題的狀態,請執行 viocli check health -n basic

沒有正在執行的網繭

VMware Integrated OpenStack 管理節點執行 osctl get pod |grep xxx,並檢查它是否可以從輸出中擷取任何正在執行的 網繭。若要檢查此問題的狀態,請執行 viocli check health -n basic

無法連線到網繭

VMware Integrated OpenStack 管理節點執行 osctl exec -it $pod_name bash,然後檢查是否可以登入網繭。若要檢查此問題的狀態,請執行 viocli check health -n basic

在網繭中執行命令

請查看記錄檔 /var/log/viocli_health_check.log 以瞭解詳細資訊,然後嘗試從 VMware Integrated OpenStack 管理節點重新執行命令。若要檢查此問題的狀態,請執行 viocli check health -n basic

OpenStack 未就緒
  • 登入工具箱並執行某些 OpenStack 命令 (例如 openstack catalog list),然後檢查該命令是否可以擷取正確的傳回。
  • 如需更多訊息,請新增偵錯選項。例如:
    openstack catalog list --debug
  • 若要檢查此問題的狀態,請執行 viocli check health -n basic
VMware Integrated OpenStack 中儲存的 OpenStack 管理員密碼為空白
  • 取得 openstack 管理員密碼並將其與 OS_PASSWORD 進行比較。
    osctl get secret keystone-keystone-admin -o jsonpath='{.data.OS_PASSWORD}
  • 如果 keystone-keystone-admin 中沒有儲存任何值,請使用 osctl edit secret keystone-keystone-admin 進行更新。
  • 若要檢查此問題的狀態,請執行 viocli check health -n basic
備註: 如果密碼不同,您必須連絡 VMware 才能復原正確的密碼。

vCenter 叢集超載/主機面臨壓力

檢查 VIO 控制平面的 vCenter 主機並新增更多資源,或者清理一些未使用的執行個體以緩解資源壓力。

VIO 憑證已過期/即將到期
  • 請查看記錄 /var/log/viocli_health_check.log,然後在最後一條訊息中搜尋 check_vio_cert_expire,以瞭解憑證已過期多長時間或多久後會到期。
  • 若要更新憑證,請依照更新 VMware Integrated OpenStack 的憑證執行操作。
  • 若要重新檢查問題的狀態,請執行 viocli check health -n connectivity

LDAP 憑證已過期/即將到期

  • 請查看記錄 /var/log/viocli_health_check.log,然後在最後一條訊息中搜尋 check_ldap_cert_expire,以瞭解憑證已過期多長時間或多久後會到期。
  • 若要更新憑證,請依照更新 LDAP 伺服器的憑證執行操作。
    備註: 如果未設定 LDAP,將略過檢查,並顯示記錄訊息: No LDAP Certificate found
  • 若要重新檢查問題的狀態,請執行 viocli check health -n connectivity

vCenter 憑證已過期/即將到期

  • 請查看記錄 /var/log/viocli_health_check.log,然後在最後一條訊息中搜尋 check_vcenter_cert_expire,以瞭解憑證已過期多長時間或多久後會到期。
  • 若要更新憑證,請依照使用更新的 vCenter 或 NSX-T 憑證設定 VMware Integrated OpenStack 執行操作。
    備註: 如果 vCenter 設定為使用不安全的連線,則將略過檢查,並顯示記錄訊息: Use insecure connection
  • 若要重新檢查問題的狀態,請執行 viocli check health -n connectivity

NSX 憑證已過期/即將到期

  • 請查看記錄 /var/log/viocli_health_check.log,然後在最後一條訊息中搜尋 check_nsx_cert_expire,以瞭解憑證已過期多長時間或多久後會到期。
  • 若要更新憑證,請依照使用更新的 vCenter 或 NSX-T 憑證設定 VMware Integrated OpenStack 執行操作。
    備註: 如果 NSX 設定為使用不安全的連線,則將略過檢查,並顯示記錄訊息: Use insecure connection
  • 若要重新檢查問題的狀態,請執行 viocli check health -n connectivity

服務 xxx 已停止

請執行 viocli start xxx 以啟動服務。若要檢查此問題的狀態,請執行 viocli check health -n lifecycle_manager

VIO 控制平面的 vCenter 主機面臨壓力
  • 請查看記錄 /var/log/viocli_health_check.log,然後在最後一條訊息中搜尋 check_cluster_workload,可提供詳細的資源使用情況。
  • 修正報告的資源問題,然後透過執行 viocli check health -n kubernetes 來重新檢查狀態。