소개
이 문서에서는 CNDP(Cloud Native Deployment Platform) 설정의 시작 서버에서 클러스터 관리자를 복구하는 절차에 대해 설명합니다.
사전 요구 사항
요구 사항
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
- Cisco Subscriber SMI(Microservices Infrastructure)
- 5G CNDP 또는 SMI-Bare-Metal(BM) 아키텍처
- DRBD(분산 복제 블록 장치)
사용되는 구성 요소
이 문서의 정보는 다음 소프트웨어 및 하드웨어 버전을 기반으로 합니다.
- SMI 2020.02.2.35
- 쿠베르네테스 v1.21.0
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
배경 정보
SMI Cluster Manager란?
클러스터 관리자는 컨트롤 플레인 및 사용자 플레인 클러스터 구축의 초기 지점으로 사용되는 2노드 킵얼라이브 클러스터입니다. 단일 노드 Kubernetes 클러스터 및 전체 클러스터 설정을 담당하는 POD 집합을 실행합니다. 기본 클러스터 관리자만 활성 상태이며, 보조 관리자는 장애가 발생하거나 유지 보수를 위해 수동으로 작동 중지된 경우에만 인계받습니다.
인셉션 서버란?
이 노드는 기본 CM(Cluster Manager)의 라이프사이클 관리를 수행하며 여기서 Day0 Config를 푸시할 수 있습니다.
이 서버는 일반적으로 지역 단위로 구축되거나 최상위 오케스트레이션 기능(예: NSO)과 동일한 데이터 센터에 구축되며 일반적으로 VM으로 실행됩니다.
문제
클러스터 관리자는 DRBD(Distributed Replicated Block Device)가 있는 2노드 클러스터에서 호스팅되며 클러스터 관리자 기본 및 클러스터 관리자 보조 클러스터로 유지됩니다. 이 경우 UCS에서 OS를 초기화/설치하는 동안 클러스터 관리자 보조가 자동으로 전원 꺼짐 상태로 전환되며, 이는 OS가 손상되었음을 나타냅니다.
cloud-user@POD-NAME-cm-primary:~$ drbd-overview status
0:data/0 WFConnection Primary/Unknown UpToDate/DUnknown /mnt/stateful_partition ext4 568G 369G 170G 69%
유지 보수 절차
이 프로세스는 CM 서버에 OS를 재설치하는 데 도움이 됩니다.
호스트 식별
Cluster-Manager에 로그인하고 호스트를 식별합니다.
cloud-user@POD-NAME-cm-primary:~$ cat /etc/hosts | grep 'deployer-cm'
127.X.X.X POD-NAME-cm-primary POD-NAME-cm-primary
X.X.X.X POD-NAME-cm-primary
X.X.X.Y POD-NAME-cm-secondary
시작 서버에서 클러스터 세부 정보 확인
Inception 서버에 로그인하여 Deployer에 로그인하고 Cluster-Manager에서 hosts-IP로 클러스터 이름을 확인합니다.
Inception 서버에 성공적으로 로그인하면 여기에 표시된 대로 운영 센터에 로그인합니다.
user@inception-server: ~$ ssh -p 2022 admin@localhost
클러스터 관리자 SSH-IP에서 클러스터 이름을 확인합니다(ssh-ip = 노드 SSH IP 주소 = ucs-server cimc ip 주소).
[inception-server] SMI Cluster Deployer# show running-config clusters * nodes * k8s ssh-ip | select nodes * ssh-ip | select nodes * ucs-server cimc ip-address | tab
SSH
NAME NAME IP SSH IP IP ADDRESS
------------------------------------------------------------------------------
POD-NAME-deployer cm-primary - X.X.X.X 10.X.X.X ---> Verify Name and SSH IP if Cluster is part of inception server SMI.
cm-secondary - X.X.X.Y 10.X.X.Y
대상 클러스터의 컨피그레이션을 확인합니다.
[inception-server] SMI Cluster Deployer# show running-config clusters POD-NAME-deployer
서버에서 운영 체제를 지우려면 가상 드라이브를 제거하십시오.
영향받는 호스트의 CIMC에 연결하고 부트 드라이브를 지우고 가상 드라이브(VD)를 삭제합니다.
a) CIMC > Storage > Cisco 12G Modular Raid Controller > Storage Log > Clear Boot Drive
b) CIMC > Storage > Cisco 12G Modular Raid Controller > Virtual drive > Select the virtual drive > Delete Virtual Drive
클러스터 동기화 실행
시작 서버에서 클러스터 관리자에 대한 기본 클러스터 동기화를 실행합니다.
[inception-server] SMI Cluster Deployer# clusters POD-NAME-deployer actions sync run debug true
This will run sync. Are you sure? [no,yes] yes
message accepted
[inception-server] SMI Cluster Deployer#
기본 cluster-sync가 실패할 경우 전체 재설치를 위해 force-vm 재구축 옵션을 사용하여 cluster-sync를 수행합니다(Cluster-sync 활동을 완료하는 데 최대 45-55분이 소요될 수 있으며, 이는 클러스터에 호스팅된 노드 수에 따라 달라짐).
[inception-server] SMI Cluster Deployer# clusters POD-NAME-deployer actions sync run debug true force-vm-redeploy true
This will run sync. Are you sure? [no,yes] yes
message accepted
[inception-server] SMI Cluster Deployer#
클러스터 동기화 로그 모니터링
[inception-server] SMI Cluster Deployer# monitor sync-logs POD-NAME-deployer
2023-02-23 10:15:07.548 DEBUG cluster_sync.POD-NAME: Cluster name: POD-NAME
2023-02-23 10:15:07.548 DEBUG cluster_sync.POD-NAME: Force VM Redeploy: true
2023-02-23 10:15:07.549 DEBUG cluster_sync.POD-NAME: Force partition Redeploy: false
2023-02-23 10:15:07.549 DEBUG cluster_sync.POD-NAME: reset_k8s_nodes: false
2023-02-23 10:15:07.549 DEBUG cluster_sync.POD-NAME: purge_data_disks: false
2023-02-23 10:15:07.549 DEBUG cluster_sync.POD-NAME: upgrade_strategy: auto
2023-02-23 10:15:07.549 DEBUG cluster_sync.POD-NAME: sync_phase: all
2023-02-23 10:15:07.549 DEBUG cluster_sync.POD-NAME: debug: true
...
...
...
성공적인 cluster-sync를 통해 서버가 다시 프로비저닝되고 설치됩니다.
PLAY RECAP *********************************************************************
cm-primary : ok=535 changed=250 unreachable=0 failed=0 skipped=832 rescued=0 ignored=0
cm-secondary : ok=299 changed=166 unreachable=0 failed=0 skipped=627 rescued=0 ignored=0
localhost : ok=59 changed=8 unreachable=0 failed=0 skipped=18 rescued=0 ignored=0
Thursday 23 February 2023 13:17:24 +0000 (0:00:00.109) 0:56:20.544 *****. ---> ~56 mins to complete cluster sync
===============================================================================
2023-02-23 13:17:24.539 DEBUG cluster_sync.POD-NAME: Cluster sync successful
2023-02-23 13:17:24.546 DEBUG cluster_sync.POD-NAME: Ansible sync done
2023-02-23 13:17:24.546 INFO cluster_sync.POD-NAME: _sync finished. Opening lock
확인
영향을 받는 클러스터 관리자를 확인할 수 있으며 기본 및 보조 클러스터 관리자의 DRBD 개요가 최신 상태인지 확인합니다.
cloud-user@POD-NAME-cm-primary:~$ ping X.X.X.Y
PING X.X.X.Y (X.X.X.Y) 56(84) bytes of data.
64 bytes from X.X.X.Y: icmp_seq=1 ttl=64 time=0.221 ms
64 bytes from X.X.X.Y: icmp_seq=2 ttl=64 time=0.165 ms
64 bytes from X.X.X.Y: icmp_seq=3 ttl=64 time=0.151 ms
64 bytes from X.X.X.Y: icmp_seq=4 ttl=64 time=0.154 ms
64 bytes from X.X.X.Y: icmp_seq=5 ttl=64 time=0.172 ms
64 bytes from X.X.X.Y: icmp_seq=6 ttl=64 time=0.165 ms
64 bytes from X.X.X.Y: icmp_seq=7 ttl=64 time=0.174 ms
--- X.X.X.Y ping statistics ---
7 packets transmitted, 7 received, 0% packet loss, time 6150ms
rtt min/avg/max/mdev = 0.151/0.171/0.221/0.026 ms
cloud-user@POD-NAME-cm-primary:~$ drbd-overview status
0:data/0 Connected Primary/Secondary UpToDate/UpToDate /mnt/stateful_partition ext4 568G 17G 523G 4%
영향을 받는 클러스터 관리자가 네트워크에 성공적으로 설치 및 다시 프로비저닝되었습니다.
2.2 클러스터 관리자 SSH-IP에서 클러스터 이름을 확인합니다.
[inception-server] SMI Cluster Deployer# show running-config clusters * nodes * k8s ssh-ip | select nodes * ssh-ip | select nodes * ucs-server cimc ip-address | 탭
SSH
이름 IP SSH IP IP 주소
------------------------------------------------------------------------------
POD-NAME cm-primary - 192.X.X 10.192.X.X
cm 보조 - 192.X.X.Y 10.192.X.Y
*SSH IP = 노드 SSH IP
*IP ADDRESS = ucs-server cimc ip-address
2.3 대상 클러스터의 구성을 확인합니다.
[inception-server] SMI Cluster Deployer# show running-config clusters POD-NAME Inception 서버에 로그인하고 Deployer에 로그인한 다음 Cluster-Manager에서 hosts-IP로 cluster-name을 확인합니다. Inception 서버에 로그인하여 Deployer에 로그인하고 Cluster-Manager에서 hosts-IP로 cluster-name을 확인합니다.