반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- tekton
- Kubernetes 인증
- eBPF
- kubernetes operator
- Kubernetes
- knative
- 카오스 엔지니어링
- keda
- CI/CD
- MLflow
- CANARY
- Model Serving
- seldon core
- mlops
- Kopf
- Kubeflow
- Litmus
- Pulumi
- xdp
- blue/green
- Continuous Deployment
- argocd
- nginx ingress
- operator
- gitops
- opentelemetry
- Argo
- 오퍼레이터
- opensearch
- serving
Archives
- Today
- Total
Kubernetes 이야기
nvidia k8s device driver 및 dcgm 설치 본문
반응형
Kubernetes에서 nvidia gpu 를 사용하고, prometheus로 gpu 모니터링을 위한 절차를 알아보자.
설치 전 nvidia driver는 노드에 설치되어 있어야 한다.
설치
1. container-toolkit 설치
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
sudo yum-config-manager --enable nvidia-container-toolkit-experimental
sudo yum install -y nvidia-container-toolkit
설치 후 설정
sudo nvidia-ctk runtime configure --runtime=containerd
sudo systemctl restart containerd
2, kubernetes에 GPU 활성화
$ kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.15.0/deployments/static/nvidia-device-plugin.yml
테스트
$ cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
name: gpu-pod
spec:
restartPolicy: Never
containers:
- name: cuda-container
image: nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda10.2
resources:
limits:
nvidia.com/gpu: 1 # requesting 1 GPU
tolerations:
- key: nvidia.com/gpu
operator: Exists
effect: NoSchedule
EOF
$ k logs -f -n default gpu-pod
[Vector addition of 50000 elements]
Copy input data from the host memory to the CUDA device
CUDA kernel launch with 196 blocks of 256 threads
Copy output data from the CUDA device to the host memory
Test PASSED
Done
모니터링
NVIDIA DCGM은 대규모 Linux 기반 클러스터 환경에서 NVIDIA GPU를 관리하고 모니터링하기 위한 도구 세트이다.
$ helm repo add gpu-helm-charts https://nvidia.github.io/dcgm-exporter/helm-charts
$ helm repo update
$ helm install \
--generate-name \
gpu-helm-charts/dcgm-exporter -n kube-system
이렇게 설치하면 dcgm을 위한 servicemonitor가 생성된다.
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
annotations:
meta.helm.sh/release-name: dcgm-exporter-1715426946
meta.helm.sh/release-namespace: kube-system
generation: 1
labels:
#app.kubernetes.io/component: dcgm-exporter
#app.kubernetes.io/instance: dcgm-exporter-1715426946
#app.kubernetes.io/managed-by: Helm
#app.kubernetes.io/name: dcgm-exporter
#app.kubernetes.io/version: 3.4.1
#helm.sh/chart: dcgm-exporter-3.4.1
release: prometheus
name: dcgm-exporter-1715426946
namespace: kube-system
spec:
endpoints:
- interval: 15s
path: /metrics
port: metrics
relabelings: []
namespaceSelector:
matchNames:
- kube-system
selector:
matchLabels:
app.kubernetes.io/component: dcgm-exporter
app.kubernetes.io/instance: dcgm-exporter-1715426946
app.kubernetes.io/name: dcgm-exporter
여기서 label -> release: prometheus 를 설정한다. ( 필자는 https://github.com/prometheus-community/helm-charts/ 차트를 이용하여 설치한 helm install 이름을 사용하였다. )
참고
https://github.com/NVIDIA/k8s-device-plugin
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
반응형
'Kubernetes > 일반' 카테고리의 다른 글
OpenSearch 및 Fluent Bit로 Kubernetes Event 및 Container 로그 저장하기 (0) | 2024.05.06 |
---|---|
kr8s - Kubernetes용 Python 클라이언트 라이브러리 (0) | 2023.12.31 |
kubernetes apiserver 를 통해 Cluster 정보 조회 (1) | 2023.12.25 |
Strimzi로 Kubernetes에 Apache Kafka 설치 (1) | 2023.12.10 |
Kubernetes Gateway API (0) | 2023.12.10 |
Comments