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
- 如果
NetworkUnavailable
、MemoryPressure
、DiskPressure
或PIDPressure
狀態為 true,表示 Kubernetes 節點處於狀況不良的狀態。因此,您必須檢查狀況不良的節點的系統狀態和資源使用情況。 - 若要重新檢查此問題的狀態,請執行
viocli check health -n kubernetes
。
節點的磁碟使用率較高
- 登入報告磁碟使用率較高的節點。
#viossh ${node}
- 使用
df -h
檢查磁碟使用率。 - 移除節點上未使用的檔案。
- 若要重新檢查此問題的狀態,請執行
viocli check health -n kubernetes
。
Evicted
,請連絡 VMware 支援進行救援。
- 登入 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
。
- 必須將〈將 VMware Integrated OpenStack 與 vRealize Log Insight 整合〉文件中列出的所有必要條件準備妥當。
- 若要重新檢查此問題的狀態,請執行
viocli check health -n connectivity
。
- 確保 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 資料庫中的資料表較大
nova.instances
請參閱知識庫 83768。
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.volumes
和cinder.volume_attachment
清除 Cinder 資料庫的手動步驟
- 備份 Cinder 資料庫。
osctl exec -ti mariadb-server-0 -- mysqldump --defaults-file=/etc/mysql/admin_user.cnf -R cinder > /tmp/cinder_backup.sql
- 登入 cinder-api-xxxxx pod。
osctl exec -ti deploy/cinder-api bash
- 清理 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 list
和openstack 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 網繭。
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 服務。
# 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-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 catalog list
),然後檢查該命令是否可以擷取正確的傳回。 - 如需更多訊息,請新增偵錯選項。例如:
openstack catalog list --debug
- 若要檢查此問題的狀態,請執行
viocli check health -n basic
。
- 取得 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
。
vCenter 叢集超載/主機面臨壓力
檢查 VIO 控制平面的 vCenter 主機並新增更多資源,或者清理一些未使用的執行個體以緩解資源壓力。
- 請查看記錄 /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
。
- 請查看記錄 /var/log/viocli_health_check.log,然後在最後一條訊息中搜尋
check_cluster_workload
,可提供詳細的資源使用情況。 - 修正報告的資源問題,然後透過執行
viocli check health -n kubernetes
來重新檢查狀態。