본문 바로가기

전체 글

[K8S] Logging & Monitoring # Logging# 실시간 로그 확인controlplane ~ ➜ kubectl get podsNAME READY STATUS RESTARTS AGEwebapp-1 1/1 Running 0 79scontrolplane ~ ➜ kubectl logs -f webapp-1[2024-04-26 06:42:27,701] INFO in event-simulator: USER3 is viewing page1[2024-04-26 06:42:28,702] INFO in event-simulator: USER4 is viewing page3[2024-04-26 06:42:29,704] INFO in event-simulator: USER2 logged out[20.. 더보기
[K8S] kube-scheduler kube-scheduler란,쿠버네티스 node의 pods들의 scheduling을 관리하는 컴포턴트로, 클러스터 내에서 실행될 파드(pod)를 적절한 노드(node)에 배치하는 역할을 한다. 즉, 어떤 파드를 어떤 노드에서 실행할 것인가를 결정한다.√ pod를 node에 두는 것을 결정하는 것이 아니다 ☞ kubelet의 업무 주요 역할파드 배치 결정: 스케줄링이 필요한 새 파드가 생성되면, kube-apiserver가 이를 kube-scheduler로 전달하고, 클러스터 내 노드 중 가장 적합한 노드를 선택한다.스케줄링 조건 평가:파드 요구사항과 노드 리소스 상태를 고려하여 적합한 노드를 선택한다.예: CPU, 메모리, 태그(label), 노드 셋(label selector) 등의 조건클러스터 리소스.. 더보기
[K8S] ETCD Backup 및 Restore etcd쿠버네티스에서 운영되는 모든 objects는 Nodes, configs, Secret, Roles 등을 받아서 etcd에 저장한다. - 분산 키-값 저장소따라서 etcd 데이터의 손실은 Kubernetes 클러스터 전체에 심각한 영향을 미칠 수 있으므로, 정기적인 백업과 복구 전략이 필수적이다. etcd 클러스터는 여러 etcd instance가 서로 연결되어 데이터를 공유하고, 장애 조치(failover) 및 데이터 복제(replication)를 통해 데이터의 일관성과 가용성을 보장하는 구조를 가지고 있다.etcd Cluster는 master node에 static pods로 호스트되며, cluster의 state와 같은 정보를 저장한다. # ETCDCTL ETCDCTL은 etcd를 위한 com.. 더보기
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는 누구나 쉽게.. 더보기