2021-12-22 08:43 PM 2022-01-22 11:13 AM 更新
本ドキュメントは Crosswork Network Controller (CNC) の Kubernetes 観点での正常性確認方法について説明します。
なお、本記事の内容は Crosswork Infrastructure 4.0/4.1, Crosswork 2.0/3.0 を対象としています。
Kubernetesの正常性は kubectl コマンドを実行して確認します。いずれかのMasterノードにログイン後、root user に switch user して kubectl コマンドを実行してください。
kubectl get node コマンドで STATUS がすべて Ready であることを確認します。
root@192-168-200-101-hybrid:~# kubectl get node NAME STATUS ROLES AGE VERSION 192-168-200-101-hybrid.cisco.com Ready master 34d v1.18.0 192-168-200-102-hybrid.cisco.com Ready master 34d v1.18.0 192-168-200-103-hybrid.cisco.com Ready master 2d22h v1.18.0
もし、NotReady 等のステータスの場合には kubectl describe node <node-name> コマンドを実行し、Conditions を確認してください。
root@192-168-200-101-hybrid:~# kubectl describe node 192-168-200-101-hybrid.cisco.com :: Conditions: Type Status LastHeartbeatTime LastTransitionTime Reason Message ---- ------ ----------------- ------------------ ------ ------- NetworkUnavailable False Tue, 07 Dec 2021 02:41:22 +0000 Tue, 07 Dec 2021 02:41:22 +0000 CalicoIsUp Calico is running on this node MemoryPressure False Mon, 20 Dec 2021 02:10:13 +0000 Tue, 07 Dec 2021 02:36:04 +0000 KubeletHasSufficientMemory kubelet has sufficient memory available DiskPressure False Mon, 20 Dec 2021 02:10:13 +0000 Tue, 07 Dec 2021 02:36:04 +0000 KubeletHasNoDiskPressure kubelet has no disk pressure PIDPressure False Mon, 20 Dec 2021 02:10:13 +0000 Tue, 07 Dec 2021 02:36:04 +0000 KubeletHasSufficientPID kubelet has sufficient PID available Ready True Mon, 20 Dec 2021 02:10:13 +0000 Tue, 07 Dec 2021 02:36:04 +0000 KubeletReady kubelet is posting ready status. AppArmor enabled
NetworkUnavailable: NetworkPlugin (Calico) が動作しているかどうか
MemoryPressure: ノードに十分の空きメモリがあるかどうか
DiskPressure: disk容量は十分にあるか
PIDPressure: PID namespace に十分なPIDの空きがあるかどうか
Ready: ここが unknown の場合 kubelet もしくは node 自体がダウンしている可能性がある
もし、kubelet に問題がある場合には対象ノードに対して ping を実行し、ノードがダウンしてないかどうか確認してください。
ノードがダウンしてない場合には対象ノードにログインし、kubelet のステータスを systemctl status kubelet コマンドで確認してください。
root@192-168-200-101-hybrid:~# systemctl status kubelet * kubelet.service - kubelet: The Kubernetes Node Agent Loaded: loaded (/lib/systemd/system/kubelet.service; enabled; vendor preset: enabled) Drop-In: /etc/systemd/system/kubelet.service.d `-10-kubeadm.conf Active: active (running) since Tue 2021-12-07 02:35:50 UTC; 1 weeks 5 days ago Docs: https://kubernetes.io/docs/home/ Main PID: 1921 (kubelet) Tasks: 66 (limit: 56402) Memory: 216.9M CGroup: /system.slice/kubelet.service `-1921 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.> Dec 16 08:16:32 192-168-200-101-hybrid.cisco.com kubelet[3394936]: 2021-12-16 08:16:32.806 [INFO][3394936] k8s.go 472: Wrote updated end> Dec 17 03:14:33 192-168-200-101-hybrid.cisco.com kubelet[1921]: I1217 03:14:33.818630 1921 topology_manager.go:219] [topologymanager]> Dec 17 03:14:33 192-168-200-101-hybrid.cisco.com kubelet[1921]: I1217 03:14:33.819253 1921 policy_static.go:229] [cpumanager] static > Dec 17 03:14:33 192-168-200-101-hybrid.cisco.com kubelet[1921]: I1217 03:14:33.819270 1921 topology_manager.go:219] [topologymanager]> Dec 17 03:34:46 192-168-200-101-hybrid.cisco.com kubelet[1921]: E1217 03:34:46.811334 1921 upgradeaware.go:357] Error proxying data f> Dec 19 00:45:57 192-168-200-101-hybrid.cisco.com kubelet[1921]: W1219 00:45:57.863222 1921 watcher.go:87] Error while processing even> Dec 19 00:45:57 192-168-200-101-hybrid.cisco.com kubelet[1921]: W1219 00:45:57.863816 1921 watcher.go:87] Error while processing even> Dec 19 00:45:57 192-168-200-101-hybrid.cisco.com kubelet[1921]: W1219 00:45:57.863848 1921 watcher.go:87] Error while processing even> Dec 19 00:45:57 192-168-200-101-hybrid.cisco.com kubelet[1921]: W1219 00:45:57.863864 1921 watcher.go:87] Error while processing even> Dec 19 00:45:57 192-168-200-101-hybrid.cisco.com kubelet[1921]: W1219 00:45:57.863887 1921 watcher.go:87] Error while processing even>
正常な状態は Active: active (running) となります。
default namespace の Pod について確認します。
root@192-168-200-101-hybrid:~# kubectl get pods NAME READY STATUS RESTARTS AGE alarms-0 1/1 Running 0 12d alarms-1 1/1 Running 0 13d alarms-2 1/1 Running 0 3d18h astackserver-7cc7b878c9-9xx4p 1/1 Running 0 13d cas-0 1/1 Running 0 13d cas-1 1/1 Running 0 12d cat-fp-deployment-manager-575bc4ccb5-zm2kt 1/1 Running 0 3d18h cat-inventory-0 1/1 Running 0 13d cat-inventory-1 1/1 Running 0 12d cat-restconf-0 1/1 Running 0 13d cat-restconf-1 1/1 Running 0 12d cat-service-overlay-0 1/1 Running 0 13d cat-service-overlay-1 1/1 Running 0 12d cat-ui-service-0 1/1 Running 0 12d cat-ui-service-1 1/1 Running 1 13d cw-clms-d49c9db58-cw4z6 1/1 Running 0 13d cw-ftp-0 1/1 Running 0 12d cw-ftp-1 1/1 Running 0 3d18h cw-ftp-2 1/1 Running 0 13d cw-geo-service-5cdfcf6594-rnrfx 1/1 Running 0 3d18h cw-grouping-service-7cdfcbdc54-bzj76 1/1 Running 2 13d cw-ipsec-49lc5 1/1 Running 2 34d cw-ipsec-85s5m 1/1 Running 0 2d22h cw-ipsec-n8tq5 1/1 Running 1 34d cw-proxy-5896bfc744-cnwd4 1/1 Running 8 13d cw-sftp-0 1/1 Running 0 12d cw-sftp-1 1/1 Running 0 13d cw-sftp-2 1/1 Running 0 3d18h cw-topo-visualization-0 1/1 Running 0 13d cw-topo-visualization-1 1/1 Running 0 12d cw-views-service-77d6854f7c-nn7mz 1/1 Running 0 13d dg-manager-0 1/1 Running 0 12d dg-manager-1 1/1 Running 0 13d docker-registry-7866fdc5d9-m4fq5 1/1 Running 0 13d engine-worker-0 1/1 Running 0 12d engine-worker-1 1/1 Running 0 13d engine-worker-2 1/1 Running 0 3d18h helios-6cb4cc8847-27l87 1/1 Running 0 3d18h magellan-68f497655c-76sqj 1/1 Running 8 13d nats-0 1/1 Running 33 13d nats-1 1/1 Running 14 12d nats-2 1/1 Running 0 3d18h neo4j-topo-svc-0 1/1 Running 0 12d neo4j-topo-svc-1 1/1 Running 0 13d neo4j-topo-svc-2 1/1 Running 0 3d18h node-orchestrator-6c97g 1/1 Running 1 34d node-orchestrator-hdllh 1/1 Running 0 2d22h node-orchestrator-hpvzv 1/1 Running 2 34d nso-connector-0 1/1 Running 0 13d nso-connector-1 1/1 Running 0 3d18h oam-0 1/1 Running 0 13d oam-1 1/1 Running 0 12d optical-mediator-0 1/1 Running 0 3d18h optical-mediator-1 1/1 Running 0 12d optical-topo-svc-0 1/1 Running 0 3d18h optical-topo-svc-1 1/1 Running 0 13d optima-bwod-596cfc8695-jhvlq 1/1 Running 0 3d18h optima-bwopt-7f4b764989-2bvpv 1/1 Running 0 3d18h optima-engine-0 1/1 Running 1 3d18h optima-engine-1 1/1 Running 0 9d optima-lcm-7fcdd9b6b8-b2pph 1/1 Running 0 2d20h optima-pce-dispatcher-6b8bc84c46-t2xgn 1/1 Running 0 3d18h optima-restconf-v1-7fdf95f8fc-jcsp4 1/1 Running 0 3d18h optima-restconf-v2-59fc66646b-stc4r 1/1 Running 0 3d18h optima-traffic-0 1/1 Running 0 12d optima-traffic-1 1/1 Running 0 13d optima-traffic-2 1/1 Running 0 3d18h optima-ui-service-7d4d7f6fc8-9c4xd 1/1 Running 0 3d18h robot-alerting-86c9b5c68f-twh7b 1/1 Running 0 13d robot-astack-influxdb-87cc46b7-kmbbj 1/1 Running 0 3d18h robot-astack-kapacitor-bf949f67f-9rccl 1/1 Running 0 13d robot-dlminvmgr-0 1/1 Running 0 12d robot-dlminvmgr-1 1/1 Running 0 13d robot-dlminvmgr-2 1/1 Running 0 3d18h robot-etcd-0 1/1 Running 0 13d robot-etcd-1 1/1 Running 0 12d robot-etcd-2 1/1 Running 0 3d18h robot-fleet-595f5ff57f-2xv24 1/1 Running 0 13d robot-kafka-0 1/1 Running 0 13d robot-kafka-1 1/1 Running 0 3d18h robot-kafka-2 1/1 Running 0 12d robot-postgres-0 1/1 Running 0 12d robot-postgres-1 1/1 Running 0 13d robot-postgres-2 1/1 Running 0 3d18h robot-topo-svc-0 1/1 Running 0 12d robot-topo-svc-1 1/1 Running 4 13d robot-topo-svc-2 1/1 Running 0 3d18h robot-ui-0 1/1 Running 0 12d robot-ui-1 1/1 Running 0 13d robot-ui-2 1/1 Running 0 3d18h robot-zookeeper-0 1/1 Running 0 12d robot-zookeeper-1 1/1 Running 0 13d robot-zookeeper-2 1/1 Running 0 3d18h tyk-0 1/1 Running 0 12d tyk-1 1/1 Running 8 13d tyk-2 1/1 Running 0 3d18h
kube-system namespace には Kubernetes 及び CNC のシステムコンポーネントが動作してます。以下のコマンドで正常性を確認してください。
root@192-168-200-101-hybrid:~# kubectl -n kube-system get pods NAME READY STATUS RESTARTS AGE calico-kube-controllers-545578d5-pvh8c 1/1 Running 0 13d calico-node-jfqj6 1/1 Running 2 34d calico-node-r778b 1/1 Running 1 34d calico-node-vwdz5 1/1 Running 0 2d22h coredns-99974df4f-8p85v 1/1 Running 0 13d coredns-99974df4f-hmcw4 1/1 Running 0 13d coredns-99974df4f-krwxf 1/1 Running 0 3d19h etcd-192-168-200-101-hybrid.cisco.com 1/1 Running 4 13d etcd-192-168-200-102-hybrid.cisco.com 1/1 Running 2 13d etcd-192-168-200-103-hybrid.cisco.com 1/1 Running 0 2d22h kube-apiserver-192-168-200-101-hybrid.cisco.com 1/1 Running 2 13d kube-apiserver-192-168-200-102-hybrid.cisco.com 1/1 Running 1 13d kube-apiserver-192-168-200-103-hybrid.cisco.com 1/1 Running 0 2d22h kube-controller-manager-192-168-200-101-hybrid.cisco.com 1/1 Running 4 13d kube-controller-manager-192-168-200-102-hybrid.cisco.com 1/1 Running 1 13d kube-controller-manager-192-168-200-103-hybrid.cisco.com 1/1 Running 0 2d22h kube-proxy-5dtnv 1/1 Running 1 34d kube-proxy-gx74b 1/1 Running 2 34d kube-proxy-kmkws 1/1 Running 0 2d22h kube-scheduler-192-168-200-101-hybrid.cisco.com 1/1 Running 5 13d kube-scheduler-192-168-200-102-hybrid.cisco.com 1/1 Running 3 13d kube-scheduler-192-168-200-103-hybrid.cisco.com 1/1 Running 0 2d22h robot-orch-7cf64978-8k2f8 1/1 Running 0 3d19h
これらすべてのPodの READY が 1/1 且つ STATUS が Running になっていることを確認します。
もしREADY/STATUSに問題がある場合には次の表を参考にトラブルシュートを実施します。
READY | STATUS | 状態 |
1/1 | Running | Podは正常に動作しています。 |
0/1 | CrashLoopBackOff | Podが起動しない、Containerのプロセスが終了して自動的に再起動している、livenessProbe によってContainerが再起動した等、様々な状態が考えられます。kubectl describe pod <pod-name> コマンドの Events: セクションで状態を確認して下さい。 |
0/1 | Running | Pod は起動したが Service に繋げられてない状態を意味します。通常は Pod が Running になり、readinessProbe が成功すると READY は直ぐに 1/1 となりますが、この状態で長期間スタックしている場合には readinessProbe が失敗している可能性があるため、kubectl describe pod <pod-name> コマンドの Events: セクションで状態を確認して下さい。 |
0/1 | ImagePullBackOff | Pod 内の Container の Image の pull に失敗しています。 kubectl describe pod <pod-name> コマンドの Events: セクションで pull に失敗したImageを特定して下さい。 |
0/1 | Pending | 通常この状態は一時的なステータスですが、長期間この状態でスタックしている場合には、Pod のノードへのスケジューリングが失敗している可能性があります。様々な原因が考えられますので、kubectl get node コマンドでノードの状態を確認するとともに、kubectl describe pod <pod-name> コマンドの Events: セクションで状態を確認して下さい。 |
もしREADY が 1/1 且つ STATUS が Running になってない場合には kubectl describe pods <pod-name> コマンドを実行してください。
Podの問題の原因は Events: 以下を確認してください。
root@192-168-200-101-hybrid:~# kubectl describe po cat-fp-deployment-manager-575bc4ccb5-zm2kt :: Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled <unknown> default-scheduler Successfully assigned default/cat-fp-deployment-manager-575bc4ccb5-zm2kt to 192-168-200-101-hybrid.cisco.com Warning FailedMount 4m6s kubelet, 192-168-200-101-hybrid.cisco.com Unable to attach or mount volumes: unmounted volumes=[cat-fp-deployment-manager-data-vol cat-fp-deployment-manager-log-vol cat-fp-deployment-manager-backup-vol rscatfp signal-cat-fp-deployment-manager demystiko-cat-fp-deployment-manager-nats tls-cat-fp-deployment-manager mystiko-internal-tls-cat-fp-deployment-manager cat-fp-deployment-manager robot-app-token-hlzdf cat-fp-deployment-manager-core-vol log-cat-fp-deployment-manager cat-fp-deployment-manager-showtech-vol showtech-cat-fp-deployment-manager cat-fp-deployment-manager-config-vol cat-fp-deployment-manager-common-vol mystiko-cat-fp-deployment-manager-nats], unattached volumes=[cat-fp-deployment-manager-data-vol cat-fp-deployment-manager-log-vol cat-fp-deployment-manager-backup-vol rscatfp signal-cat-fp-deployment-manager demystiko-cat-fp-deployment-manager-nats tls-cat-fp-deployment-manager mystiko-internal-tls-cat-fp-deployment-manager cat-fp-deployment-manager robot-app-token-hlzdf cat-fp-deployment-manager-core-vol log-cat-fp-deployment-manager cat-fp-deployment-manager-showtech-vol showtech-cat-fp-deployment-manager cat-fp-deployment-manager-config-vol cat-fp-deployment-manager-common-vol mystiko-cat-fp-deployment-manager-nats]: timed out waiting for the condition Warning FailedMount 3m51s kubelet, 192-168-200-101-hybrid.cisco.com MountVolume.SetUp failed for volume "cat-fp-deployment-manager-showtech-vol-pv" : mount failed: mount failed: exit status 1 Mounting command: systemd-run Mounting arguments: --description=Kubernetes transient mount for /var/lib/kubelet/pods/95a5aa5b-5180-423b-9431-9efac06e0828/volumes/kubernetes.io~glusterfs/cat-fp-deployment-manager-showtech-vol-pv --scope -- mount -t glusterfs -o auto_unmount,backup-volfile-servers=192.168.200.101:192.168.200.102:192.168.200.103,log-file=/var/lib/kubelet/plugins/kubernetes.io/glusterfs/cat-fp-deployment-manager-showtech-vol-pv/cat-fp-deployment-manager-575bc4ccb5-zm2kt-glusterfs.log,log-level=ERROR 192.168.200.101:glustervol1 /var/lib/kubelet/pods/95a5aa5b-5180-423b-9431-9efac06e0828/volumes/kubernetes.io~glusterfs/cat-fp-deployment-manager-showtech-vol-pv Output: Running scope as unit: run-r71dfb83ba51c4ce496522b10fa1cdc4c.scope Mount failed. Check the log file /var/lib/kubelet/plugins/kubernetes.io/glusterfs/cat-fp-deployment-manager-showtech-vol-pv/cat-fp-deployment-manager-575bc4ccb5-zm2kt-glusterfs.log for more details.
この例ではPodの Volume Mount に失敗しています。
各Podで動作しているコンテナのログについては各ノードの /mnt/cw_logfs ディレクトリに格納されています。
root@192-168-200-101-hybrid:~# ls /mnt/cw_logfs/ alarms cat-restconf cw-geo-service cw-topo-visualization grafana node-exporter optima-bwopt optima-restconf-v2 robot-astack-influxdb robot-kafka tyk astackserver cat-service-overlay cw-grouping-service cw-views-service helios node-orchestrator optima-engine optima-traffic robot-astack-kapacitor robot-postgres cas cat-ui-service cw-ipsec dg-manager magellan oam optima-lcm optima-ui-service robot-dlminvmgr robot-topo-svc cat-fp-deployment-manager cw-clms cw-proxy docker-registry nats optical-mediator optima-pce-dispatcher orchestrator robot-etcd robot-ui cat-inventory cw-ftp cw-sftp engine-worker neo4j-topo-svc optima-bwod optima-restconf-v1 robot-alerting robot-fleet robot-zookeeper
kubectl get po -o wide オプションでPodが動作しているノードを特定し、そのノード上でPodのログを確認して下さい。
検索バーにキーワード、フレーズ、または質問を入力し、お探しのものを見つけましょう
シスコ コミュニティをいち早く使いこなしていただけるよう役立つリンクをまとめました。みなさんのジャーニーがより良いものとなるようお手伝いします
下記より関連するコンテンツにアクセスできます