본문 바로가기

CICD26

[Kubernetes] Dynamic Provioning, RelcaimPoicy(Volume) PV 동적할당을 위한 Dynamic Provioning Volume은 데이터를 안정적으로 사용하기 위해 필요한 Object이므로 Kubernetes와 분리되어 관리 이러한 Volume을 사용하기 위해서는 내부/외부망에 존재하는 Volume을 사용하기 위해서는 관리자가 PV를 만들고 사용자가 원하는 용량과 AccessMode로 PVC를 만들면 쿠버네티스 측에서 적절한 PV와 연결 이러한 Volume 사용방법에는 필요할 때마다 PVC, PV를 만들어줘야함 -> 사용방법이 복잡 -> 동적 PV생성(Dynamic Provisioning)을 이용한 간단한 Volume 사용이 필요 Dynamic Provisioning 사용자가 PVC를 만들면 알아서 PV를 만들고 Volume과의 연결을 진행 모든 PV에는 상태가 .. 2022. 1. 22.
[Kubernetes] Headless, Endpoint, ExternalName(Service) * 사용자 관점에서 Pod/Service에 연결하는 방법 파드의 입장에서 연결 및 외부 서비스에 안정적인 연결방법 * 이러한 연결 방법에는 DNS Server를 기본적으로 이용하여 사용 DNS Server란 쿠버네티스 클러스터 안에 존재하는 서비스의 이름과 IP가 저장되어 있는 존재 Pod가 Service에 대한 도메인을 질의하면 해당 Service IP를 알려줌 Pod가 유저를 찾으려고 할 때, 쿠버네티스 내부 뿐만 아니라, 상위 DNS 인 내부망 DNS, 외부 네트워크 DNS까지 조회가능 * DNS Server는 FQDN(Fully Qualified Domain Name)으로 구성되어 있음 파드의 입장에서 외부 및 다른 서비스/Pod와 연결 가능한 방법 1. Headless Pod간의 연결을 위해 사.. 2022. 1. 22.
[Kubernetes] Node Scheduling(Pod) Kubernetes의 Node Scheduling Pod를 생성할 경우, 생성할 Pod가 어떤 노드에 할당되어야 할지 유저가 지정하거나 쿠버네티스에서 자동적으로 할당가능 또는 운영자가 특정 노드를 사용하지 못하도록 관리 가능 이를 Scheduling이라고 부르며 쿠버네티스는 다양한 기능으로 이러한 Scheduling을 지원 Node Scheduling을 지원하는 다양한 기능 1. 특정 Node를 선택하는 방법 NodeName Pod를 생성하면서 특정 Node를 지정 Scheduler와 상관없이 Node에 할당됨 명시적으로 사용할 수 있어 좋아보이지만, 실사용에서는 Node의 이름이 계속해서 변경되기 때문에 자주 사용하지는 않음 NodeSelector Node의 Label(Key, Value)을 지정하여 .. 2022. 1. 20.
[Kubernetes] QoS classes(Pod) 쿠버네티스 QoS(Quality of Service)란 앱의 중요도에 따라 자원 배정을 관리 노드에 있는 Pod가 모든 자원을 사용하고 있을때, 특정 Pod에서 추가 자원이 필요한 경우 중요도에 따라 자원을 우선순위를 가짐 * QoS 우선 순위 : BestEffort < Burstable < Guarnteed QoS 설정 기준 Pod의 QoS는 사용자가 선택하여 지정하지 않고 Pod 생성시, Requests, limits에 따라 지정된다. 1. Guaranteed class 모든 Container에 Request와 Limit이 설정 Request와 Limit에는 Memory와 CPU가 모두 설정 각 컨테이너의 Memory, CPU는 Request와 Limit의 값이 같음 2. Burstable class.. 2022. 1. 16.
[Kubernetes] ReadinessProbe, LivenessProbe(Pod) Probe 컨테이너에서 Kubelet에 의해 주기적으로 수행되는 진단 ReadinessProbe Pod의 생명주기중 Pending 상태에서의 동작, 서비스 요청에 응답가능한지 확인 Service와 연결된 Pod를 확인하여 Readiness Probe에 대해 응답이 없거나 실해 응답을 보낸다면 해당 Pod를 사용불가능한 상태라고 판단하여 서비스 목록에서 제외(App구동 순간에 트래픽이 흐르지 않게) 애플리케이션이 시작할 준비가 되었는지 체크하기 위함 LivenessProbe Pod의 생명주기중 Running 상태에서의 동작 컨테이너가 정상 실행중인지 확인(LivenessProbe를 설정하지 않으면 기본 상태값은 Success) 컨테이너의 상태를 주기적으로 체크하여, 응답이 없다면 컨테이너를 자동으로 재시작.. 2022. 1. 16.
[Kubernetes] Lifecycle(Pod) Lifecycle(생명주기)이란 쿠버네티스의 가장 작은 배포단위인 Pod에는 생명주기가 존재 생성되고 사라지기까지의 과정, 각 단계에 따라 행해지는 동작이 다름 Pod의 Lifecycle 상태 Pending Pod를 생성하는 중인 상태 클러스터에서는 Pod를 승인했지만, 아직 실행되지 않은 상태 Running Pod 안 컨티이너가 하나라도 실행중인 상태 Succeeded Pod 안 모든 컨테이너가 정상적으로 종료된 상태 재시작 X Failed Pod 안의 컨테이너 중 정상적으로 종료되지 않은 컨테이너가 있는 상태 Unknown Pod의 상태를 확인할 수 없는 상태 보통 Pod가 있는 노드와 통신할 수 없을 때 Pod의 Lifecycle 상태 이동 2022. 1. 16.
[Kubernetes] DeamonSet, Job, CronJob (Controller) DaemonSet이란 Deployment와 유사하게 Pod를 생성하고 관리하는 컨트롤러 Deployment는 배포 작업을 좀 더 세분화하여 조작하는 반면, DaemonSet은 특정 노드 또는 모든 노드에 항상 실행되어야 할 특정 Pod를 관리 Node의 자원상태와 상관없이 모든 Node 또는 특정 Node에 Pod를 생성 DaemonSet의 구성 Template를 이용해 동일한 Pod를 생성 HostPort를 이용하여 Service의 NodePort와 비슷하게 외부에서의 접근가능 * Nodeport와 다르게 Node의 IP로 접근 DaemonSet yaml 작성 예시 Job이란 하나 이상의 Pod를 지정하고 지정한 수의 Pod를 성공적으로 실행하도록 하는 컨트롤러 백업이나 특정 배치 파일들처럼 한번 실행.. 2022. 1. 11.
[Kubernetes] Deployment(Controller) Deployment란 현재 운영중인 서비스를 업데이트/재배포하는 것에 도움을 주는 Controller 오브젝트 버전관리의 역할을 하기 때문에 ReplicaSet의 상위 개념이라고 불수도 있음 ReplicaSet을 생성하는 Deployment를 정의할 수 있고 배포 작업을 좀 더 세분화하여 조작가능 이러한 이유로 ReplicaSet만 사용하는 것 보다 Deplyment를 사용하는 추세 Deployment의 4가지 방식 1. Recreate 가장 단순한 배포 전략, 기존 버전의 Pod를 모두 삭제한 다음 새로운 파드를 생성 중단 시간 발생하기 때문에 일시적인 중단을 허용할 수 있는 서비스에서만 사용가능 Recreate 배포 구성 및 yaml 작성 예시 2. Rolling Update 기존 버전의 서버(Pod.. 2022. 1. 8.
[Kubernetes] Replication Controller, ReplicaSet(Controller) Kubernetes Controller 서비스를 관리하고 운영하는데 도움을 줌 Auto Healing Node 또는 Node 위의 Pod에 이상이 발생할 경우 Kubernetes에서 장애를 인지, 다른 Node에 새로운 Pod 생성 Auto Scaling 리소스가 Limit상태일때 인지하고 Pod를 추가하여 부하를 분산(안정적인 상태 유지 가능) Software Update 여러 Pod에 대해 버전 업그레이드 경우, Controller로 한번에 쉽게 가능하며 Rollback기능 지원 Job 일시적인 작업이 필요한 경우, Controller가 새로운 Pod를 만들어 필요한 경우에만 작업을 수행하고 Pod를 삭제 Replication Controller이란 쿠버네티스 초기부터 있었던 컨트롤러 Pod를 관라하.. 2022. 1. 7.