[쿠버네티스] 자원 기반 접근법, 명령 기반 접근법 출처Cloud Native DevOps with Kubernetes / 쿠버네티스를 활용한 클라우드 네이티브 데브옵스Certified Kubernetes Administrator (CKA) with Practice Tests(Udemy) 접근법두 가지의 접근법애플리케이션 배포 및 관리 방식과 관련이 있는 자원 기반 접근법(Declarative Approach)과 명령 기반 접근법(Imperative Approach)이다. 자원 기반 접근법(Declarative Approach)상태를 정의하는 방식YAML 파일을 사용하여 배포 설정을 정의하고, kubectl apply -f deployment.yaml 명령어로 적용하는 방식 선언적 방식은 변경된 상태를 쉽게 추적하고, 자동으로 복원할 수 있어 안정성이 높.. [쿠버네티스] 네임스페이스 출처Cloud Native DevOps with Kubernetes / 쿠버네티스를 활용한 클라우드 네이티브 데브옵스Certified Kubernetes Administrator (CKA) with Practice Tests(Udemy)namespaceWhat is namespace?클러스터 내에서 리소스를 논리적으로 분리하는 방법이다. namespace의 특징리소스 격리: 각 namespace안에서 리소스들이 격리되어 다른 namespace에서 같은 이름의 Pod나 Service가 동시에 존재할 수 있다.리소스 할당 및 쿼터 관리: namespace단위로 리소스를 할당하고, 특정 namespace에 대해 ResourceQuota를 설정하여 사용량을 제한할 수 있다. (CPU, 메모리 등)보안 및 접근 .. [쿠버네티스] 서비스 출처Cloud Native DevOps with Kubernetes / 쿠버네티스를 활용한 클라우드 네이티브 데브옵스Certified Kubernetes Administrator (CKA) with Practice Tests(Udemy)SERVICESWhat is Service?앱 안팎의 다양한 구성 요소 간의 통신을 가능하게 한다.Pod와 Pod 또는 Pod와 사용자를 연결한다. 사용자가 Pod에 배포된 웹 앱에 접근하는 과정사용자가 웹 브라우저 또는 API를 통해 웹 애플리케이션에 요청을 보낸다.요청이 외부 IP주소를 통해 클러스터의 LB로 전달된다. LB는 요청을 Service로 전달한다.LB 또는 NodePort를 통해 전달된 요청은 클러스터 내의 특정 Service로 라우팅 된다. Service.. [쿠버네티스] ReplicaSet 출처Cloud Native DevOps with Kubernetes / 쿠버네티스를 활용한 클라우드 네이티브 데브옵스Certified Kubernetes Administrator (CKA) with Practice Tests(Udemy)ReplicaSetWhat is ReplicaSet?쿠버네티스에서 특정 갯수의 Pod를 항상 유지하도록 보장하는 리소스 ReplicaSet의 필요성Stateful: 지정된 수의 Pod를 유지하기 위해 현재 상태를 지속적으로 모니터링하고 조정한다.AutoScailing: App의 요구에 따라 Pod의 수를 조절할 수 있어, 리소스의 활용도를 극대화하고 운영비를 절감할 수 있다.롤링업데이트: 새로운 버전의 Pod를 생성하고 기존의 Pod를 점진적으로 교체하는 롤링업데이트를 .. [쿠버네티스] ETCD 출처Cloud Native DevOps with Kubernetes / 쿠버네티스를 활용한 클라우드 네이티브 데브옵스Certified Kubernetes Administrator (CKA) with Practice Tests(Udemy) ETCDetcd?분산 시스템에서 데이터를 저장하고 관리하기 위한 고가용성 키-값 저장소주로 Kubernetes와 같은 클라우드 네이티브 애플리케이션에서 구성 정보를 저장하는 데 사용된다Replicated state machine(RSM)Replicated state machineRSM분산 시스템에서 상태를 복제하여 일관성을 유지하는 방식 다수의 노드가 클러스터를 구성하고 있는 상황에서 일부 장애가 발생하더라도 전체 시스템은 문제 없이 동작할 수 있도록 작동한다Kafka의.. [쿠버네티스] Container Runtime Interface (CRI) Container Runtime InterfaceCRI?kubelet과 여러 컨테이너 런타임을 연결해주는 표준 인터페이스주요기능컨테이너 생성 및 관리컨테이너 이미지의 Pulling 및 관리 기능컨테이너 로그에 접근할 수 있는 기능컨테이너의 성능과 리소스 사용 정보를 추적하는 기능 구성요소kubelet: CRI를 통해 컨테이너 런타임과 상호작용한다컨테이너 런타임: 컨테이너를 실행하고 관리한다cri-api: 컨테이너 런타임과 kubelet간의 통신을 위한 api다 장점유연성: 다양한 컨테이너 런타임을 지원하여, 클러스터 환경에 맞는 최적의 런타임을 선택할 수 있다모듈화: 쿠버네티스의 핵심 구성 요소와 컨테이너 런타임이 분리되어 있어, 런타임의 교체가 쉽다표준화: 컨테이너 런타임과의 통신을 표준화하여, 여러 .. [클라우드/쿠버네티스] initContainers 출처1) Cloud Native DevOps with Kubernetes / 쿠버네티스를 활용한 클라우드 네이티브 데브옵스 InitContainer1) pod가 2개 이상 실행될 때, 필요한 초기 작업을 수행하는 컨테이너2) 순차적 실행, Pod의 컨테이너와는 별개로 실행, 환경 초기화, 격리된 실행 환경 등의 특징을 가지고 있음3) 애플리케이션 초기화, 환경 설정, 보안 검증, 파일 다운로드 등의 사례에 주로 사용됨 InitContainer특징1) 순차적 실행: 모든 initContainers는 순차적으로 실행됨 (첫 번째 initContainer가 완료되어야만 다음 initContainer가 실행)2) Pod의 컨테이너와는 별개로 실행: initContainers의 컨테이너가 모두 실행되어야 주요.. [클라우드/쿠버네티스] 볼륨 출처1) Cloud Native DevOps with Kubernetes / 쿠버네티스를 활용한 클라우드 네이티브 데브옵스 볼륨1) 컨테이너가 데이터를 저장하고 공유하는 방법을 제공2) 컨테이너는 기본적으로 임시 저장소를 사용하며, 컨테이너가 재시작되면 데이터가 사라질 수 있음3) 볼륨을 사용하면 데이터를 지속적으로 저장할 수 있음 볼륨의 종류1) emptyDir: 컨테이너가 Pod에 배포될 때 생성되며, Pod가 삭제될 때 삭제됨2) hostPath: 호스트 파일 시스템의 특정 디렉토리를 컨테이너와 공유. 일반적으로 프로덕션 환경에서는 사용을 권장하지 않음3) PVC: 필요한 스토리지 리소스를 선언, 이를 통해 데이터의 영속성을 보장할 수 있음4) awsElasticBlockStore: AWS의 E.. [클라우드/쿠버네티스] 라벨, 노드셀렉터 라벨1) 키-값 쌍의 형태로 리소스에 추가하는 메타데이터2) 다양한 리소스를 관리, 필터링, 선택할 수 있음3) 리소스를 식별하고 그룹화하는 데 사용함4) pod, node에 부여 가능함 Label value조회특정 key의 value를 조회#kubectl get po -L key [root@]$ kubectl get po -L runNAME READY STATUS RESTARTS AGE RUN applyfyml 1/1 Running 1 6d applyfyml#kubectl get po pod명 -oyaml[root@]$ kubectl get po applyfyml -oyamlapiVersion: v1 kind: Pod metadata: .. [클라우드/쿠버네티스] Pod 구조 Pod yaml 확인#Pod yaml[root@]$ kubectl get po Pod명 -o yamlapiVersion: v1 #Object(Schema)의 버전을 명시. 서버는 식별된 Schema를 최신버전의 Schema와 일치하도록 변환kind: Pod #리소스 타입을 명시. 서버가 해당 리소스의 타입을 파악할 수 있도록 지원metadata: labels: run: devpd name: devpd namespace: defaultspec: #Pod가 어떻게 작동해야 하는지에 대한 설정을 명시(image, node, PVC) containers: - image: nginx name: devpd nodeName: masterstatus: #Pod의 상태 정보가 자동으로 시스템에.. [클라우드/쿠버네티스] kubectl 명령어 정리 kubectl runPod 실행# sudo kubectl run Pod명 --image 이미지명 --restart Never[root@]$ sudo kubectl run devpd --image nginx --restart Neverpod/devpd created kubectl get podpod 조회 # sudo kubectl get pod Pod명[root@]$ sudo kubectl get pod devpdNAME READY STATUS RESTARTS AGE devpd 1/1 Running 0 4m33s -o yamlyaml파일 출력-o: output# sudo kubectl get pod Pod명 -o yam.. [클라우드/쿠버네티스] 쿠버네티스 윈도우 설치 윈도우 환경설정1) 제어판 > 프로그램 및 기능 > Windows 기능 켜기/끄기 > Linux용 Windows 하위 시스템 선택 > 재시작 2) 설정 > 시스템 > 개발자용 > 개발자 모드 > 켬 > 재시작 3) CMD(관리자권한) > WSL시스템 활성화C:\Windows\system32> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart 4) CMD(관리자권한) > VM기능 활성화C:\Windows\system32> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart 5) Linux.. 이전 1 2 다음