본문 바로가기

Container

[K8S] PV & PVC 기본 스토리지 운영환경을 분리시켜서 사용할 수 있다.관리자: 스토리지 구성 (PV)개발자: 필요한 만큼 요구 (PVC)일반적으로 Pod가 재시작되면 데이터가 사라지는데( emptyDir 라는 일시적인 공간에 저장), PV & PVC를 사용하면 데이터를 유지할 수 있다.Pod가 PVC를 마운트하여 스토리지를 사용하며, PVC가 삭제되면 PV는 설정된 정책에 따라 처리된다.실습] /log의 데이터가 /var/log/webapp에 저장될 수 있도록 volume configurecontrolplane ~ ➜ kubectl edit pod webapp volumeMounts: - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: ku.. 더보기
CKA 시험준비 https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/learn/lecture/14224074?start=0#overview 시험보기전에 해야할 것1. Mock Exam 풀기2. Exam Simulator Test 하기3. 시험 dump문제 찾아서 풀어보기4. Exam Environment Demo 참고 URLCertified Kubernetes Administrator: https://www.cncf.io/certification/cka/Exam Curriculum (Topics): https://github.com/cncf/curriculumCandidate Handbook: https://www.cncf.. 더보기
[K8S] cordon & drain 노드 스케줄링 중단(cordon)및 허용(uncordon) 클러스터의 특정 노드에서 Pod을 배치하지 않거나 제거할 때 사용하는 명령어cordon 명령을 내부적으로 실행하여 노드를 스케줄링 불가능 상태로 만든 뒤, 실행 중인 Pod을 다른 노드로 이동(재스케줄링)하거나 종료한다. cordon특정 노드를 스케줄링 불가능 상태(Unschedulable)로 설정한다.cordon 명령을 사용하면 새로운 Pod은 해당 노드에 스케줄링되지 않지만, 이미 실행 중인 Pod에는 영향을 주지 않는다.사용 사례노드 유지 관리 작업을 준비할 때특정 노드에서 새로운 워크로드 배치를 방지하고 싶을 때drain특정 노드에서 모든 Pod을 안전하게 제거한다.drain은 Pod을 다른 노드로 재스케줄링하거나 종료하여 노드를 비우는 .. 더보기
[K8S] Taint & Toleration 파드(Pod)와 노드(Node) 간 스케줄링 규칙을 정하기 위해 사용된다. Taint 노드에 적용되는 속성으로, 특정 조건을 만족하지 않는 파드가 해당 노드에 스케줄링되지 않도록 제약 조건을 설정📖 Pod와 node의 관계, Pod가 어떤 노드에 assign될지에 대한 restriction주요 특징: 노드 보호: 특정 노드를 특정 작업(예: 시스템 프로세스 전용)으로 예약파드 제한: 지정된 파드만 특정 노드에 배포되도록 제한키-값-효과: Taint는 키(Key), 값(Value), 효과(Effect)의 조합으로 정의Key: Taint를 식별하는 키Value: 추가적인 설명 정보 제공Effect: Taint가 작동하는 방식을 정의   Node taint, Pod tolerationTaint는 제한을 설정.. 더보기
[K8S] Affinity & antiAffinity Node Affinity는 Kubernetes에서 Pod의스케줄링 제약 조건을 정의하는 메커니즘 특정 조건을 가진 노드에만 Pod이 스케줄링되도록 설정노드의 특정 집합에만 pod를 스케줄하도록 지시.nodeSelector: selector filed에 명시된 모든 LABEL이 포함되어야 배치됨nodeAffinity: 특정 노드에만 Pod가 실행되도록 유도 spec.affinity.nodeAffinity 필드에서 설정된다.요구조건: 조건이 맞는 파드에 가중치를 줘서 가중치가 가장 높은 파드에 배치필수 조건: requiredDuringSchedulingIgnoredDuringExecution 조건이 만족되지 않으면 Pod는 해당 노드에 스케줄링되지 않음 노드 조건이 나중에 바뀌더라도 Pod는 계속 실행됨(스.. 더보기
[K8S] Secret ConfigMap: 컨테이너 구성 정보를 한 곳에 모아서 관리Secret: 컨테이너가 사용하는 민감한 데이터(ex: password, auth token, ssh key)와 같은 중요한 정보를 안전하게 저장하기 위한 리소스. 애플리케이션 코드와 민감한 데이터를 분리하고, 보안을 강화할 수 있다. Secrets의 주요 특징보안 데이터 저장: 비밀번호, API 토큰, SSH 키와 같은 민감한 데이터를 저장하고 관리즉, 민감하지 않은 일반 설정파일은 configMap을 사용하고, 민감한 데이터는 secret을 사용한다. 민감한 데이터를 저장할 때 Kubernetes Encryption at Rest를 활성화 권장 Base64 인코딩: 데이터는 Base64로 인코딩되어 저장됩니다. ( base64는 누구나 쉽게.. 더보기
[K8S] Canary Deployment 파드 배포하는 방법 블루 그린 업데이트 카나리 업데이트 롤링 업데이트 : 서비스 중단 없이 하나씩 업데이트 Canary 배포 기존 버전을 유지한 채로 일부 버전만 신규 버전으로 올려서 신규 버전에 버그나 이상이 없는 지 확인. 레이블을 이용한 카나리 배포 # 블루 생성 [master ~]$cat mainui-stable.yaml apiVersion: apps/v1 kind: Deployment metadata: name: mainui-stable spec: replicas: 2 selector: matchLabels: app: mainui version: stable template: metadata: labels: app: mainui version: stable spec: containers: - n.. 더보기
[K8S] Annotation # Annotation Label과 동일하게 key-value를 통해 리소스의 특성 기록 kubernetes에게 특정 정보 전달할 용도로 사용 예를 들어 Deployment의 Rolling update 정보 기록 관리를 위해 필요한 정보를 기록할 용도로 사용 릴리즈, 로깅, 모니터링에 필요한 정보들을 기록 [master ~]$cat annotation.yaml apiVersion: v1 kind: Pod metadata: name: pod-annotation annotations: # name과 같은 라인 builder: "Soyun Yoon (soyun3963@gmail.com)" buildDate: "20240320" imageRegistry: https://hub.docker.com/ spec: c.. 더보기