본문 바로가기

전체 글

[K8S] kube-scheduler kube-scheduler는 쿠버네티스 node의 pods들의 scheduling을 관리하는 컴포턴트로, 클러스터 내에서 실행될 pod를 적절한 노두에 배치하는 역할을 한다. 즉, 어떤 파드를 어떤 노드에서 실행할 것인가를 결정한다.✔ 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 Cluster는 master node에 static pod로 호스트되며, cluster의 state와 같은 정보를 저장한다. # ETCDCTL ETCDCTL은 etcd를 위한 command line client이다.ETCDCTL은 Version 2 and Version 3를 사용하고, default로는 Version 2로 설정된다.back up과 restore와 같은 작업을 하기 위해서는 ETC.. 더보기
[K8S] CoreDNS coreDNS는 쿠버네티스에서 기본적으로 사용되는 DNS 서버로, 클러스터 내부의 서비스들이 서로 도메인 이름을 통해 통신할 수 있도록 지원하는 DNS Provider이다. Default로 설치되는 디플로이먼트는 kube-dns이며 kubeadm을 사용하여 kube-dns 대신 CoreDNS를 사용할 수 있다. (kubeadm v1.32 부터는 DNS 애플리케이션으로 CoreDNS만이 지원된다, 하지만 metadata.name 필드에 kube-dns 로 이름이 지정된다.)  CoreDNS 설치https://github.com/coredns/deployment/tree/master/kubernetesCoreDNS의 특징 모든 Service에는 DNS 네임이 할당된다. svc-name.namespace.sv.. 더보기
[K8S] PV & PVC 일종의 Shared Storage로,기본 스토리지 운영환경을 분리시켜서 사용할 수 있다.관리자: 스토리지 구성 (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/servi.. 더보기
[K8S] Storage/Volume CSI(Container Storage Interface)CSI는 컨테이너 오케스트레이션 시스템에서 스토리지 솔루션을 통합하고 사용할 수 있게 해주는 표준 인터페이스이다. CSI 표준이 도입됨으로써 스토리지 제공자는 쿠버네티스와 독립적으로 CSI 플러그인을 개발할 수 있게 되었고, 이를 통해 다양한 스토리지 솔루션의 확장성과 호환성이 크게 개선되었다.  Volume  쿠버네티스에서 Pod는 일시적이며, Pod가 삭제되면 그 안의 데이터도 삭제된다. (컨테이너 내의 디스크에 있는 파일은 임시적이다.)kubelet은 컨테이너를 다시 시작하지만 초기화된 상태가 되며, Pod에서 같이 실행되는 컨테이너간에 파일을 공유할 때 큰 문제가 발생할 수 있다.  이 때문에 Volume을 Pod에 붙여서 데이터를 저장한다.. 더보기
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] RBAC API 서버에 접근하기 위해서는 인증 작업이 필요하다.User 인증(Authentication) → 권한 확인(Authorization) → 요청 확인(Admission Control) →  요청 승인 RBAC을 이용한 권한 제어사용자의 역할에 따라 리소스에 대한 접근 권한 가진다. ex ) Role 예제: default 네임스페이스의 Pod에 대한 get,watch,list 할 수 있는 권한 줄 것Pod는 코어 API기 때문에 apiGroups를 따로 지정하지 않는다. 만약 리소스가 job이라면 apiGroups에 "batch"를 지정resources에는 Pods,deployments,service등 사용할 API resource들을 명시한다.verbs에는 단어 그대로 나열된 API 리소스에 허용할 기.. 더보기
[K8S] cordon & drain 노드 스케줄링 중단(cordon)및 허용(uncordon) 클러스터의 특정 노드에서 Pod을 배치하지 않거나 제거할 때 사용하는 명령어cordon 명령을 내부적으로 실행하여 노드를 스케줄링 불가능 상태로 만든 뒤, 실행 중인 Pod을 다른 노드로 이동(재스케줄링)하거나 종료한다. cordon특정 노드를 스케줄링 불가능 상태(Unschedulable)로 설정한다.cordon 명령을 사용하면 새로운 Pod는 해당 노드에 스케줄링되지 않지만, 이미 실행 중인 Pod에는 영향을 주지 않는다.사용 사례노드 유지 관리 작업을 준비할 때특정 노드에서 새로운 워크로드 배치를 방지하고 싶을 때drain특정 노드에서 모든 Pod을 안전하게 제거한다.drain은 Pod를 다른 노드로 재스케줄링하거나 종료하여 노드를 비우는 .. 더보기