본문 바로가기

kubernetes20

[Kubernetes] Autoscaler(HPA) Autoscaler 쿠버네티스는 리소스 부족 현상을 해결하기 위해 사용 용도에 따라 몇 가지 오토 스케일러를 제공 HPA(Horizontal Pod Autoscaler) VPA(Vertical Pod Autoscaler) CA(Cluster Autoscaler) 1. HPA 수평적 증/감 Pod의 리소스 상태를 감지하면서 트래픽이 증가하면 Pod의 갯수를 증가(Scale Out)하여 트래픽을 분산 다시 트래픽이 감소하면 생성된 Pod를 삭제(Scale In) 기동이 빨라야하는 App에 사용 -> 장애 복구를 위한 기능이기 때문에 App 자체의 기동이 빨라야함 Stateless의 경우에만 사용 StateFul의 경우에는 어떤 Pod를 Scale Out 해야하는 지 모르기 때문 -> 사용하기 어려움 2. V.. 2022. 2. 17.
[Kubernetes] Ingress(Controller) Ingress란 서비스 앞에 있는 로드벨런스로 클러스터로 유입된 외부의 트래픽을 적절한 마이크로서비스로 라우팅 사용자가 지정한 특정 규칙에 따라 트래픽을 다양한 서비스로 전달하는 Controller 대표적으로 2가지의 사용목적이 존재 Service LoadBalancing Canary Upgrade 이외에도 https 인증서 관리에도 사용 가능 Ingress의 구성 Ingress Controller 클러스터의 인그레스 리소스를 관리 -> Ingress를 실현할 구현체 일반적으로 인그레스의 작동은 인그레스 컨트롤러가 인식할 수 있는 특정 어노테이션을 추가하여 정의 Cloud 환경에서는 각각 제공되는 컨트롤러가 있지만, 자체 운영 중인 클러스터에서는 NGINX을 주로 사용 이외에도 Kong ontour, T.. 2022. 2. 8.
[Kubernetes] StatefulSet(Controller) Application의 2종류 Stateless Application App이 여러개 배포되더라도 같은 서비스의 역할 -> 트래픽을 분산 대표적으로 Web Server {ex) Apache, NGINX, IIS 등} 삭제, 재생성시, 어차피 같은 역할을 하는 서비스를 생성 이름 상관 X 각각의 App마다 볼륨이 필요하지 않음 Stateful Application 각각의 App마다 자신의 역할이 존재 -> 역할에 따라 목적이 있는 연결 대표적으로 Database {ex) MongoDB, MariaDB 등} 삭제, 재생성 시, APP이름이 고유식별에 사용하기 때문에 같은 이름으로 재생성 역할이 다른 만큼, 각각의 App마다 볼륨이 필요함 이러한 Stateless/Stateful Application을 쿠버네.. 2022. 2. 8.
[Kubernetes] RBAC, Role, RoleBinding(Authorization) 쿠버네티스 접근제어 체계 Authentication : 접속한 사람의 신분을 시스템이 인증하는 단계 -> 신분증 확인 Authorization : 어떤 권한을 가지고 어떤 행동을 할 수 있는지 확인하는 단계 -> 사용자별 권한 확인 Admission Control : 인증과 권한확인 이후에 추가적인 요청내용에 대한 검증 또는 요청 내용 강제 변경 이러한 접근체계중 Authorization을 주제로 포스팅 RBAC(Role-Based Access Control) 쿠버네티스가 자원에 대한 권한을 지원하는 방법에는 여러가지 방법 중 대표적인 방법 역할 기반으로 권한을 부여하는 방법으로 Role, RoleBinding 오브젝트를 사용 누가(주체), 무엇을(동사), 어디에(네임스페이스) 실행할 수 있는지 결정하는.. 2022. 1. 30.
[Kubernetes] X509 Certs, kubectl, ServiceAccount(Authentication) 쿠버네티스 접근제어 체계 Authentication : 접속한 사람의 신분을 시스템이 인증하는 단계 -> 신분증 확인 Authorization : 어떤 권한을 가지고 어떤 행동을 할 수 있는지 확인하는 단계 -> 사용자별 권한 확인 Admission Control : 인증과 권한확인 이후에 추가적인 요청내용에 대한 검증 또는 요청 내용 강제 변경 이러한 접근체계중 Authentication을 주제로 포스팅 쿠버네티스 API 서버에 접근(Authentication)하는 3가지 방법 X509 Client Certs kubectl ServiceAccount 1. X509 Client Certs 쿠버네티스 클러스터에는 6443 포트로 API 서버가 열려있음 사용자가 이곳으로 https 접근하는 방법이며 Kube.. 2022. 1. 30.
[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.