kubernetes - Storage/OpenEBS
·
Container & DevOps
쿠버네티스 스토리지컨테이너 환경에서 별도의 설정을 하지 않으면 데이터는 노드의 임시 디스크(ephemeral disk)에 저장된다. 해당 임시 디스크에 저장된 데이터는 컨테이너가 종료되거나 파드가 삭제되면 함께 사라진다.쿠버네티스에서는 해당 문제를 해결하기 위해 파드와 데이터를 분리하는 개념을 사용한다. 즉, 파드는 애플리케이션 실행 단위이고, 볼륨은 데이터를 보관하는 독립된 리소스로 본다. 이 두 개념을 분리함으로써 파드가 재생성되더라도 데이터를 유지할 수 있게 되는 것이다.쿠버네티스 스토리지의 핵심 리소스쿠버네티스에서 스토리지를 구성할 때 주요하게 등장하는 리소스는 다음과 같다.PersistentVolume(PV)클러스터 전체에서 사용 가능한 실제 스토리지 자원이다관리자가 정적으로 직접 영구 PV를 ..
Kubernetes - Ingress 테스트용 애플리케이션 설치 및 설정 테스트
·
Container & DevOps
Ingress의 주요 목적인그레스의 핵심 목적은 사용자가 접속한 URL의 호스트 또는 경로에 따라 서로 다른 백엔드 서비스로 트래픽을 분기하는 것이다.이를 테스트하기 위해 서로 다른 4개의 애플리케이션을 준비한다.구성 대상은 다음과 같다.coffeeteajuicewater각 애플리케이션은 서로 다른 Deployment + Service로 구성된다. 모든 파드는 동일한 테스트 이미지인 nginxdemos/nginx-hello:plain-text를 사용한다.해당 이미지의 특징은 요청을 처리한 파드의 호스트네임을 응답으로 출력한다는 점이다.따라서 인그레스 분기가 정상 동작하는지 쉽게 확인할 수 있다.Manifest 작성서로 다른 4개의 디플로이먼트와 서비스 YAML 파일을 다음과 같이 작성한다.apiVersi..
MetalLB를 이용한 Load Balancer 타입 서비스 구축
·
Container & DevOps
MetalLB IP 대역 선정먼저 클러스터 노드들이 사용하는 IP 대역을 확인한다.kubectl get nodes -o wide 노드들이 같은 IP 대역을 사용하고 있는지 확인한다. 노드들은 10.0.2.xx 대역을 사용하고 있다. 10.0.2.60~10.0.2.69 대역을 로드밸런서 대역으로 지정한다. 할당할 로드밸런서 대역을 ping을 통해 사용 여부를 검증한다.for i in {0..9}; do ping -c 1 10.0.2.6$i; done Destination Host Unreachable가 출력 중이므로 해당 IP들을 사용 중이지 않고 있다는 의미이다.위 과정을 통해 MetalLB가 사용할 IP 풀을 안전하게 확보할 수 있다. Helm을 이용한 MetalLB 설치 준비먼저, MetalLB 공식..
Kubernetes - DNS
·
Container & DevOps
Kubernetes DNS?쿠버네티스는 서비스 이름을 기준으로 통신한다. 즉, 파드 IP가 아니라 DNS 이름으로 파드를 찾도록 설계되어 있다.이를 위해 쿠버네티스는 두 종류의 DNS 구성 요소를 사용한다.CoreDNSLocalDNS(NodeLocal DNSCache)이 둘이 합쳐져서 클러스터 내부 DNS를 구성한다.CoreDNS / LocalDNSCoreDNSCoreDNS는 클러스터 전체 DNS 서버이고, 다음과 같은 특징이 존재한다.서비스 이름 → ClusterIP 변환 담당kube-system 네임스페이스에 존재Deployment로 실행기본적으로 2개 파드가 떠서 이중화kubectl get all -o wide 명령어의 출력 결과를 확인해보면, READY 2/2, AVAILABLE 2 로 확인된다...
Kubernetes - 트러블 슈팅 기본 프로세스
·
Container & DevOps
트러블 슈팅 기본 프로세스쿠버네티스에서 장애가 발생했을 때 기본적으로 따르는 순서는 다음과 같다.Apply → Get → Describe → Logs → Get Event1. Applykubectl apply -f XXX.yamlYAML 파일로 만든 오브젝트(파드, 디플로이먼트 등)를 클러스터에 생성하는 단계다. 2. Getkubectl get [오브젝트명]방금 만든 오브젝트가 정상적으로 생성되었는지, 상태(Status)가 어떤지 리스트로 확인한다. 3. Describekubectl describe pod xxxkubectl describe node yyy특정 리소스 하나를 골라 상세 정보 + 이벤트를 본다.어떤 이미지로 생성되었는지, 어느 노드에서 돌고 있는지, 어떤 에러 이벤트가 발생했는지까지 한 번..