전체 글 썸네일형 리스트형 [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)와 같은 중요한 정보를 안전하게 저장하기 위한 리소스. 애플리케이션 코드와 민감한 데이터를 분리하고, base64로 인코딩하여 보안을 강화할 수 있다. Secrets의 주요 특징보안 데이터 저장: 비밀번호, API 토큰, SSH 키와 같은 민감한 데이터를 저장하고 관리즉, 민감하지 않은 일반 설정파일은 configMap을 사용하고, 민감한 데이터는 secret을 사용한다. 민감한 데이터를 저장할 때 Encryption at Rest를 활성화 권장 Base64 인코딩: 데이터는 Base64로 인코딩되어 저장된다. ( base6.. 더보기 [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.. 더보기 [K8S] Node Label & Selector Label & SelectorKubernetes에서 리소스를 그룹화하고 필터링하는 데 사용되는 주요 메커니즘Label은 리소스에 부여된 정보이며, Selector는 특정 Label을 가진 리소스를 선택한다.특정 리소스에 대해 원하는 작업(트래픽 전달, 로깅, 모니터링 등)을 효율적으로 수행 LabelKubernetes 리소스에 추가할 수 있는 키-값 쌍으로, 리소스에 대한 메타데이터를 제공각 리소스에 여러 개의 라벨을 지정 가능노드를 선택해서 파드를 배치할 수 있다. 👉nodeSelector 사용$ kubectl label nodes =$ kubectl label nodes node01 size=Large # node01이 가진 label 확인하기$ kubectl describe node node01.. 더보기 [K8S] 쿠버네티스 레이블 https://kubernetes.io/ko/docs/concepts/overview/working-with-objects/labels/ 레이블과 셀렉터 레이블 은 파드와 같은 오브젝트에 첨부된 키와 값의 쌍이다. 레이블은 오브젝트의 특성을 식별하는 데 사용되어 사용자에게 중요하지만, 코어 시스템에 직접적인 의미는 없다. 레이블로 오브 kubernetes.io Label Node를 포함하여 Pod, deployment 등 모든 리소스에 할당 리소스의 특성을 분류하고, Selector를 이용해서 선택 오브젝트에 첨부된 key-value 한 쌍으로 적용 오브젝트의 특성을 식별하는 데 사용 레이블로 오브젝트의 하위 집합을 선택하고, 구성하는데 사용 레이블은 오브젝트를 생성할 때에 붙이거나 생성 이후에 붙이거나.. 더보기 [K8S] Ingress 및 Ingress Controller IngressIngress는 클러스터 외부에서 내부 서비스로 들어오는 HTTP/HTTPS 트래픽을 관리하는 리소스이다.단순히 외부 요청을 내부 서비스로 전달하는 것 뿐 아니라, 도메인(URL) 기반 라우팅, SSL, 리버스 프록시 기능 등을 제공한다.👉 서비스들에 대한 단일 진입점을 만들어 내부의 서비스를 외부에서 접속 가능하도록 해준다.L7 스위치 역할을 논리적으로 수행 (Application LB, ALB)클러스터로 접근하는 URL 별로 다른 서비스에 트래픽을 분산Ingress 기능Service에 외부 URL 제공트래픽을 로드밸런싱SSL 인증서 처리Virtual Hosting 지 Ingress를 사용하면,LoadBalancer를 공유하여 비용 절감이 가능하며, TLS(SSL) 인증서 관리, 트래픽.. 더보기 이전 1 ··· 8 9 10 11 12 13 14 15 다음