반응형

쿠버네티스 31

GPU 파드 생성 시 겪었던 오류 (nvidia-container-runtime)

오류: DGX 서버를 워커 노드로 사용하여 GPU 카드를 할당하여 파드를 생성하는데, 아래와 같은 에러가 나오면서 파드가 정상적으로 생성이 되질 않았습니다.failed to create containerd task: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #0: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy'nvidia-container-cli: device err..

쿠버네티스 2024.11.11

쿠버네티스 특정 노드에만 파드 생성 하기

k8s 클러스터를 네임스페이스 별로 사용자에게 할당해서 자원을 관리하는데,  "A" 라는 네임스페이스에서 파드를 생성 했을 때, worker-node001 노드에서만 파드 생성이 필요한 적이 있어서 사용 했던 방법입니다. 먼저 노드에 label을 추가해줍니다.# kubectl label node ex) kubectl label node worker-node001 project=test 그리고 네임스페이스에서 "annotate"를 설정해줍니다.# kubectl annotate namespace cheduler.kubernetes.io/node-selector=""ex) kubectl annotate namespace test-namespace cheduler.kubernetes.io/node-selec..

쿠버네티스 2024.11.04

쿠버네티스 Ingress 란?

Ingress 란? 외부 클라이언트가 k8s 클러스터 내부의 서비스에 접근할 수 있도록 도와주는 API 객체 입니다. Ingress의 주요 기능을 알아보면URL 및 호스트 기반 라우팅URL 경로에 따라 다른 서비스로 라우팅을 할 수 있습니다.TLS(HTTPS) 지원TLS 인증서를 설정하여 HTTPS 트래픽을 처리할 수 있습니다.로드밸런싱로드 밸런싱을 통해 트래픽을 여러 파드로 분산시킬 수 있습니다.Ingress는 애플리케이션 계층 (HTTP)에서 작동하여 Service가 할 수 없는 쿠키 기반 세션 어피니티 등과 같은 기능을 제공합니다.Ingress를 설치하여 실습을 통해 좀 더 자세하게 알아보겠습니다. 우선 Ingress를 사용하려면 Ingress-Controller가 필요합니다. 저는 Helm 차트를..

쿠버네티스 Service 란?

Service 란?Pod는 클러스터 내에서 동적으로 생성되고 삭제될 수 있기 때문에쿠버네티스 Service는 쿠버네티스 클러스터 내에서 파드들과 안정적으로 다른 클라이언트들과 통신할 수 있도록 사용되는 리소스 입니다. 이제 서비스에 대해 좀 더 자세히 알아보도록 하겠습니다.Service 생성서비스는 파드들과 연결되어 클라이언트들과 통신을 하는데, 파드들과 어떻게 연결이 될까요? 이에 필요한 것이 Label Selector 입니다. 레플리카컨트롤러, 디플로이먼트, 파드를 생성을 할 때, Label을 생성을 해주어야해당 Label을 Service가 보고 연결이 됩니다. yaml 파일을 보면서 알아보겠습니다.파드에서 label을 생성을 해주면, 서비스에서 해당 lable을 selector로 지정을 해주면 연결..

쿠버네티스 Job 리소스 란?

Job 이란?작업을 완료한 후에, 종료되는 태스크를 실행하려는 경우가 있을 수 있습니다. 이럴 때 사용되는 것이 Job 리소스 입니다. Job은 파드의 컨테이너 내부에서 실행 중인 프로세스가 정상적으로 완료가 되면, 컨테이너를 다시 시작하지 않는 파드로 실행할 수 있습니다. Job은 레플리카셋과 동일하게 파드가 동작 중인 노드에서 문제가 생기면, 다른 노드로 스케줄링이 됩니다. ex)  그리고 컨테이너 내의 프로세스에서 장애가 발생했을 경우에도 Job에서 컨테이너 재시작을 할지 말지 정책도 정해 줄 수있습니다. 이제 실제 예시를 한번 보겠습니다.  Job 실습Job 매니페스트를 확인해보면 아래와 같습니다.apiVersion: batch/v1kind: Jobmetadata: name: batch-jobs..

kubespray로 k8s 설치

이번엔 kubespray를 사용해서 k8s 클러스터를 구성해보겠습니다. 구성환경저는 Master Node 3대, Worker Node 3대로 구성을 하였습니다. 각 Node들의 OS는 모두 Ubuntu 20.04로 진행하였습니다. 모든 과정의 진행은 Master1번 노드로 사용될 노드에서 진행하였습니다. 사전 준비먼저 Ubuntu 20.04는 기본적으로 python3.8이 설치가 되어있습니다. ansible 9.11.0 버전을 설치하기 위해선 python3.10 이상이여야 합니다. 따라서 python3.10 버전을 먼저 설치 해줍니다.# apt update# apt install -y software-properties-common# add-apt-repository ppa:deadsnakes/ppa# ..

쿠버네티스 2024.10.30

MetalLB 설치 오류 해결 (kyverno 정책)

오류 현상MetalLB 공식 홈페이지에 나와있는 설치 방법대로 설치를 하던 도중아래와 같은 에러가 나왔습니다. Error from server: error when creating "https://raw.githubusercontent.com/metallb/metallb/v0.14.8/config/manifests/metallb-native.yaml": admission webhook "validate.kyverno.svc-fail" denied the request:resource DaemonSet/metallb-system/speaker was blocked due to the following policiesdisallow-capabilities: autogen-adding-capabilities..

쿠버네티스 2024.10.15

NFS를 사용하여 k8s에서 PV 동적 할당 해보기

이번에 해볼 것은 StorageClass를 NFS 서버로 정의하여 PV를 동적으로 할당 해보도록 하겠습니다.  먼저 Helm 차트를 사용하여 nfs-provisioner를 설치해줍니다. 1. 네임스페이스를 새로 생성# kubectl create namespace nfs-provisioner 2. Helm repo 등록# helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner 3. values.yaml 파일 수정(https://artifacthub.io/packages/helm/nfs-subdir-external-provisioner/nfs-subdir-exter..

쿠버네티스 2024.10.11

Istio 설치

이번에는 Istio 설치를 해보겠습니다.Istio란?Istio는 서비스 메쉬(Service Mesh)로, 클라우드 네이티브 애플리케이션에서 마이크로서비스 간의 통신을 쉽게 관리할 수 있도록 돕는 오픈 소스 입니다. Istio는 주로 Kubernetes 환경에서 사용되며, 다음과 같은 기능을 제공합니다. 트래픽 관리: 마이크로서비스 간의 네트워크 트래픽을 제어하고 라우팅하는 기능을 제공합니다. 이를 통해 A/B 테스트, 카나리 배포, 서비스 간 로드 밸런싱 등을 쉽게 할 수 있습니다. 보안: 서비스 간 통신을 자동으로 암호화(TLS)하고, 인증 및 권한 부여를 관리합니다. 또한 서비스 간의 보안 정책을 중앙에서 관리할 수 있게 해줍니다. 관찰 가능성(Observability): 마이크로서비스 간의 트래픽에..

쿠버네티스 2024.09.27

쿠버네티스 대시보드 생성 및 접속

쿠버네티스 대시보드 생성# kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.6.1/aio/deploy/recommended.yaml  그리고 저는 metallb를 사용하고 있어서 서비스 type을 LoadBalancer로 변경 하였습니다. # kubectl edit service -n kubernetes-dashboard kubernetes-dashboard  그리고 LoadBalancer의 IP로 접속을 하면 토큰, kubeconfig 방식 중 하나로 로그인 하도록 되어있습니다.저는 Token 방식으로 진행하였습니다.우선 ServiceAccount 부터 생성을 해줍니다.# vim serviceaccount.yamlap..

쿠버네티스 2024.08.06
반응형