Загружаем каталог…
Загружаем каталог…
네. 이 정도 수량이면 앞서의 “소규모 K8s + 몇 개의 특수 노드”가 아니라, 96대급 AI/HPC Kubernetes 인프라 로 설계하는 편이 맞습니다. 사진의 HW 사양과 새로 알려주신 수량을 합치면 GPU 12대 / AIStor Storage 30대 / Compute 60대 = 총 102대 입니다. 여기서 Compute 5대를 Control Plane/infra 용도로 전용하면 5 CP/Infra + 55 Compute + 12 GPU + 30 Storage 구조를 1차 권고안으로 잡겠습니다. 권장 아키텍처 ┌─────────────────────────────┐ │ Kubernetes Cluster │ │ API VIP / LB │ └──────────────┬──────────────┘ │ ┌─────────────────────┴──────────────────────┐ │ Control / Infra Plane │ │ │ │ Compute #01 ~ #05 │ │ K8s Control Plane + etcd + Infra │ │ 5 Nodes │ └─────────────────────┬──────────────────────┘ │ 100GbE Kubernetes Fabric │ ┌────────────────────────┼──────────────────────────┐ │ │ │ ▼ ▼ ▼ ┌────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ GPU Pool │ │ Compute Pool │ │ AIStor Pool │ │ Dell XE9780 │ │ HPE DL380 G12 │ │ Lenovo SR650 V4│ │ │ │ │ │ │ │ 12 nodes │ │ 55 nodes │ │ 30 nodes │ │ B300 × 96 │ │ 5,280 cores │ │ 22.12 PB RAW │ │ RAM 24 TB │ │ RAM 55 TB │ │ 720 NVMe │ │ NDR400 ×4/node │ │ 100GbE ×4/node │ │ NDR400 ×2/node │ └───────┬────────┘ └─────────────────┘ └───────┬─────────┘ │ │ │ NDR400 AI Fabric │ └───────────────────────┬──────────────────────────┘ │ GPU ↔ AIStor RDMA Path ┌────────────────────────────────┐ │ Dell PowerScale F710 ×5 │ │ External Shared File Storage │ │ ~1.536 PB RAW │ └────────────────────────────────┘ 이 구성을 기본안으로 추천합니다. 1. 전체 자원을 다시 계산하면 GPU Pool은 Dell XE9780 12대이므로, 12 Nodes CPU : 128 cores/node × 12 = 1,536 physical cores RAM : 2 TB × 12 = 24 TB GPU : B300 × 8 × 12 = 96 × B300 Local NVMe: 15.36 TB × 12 = 184.32 TB NDR400: 4 ports × 12 = 48 × 400G ports 입니다. 즉 96 GPU 규모의 B300 클러스터 입니다. 이 정도부터는 Kubernetes보다 오히려 GPU Fabric/NCCL topology 설계가 전체 성능을 좌우 할 가능성이 큽니다. Storage Pool은 더 큽니다. Lenovo SR650 V4 × 30 CPU 128 cores × 30 = 3,840 cores RAM 768 GB × 30 = 23.04 TB NVMe 30.72 TB × 24 × 30 = 22,118.4 TB ≈ 22.12 PB RAW NVMe 수 24 × 30 = 720 NVMe NDR400 2 × 30 = 60 × 400G ports 100GbE 4 × 30 = 120 × 100G ports AIStor로 쓰기에 상당히 큰 규모입니다. Compute 60대는, 96 cores × 60 = 5,760 physical cores RAM 1 TB × 60 = 60 TB Local NVMe 15.36 TB × 60 = 921.6 TB 100GbE 4 × 60 = 240 × 100G ports 입니다. 따라서 전체적으로 대략 11,136 CPU physical cores + 96 B300 GPU + 107TB RAM + AIStor 22.1PB raw + PowerScale 1.54PB raw 규모가 됩니다. 2. K8s는 우선 “1개 Cluster”를 추천 처음부터 GPU/Compute/Storage를 Kubernetes Cluster 3개로 나누지는 않겠습니다. 일단: One Kubernetes Cluster │ ┌────────────────┼────────────────┐ │ │ │ GPU Pool Compute Pool Storage Pool 12 nodes 55 nodes 30 nodes 형태로 시작하는 것을 추천합니다. 총 Node 수가 100여 대 수준이라 Kubernetes 자체가 감당하기 어려운 규모가 아닙니다. 대신 Node Pool / Label / Taint / RuntimeClass / NetworkAttachmentDefinition 등을 이용해서 논리적으로 완전히 분리 합니다. 다만 향후 운영 조직/업그레이드 주기/장애 도메인을 Storage와 AI Compute에서 완전히 독립시켜야 한다면 AI Kubernetes 와 AIStor Kubernetes 를 2개 클러스터로 분리하는 안도 가치가 있습니다. 저는 1-cluster를 기본안, 2-cluster를 비교안 으로 PoC에서 검증하겠습니다. 3. Control Plane은 Compute에서 5대를 빼겠습니다 60대 중 5대를 Control Plane 전용으로 지정 하는 안을 추천합니다. HPE DL380 Gen12 cp01 cp02 cp03 cp04 cp05 5대 모두: kube-apiserver kube-controller-manager kube-scheduler etcd 를 돌리는 stacked etcd 구성이 가장 단순합니다. Kubernetes는 HA Control Plane에서 3대 이상 및 홀수 구성을 권장하고, stacked-etcd와 external-etcd 두 topology를 지원합니다. Kubernetes 여기서는 100여 Node 규모인데 HPE 서버가 충분하므로 5개 Control Plane이면 좋습니다. API VIP │ ┌─────────┴─────────┐ │ L4 LoadBalancer │ └─────────┬─────────┘ │ ┌──────┬───────┼───────┬──────┐ ▼ ▼ ▼ ▼ ▼ CP01 CP02 CP03 CP04 CP05 │ │ │ │ │ etcd etcd etcd etcd etcd Control Plane에는 일반 workload를 배치하지 않습니다. node-role.kubernetes.io/control-plane=:NoSchedule 을 유지합니다. External etcd 3대를 별도로 빼는 것은 이 규모에서는 굳이 필요하지 않다고 봅니다. Kubernetes 공식 문서 역시 stacked topology가 infrastructure가 적게 필요하고 external etcd는 별도 호스트가 필요하다고 설명합니다. Kubernetes 4. Compute 55대는 두 종류로 논리적으로 나누는 것을 추천 남은 HPE 55대를 전부 똑같이 쓰기보다는 논리적인 Pool을 둡니다. 예를 들면: Compute 55 ├── Infra/System Pool 5 │ └── General Compute Pool 50 Infra Pool에는: CoreDNS Ingress Registry Monitoring Prometheus Grafana Loki OpenTelemetry Argo CD Operators Controllers Job scheduler components AI platform services vLLM routing / gateway 같은 것들을 배치합니다. 그러면 B300/AIStor에 Kubernetes 관리 workload가 침범하지 않습니다. 물리적으로는 동일한 HPE이므로 장애가 생기면 Compute Pool에서 쉽게 대체할 수도 있습니다. 5. GPU Node는 완전히 격리 12대 XE9780에는 다음 정도의 Label을 권합니다. node-role.kubernetes.io/gpu=true accelerator=nvidia-b300 gpu-count=8 gpu-platform=hgx-b300 network-fabric=ndr400 local-storage=nvme 그리고 반드시 Taint: dedicated=gpu:NoSchedule 를 적용합니다. 결과적으로 GPU workload만 toleration을 가지고 들어옵니다. GPU01 B300 ×8 GPU02 B300 ×8 ... GPU12 B300 ×8 = 96 B300 NVIDIA GPU Operator를 설치하여 driver/device plugin/DCGM 등의 GPU lifecycle을 Kubernetes에서 관리하는 방향으로 가겠습니다. 6. Storage 30대 역시 완전 전용 Pool 여기도: node-role.kubernetes.io/aistor=true storage=aistor disk=nvme-gen5 rdma=true 와 dedicated=aistor:NoSchedule 을 사용합니다. 따라서: ST01 ├ NVMe01 ├ ... └ NVMe24 ... ST30 ├ NVMe01 ├ ... └ NVMe24 총 720 NVMe 가 AIStor 전용 자원이 됩니다. 여기에는 일반 Kubernetes workload를 절대 배치하지 않는 것을 원칙으로 잡겠습니다. 7. Network는 K8s Network와 AI Data Network를 분리 이게 이번 설계에서 가장 중요한 부분 중 하나 입니다. 저라면 최소 3-plane으로 나눕니다. 1 Management 2 Kubernetes / Service / Storage Ethernet 3 AI High-Speed RDMA Fabric 개념적으로: ┌── Management Network All Nodes ────────┤ ├── 100GbE Service/Data Network │ └── NDR400 AI Fabric ▲ │ GPU + AIStor Management Network BMC부터 분리합니다. OOB/BMC ├ Dell iDRAC ├ Lenovo XCC ├ HPE iLO ├ Switch management └ PowerScale management 가능하면 별도 물리 switch/VLAN으로 격리합니다. OS Management도 별도 VLAN/Subnet을 두겠습니다. 8. 100GbE Ethernet Fabric 100GbE는 Kubernetes의 기본 IP Network 로 사용합니다. 100GbE Ethernet Fabric │ ┌─────────────────┼─────────────────┐ │ │ │ GPU 12 Compute 60 AIStor 30 │ │ │ └─────────────────┼─────────────────┘ │ PowerScale 여기로: Kubernetes API CNI primary network Pod-to-Pod Service traffic Ingress/Egress Monitoring Image pull PowerScale access AIStor S3 TCP 를 보냅니다. 즉 NDR가 죽어도 Kubernetes 자체는 정상적으로 살아 있어야 합니다. 이 원칙이 중요합니다. 9. NDR400은 완전히 별도의 AI Fabric 그리고: GPU Node ×12 │ │ NDR400 ×4 │ ▼ ┌────────────────────────────┐ │ │ │ NDR400 Fabric │ │ │ └────────────────────────────┘ ▲ │ NDR400 ×2 │ AIStor Node ×30 로 구성합니다. 이 Fabric의 목적은: GPU ↔ GPU GPU ↔ AIStor AIStor ↔ AIStor 고속 통신입니다. GPU 쪽만 해도: 12 × 4 × 400G = 19.2 Tbps 의 endpoint bandwidth가 있습니다. Storage 쪽은: 30 × 2 × 400G = 24 Tbps 입니다. 따라서 이 시스템은 NDR Fabric switch topology와 oversubscription 설계가 상당히 중요 합니다. 10. NDR Fabric은 Rail 방식으로 설계하는 것을 우선 검토 XE9780의 4개 NDR 포트를 단순히 아무 switch에 연결하지 않고, GPU topology와 NIC affinity를 확인하여 rail을 구성하는 방향을 추천합니다. 개념적으로: GPU NODE GPU 0/1 ─ NIC0 ─── Rail A GPU 2/3 ─ NIC1 ─── Rail B GPU 4/5 ─ NIC2 ─── Rail C GPU 6/7 ─ NIC3 ─── Rail D 처럼 보고, Rail A Rail B Rail C Rail D │ │ │ │ GPU01 ─────────┼────────────┼────────────┼────────────┤ GPU02 ─────────┼────────────┼────────────┼────────────┤ ... │ │ │ │ GPU12 ─────────┼────────────┼────────────┼────────────┤ 형태를 검토하겠습니다. 단, 실제 XE9780 B300의 GPU↔NIC PCIe/NVLink affinity를 확인한 뒤 rail을 확정해야 합니다. 논리적인 4-port 균등분배만 보고 케이블링하면 안 됩니다. 11. AIStor의 NDR 2포트도 Dual Fabric을 적극 활용 AIStor 서버에는 NDR400이 2개 있습니다. 따라서: Storage01 ├ NDR0 ─ Fabric/Rail A └ NDR1 ─ Fabric/Rail B Storage02 ├ NDR0 ─ Fabric/Rail A └ NDR1 ─ Fabric/Rail B ... Storage30 형태가 좋습니다. AIStor는 현재 Kubernetes Operator에서 RDMA object-data path를 공식 지원 하고, multi-NIC에서는 노드의 fabric 주소를 별도로 지정하는 구성도 지원합니다. MinIO AIStor Documentation 즉 이 장비 구성은 상당히 재미있게도 B300 │ │ GPUDirect/RDMA ▼ ConnectX-7 │ │ NDR400 Fabric ▼ ConnectX-7 │ ▼ AIStor │ ▼ Gen5 NVMe ×720 라는 데이터 경로를 목표로 설계할 수 있습니다. NVIDIA도 bare-metal Kubernetes에서 GPUDirect RDMA를 지원하며 GPU Operator와 Network Operator를 함께 사용하는 구성을 제공합니다. NVIDIA Docs 12. Kubernetes Network는 Primary + Secondary Network 구조 그래서 Kubernetes 내부에서는 Multus/secondary network 계열 구조 가 필요합니다. Pod 관점에서는: AI Training Pod │ ├── eth0 │ │ │ └── Kubernetes CNI │ 100GbE │ └── net1/net2... │ └── RDMA │ NDR400 가 됩니다. 즉 Kubernetes CNI 자체를 InfiniBand로 돌리는 게 아닙니다. Primary Network = Ethernet Secondary high-performance network = NDR/RDMA 입니다. NVIDIA Network Operator는 바로 이런 Kubernetes secondary network와 RDMA/GPUDirect RDMA 구성 요소를 관리하는 용도로 제공됩니다. NVIDIA Docs 13. CNI는 Cilium을 우선 검토하겠습니다 Primary CNI 후보는 저는 Cilium 을 1순위로 놓겠습니다. 구조는: Primary CNI │ Cilium │ 100GbE Secondary │ Multus / NVIDIA Network Operator │ SR-IOV / Host Device / RDMA │ NDR400 정도로 설계합니다. 특히 여기서 Primary CNI가 AI data path를 담당하도록 만들 필요가 없습니다. RDMA/NCCL/S3 고속 path는 secondary network로 우회시키기 때문에 CNI의 역할이 명확해집니다. 14. 100GbE도 이중화해서 사용 GPU 서버는 100GbE 2포트, Compute/Storage는 4포트이므로 단일 NIC/스위치 의존은 피하겠습니다. 예를 들어: Leaf A Leaf B │ │ 100GbE 100GbE │ │ └────── Node ─────┘ 형태입니다. Compute/Storage의 추가 port는 Storage/Data network 분리 여부에 따라 활용합니다. 최종적으로는: Ethernet Fabric A/B Leaf Leaf │ │ ┌─────┴─────────────┴─────┐ │ │ Kubernetes Storage /Service /Data 를 검토합니다. 100G 4포트가 있다고 무조건 400G LAG를 만드는 것보다는 traffic class와 failure domain을 먼저 정의 하는 것이 좋습니다. 15. PowerScale은 Kubernetes 밖 PowerScale F710 ×5는 지금처럼 Kubernetes Node로 만들지 않습니다. Kubernetes │ │ CSI / NFS ▼ PowerScale F710 ×5 External storage입니다. 용도는: Shared Dataset Home / Workspace AI source dataset Persistent filesystem Archive/intermediate data 등으로 두겠습니다. 반면 AIStor는: S3 Object Dataset Model artifacts Checkpoint high-throughput object access 로 역할을 명확하게 나눕니다. 16. 전체 Storage hierarchy 그러면 상당히 좋은 계층이 만들어집니다. Capacity / Sharing ▲ PowerScale Shared Dataset │ │ AIStor 22.1 PB RAW │ │ GPU Local NVMe 184 TB RAW │ │ B300 HBM / KV cache ▼ Performance Compute에도 총 약 922TB Local NVMe 가 있기 때문에 필요하다면 별도의 distributed cache / ephemeral storage 계층으로 활용할 수 있습니다. 다만 처음부터 Ceph 같은 또 하나의 storage system을 여기에 넣지는 않겠습니다. 이미 AIStor와 PowerScale이라는 두 개의 강력한 Storage Tier가 있기 때문입니다. 17. 최종 Node Pool 따라서 최종 Kubernetes inventory를 이렇게 잡겠습니다. Pool HW 수량 역할 Control Plane HPE DL380 G12 5 K8s + etcd Infra HPE DL380 G12 5 Monitoring/Ingress/Registry/Operators Compute HPE DL380 G12 50 CPU workload GPU Dell XE9780 12 B300 ×96 Storage Lenovo SR650 V4 30 AIStor, 22.1PB raw External NAS PowerScale F710 5 Shared FS 즉 Kubernetes Node는 102대 이고, PowerScale 5대는 외부 Storage입니다. 18. 논리 아키텍처를 한 장으로 합치면 Users / AI Platform │ Ingress/LB │ ┌─────────────▼──────────────┐ │ Kubernetes Cluster │ │ 102 Nodes │ └─────────────┬──────────────┘ │ ┌───────────────────────┼────────────────────
То, что RADAR обнаружил и классифицировал для этой возможности. Это опубликованный источником текст, а не подтверждение, что предложение ещё действует.
26O05g. 네. 이 정도 수량이면 앞서의 “소규모 K8s + 몇 개의 특수 노드”가 아니라, 96대급 AI/HPC Kubernetes 인프라 로 설계하는 편이 맞습니다. 사진의 HW 사양과 새로 알려주신 수량을 합치면 GPU 12대 / AIStor Storage 30대 / Compute 60대 = 총 102대 입니다. 여기서 Compute 5대를 Control Plane/infra 용도로 전용하면 5 CP/Infra + 55 Compute + 12 GPU + 30 Storage 구조를 1차 권고안으로 잡겠습니다. 권장 아키텍처 ┌─────────────────────────────┐ │ Kubernetes Cluster │ │ API VIP / LB │…
Открыть источник