반응형

2024/11 10

쿠버네티스 Downward API 란?

Downward API 란?애플리케이션이 쿠버네티스 리소스에 대한 메타데이터 및 상태 정보를액세스할 수 있도록 지원하는 기능입니다.이를 통해 애플리케이션이 쿠버네티스 환경에서 동적으로 설정을 수정하거나,Pod 및 컨테이너의 상태를 확인할 수 있습니다. 즉, Downward API는 애플리케이션이 쿠버네티스 환경의 메타데이터나, 리소스 정보를 동적으로 활용해야할 때 주로 사용됩니다. Downward API를 사용하여 POD에 전달 할 수 있는 메타 데이터 종류는 아래와 같습니다.파드의 이름파드의 IP 주소파드가 속한 네임스페이스파드가 실행 중인 노드의 이름파드가 실행 중인 서비스 어카운트 이름각 컨테이너의 CPU와 메모리 요청각 컨테이너의 CPU와 메모리 제한파드의 레이블파드의 어노테이션  실습을 통해 좀..

쿠버네티스 ConfigMap, Secret 이란 ?

ConfigMap 이란?애플리케이션에서 필요한 환경 변수나 설정 파일들을 관리 할 때 사용되는 리소스 입니다.ConfigMap을 사용하면, 애플리케이션 배포 시 환경 설정이나 구성 값을 쉽게 적용하고 수정할 수 있습니다.Secret 이란?ConfigMap 처럼 애플리케이션에서 필요한 환경 변수나 설정 파일들을관리 할 때 사용되는 리소스 이지만, 민감한 정보를 안전하게 관리하기 위해 사용되는 리소스 입니다.기본적으로 Base64로 인코딩 됩니다.또한, Secret은 Secret에 접근하는 POD가 있는 노드에서만 생성이 됩니다.노드 자체적으로도 시크릿을 항상 메모리에만 저장하고물리 저장소에 기록되지 않도록 합니다. ConfigMapSecret민감하지 않고 일반 설정 데이터는 ConfigMap을 사용민감한 ..

telegraf <-> Prometheus <-> Grafana 연결하여 모니터링 해보기

Prometheus - Grafana 설치했던 링크2024.11.15 - [Monitoring] - Prometheus - Grafana 설치 (Helm 차트) Prometheus - Grafana 설치 (Helm 차트)이번에는 Helm 을 사용하여 Prometheus와 Grafana를 설치해보도록 하겠습니다. https://artifacthub.io/먼저 helm 차트 홈페이지에 들어가서 kube-prometheus-stack 검색 해줍니다. Helm repo 추가를 해줍니다.# helm reksh-cloud.tistory.com  앞선 링크의 글에선, Prometheus와 Grafana를 설치해보았습니다. 이제 어떻게 활용이 되는지 알아보도록 하겠습니다. 구성은 아래의 이미지와 같이 할 예정 입니다...

Monitoring 2024.11.21

Prometheus - Grafana 설치 (Helm 차트)

이번에는 Helm 을 사용하여 Prometheus와 Grafana를 설치해보도록 하겠습니다. https://artifacthub.io/먼저 helm 차트 홈페이지에 들어가서 kube-prometheus-stack 검색 해줍니다. Helm repo 추가를 해줍니다.# helm repo add prometheus-community https://prometheus-community.github.io/helm-charts# helm repo update 그리고 추가적으로 설정을 변경 해줍니다. 변경 해줄 설정 파일은 DEFAULT VALUES 에 있는 내용에서 수정을 해주면 됩니다.  values.yamlyaml 파일의 내용이 많아서 수정한 부분만 설명 드리자면,1. Grafana 대시보드 접속 할 admin..

Monitoring 2024.11.15

쿠버네티스 퍼시스턴트볼륨(PV) 퍼시스턴트볼륨 클레임(PVC) 이란?

퍼시스턴트 볼륨 (Persistent Volume, PV) 이란?쿠버네티스에서 저장소를 추상화하여 제공하는 리소스 입니다.클러스터 관리자가 직접 구성을 하며 NFS, 클라우드 스토리지, 로컬 스토리지와 같은 다양한 저장소와 연결합니다. 퍼시스턴트 볼륨 클레임 (Persistent Volume Claim) 이란?사용자가 필요로 하는 저장소를 요청할 때 사용하는 리소스 입니다.필요한 용량과 접근 방식(ReadWriteOnece, ReadWriteMany 등)을 지정할 수 있습니다. 그림으로 더 알아보면,  관리자가 PV의 사이즈, 접근 방식, 스토리지 형태(NFS, Ceph, hostPath)등을 지정하여 생성을 해줍니다.사용자가 PVC를 생성하면, 사용자가 정의한 PVC에 맞는 PV가 자동으로 바인딩 됩니..

쿠버네티스 Volume 이란?

쿠버네티스 Volume 이란?Pod가 생성되고 삭제되는 동안 데이터를 유지할 수 있도록 해주는 리소스 입니다.기본적으로 컨테이너에서 비휘발성 스토리지를 사용하지 않기 때문에, Pod가 삭제되면 컨테이너 안에 있는 데이터도 같이 삭제가 됩니다.이러한 문제를 해결하기 위해 사용되는 것이 Volume 입니다. 볼륨은 파드의 모든 컨테이너에서 사용 가능하지만 접근하려는 컨테이너에서 각각 마운트 되어야 합니다. Yaml 파일을 작성 해보면서 좀 더 자세히 알아보겠습니다.Volume 유형emptyDir: 일시적인 데이터를 저장할 때 사용되는 디렉터리 입니다.POD가 삭제될 때 함께 삭제됩니다.gitRepo: 기본적으로 emptyDir 볼륨과 같지만, POD가 시작되면 Git 레포지터리에 있는 내용들을 복제하여 사용..

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로 지정을 해주면 연결..

반응형