Study

· Study/K8s
앞서 리소스 스케쥴링 중 Taint와 Tolerant, 그리고 node Affinity를 잠깐 알아보았다.이번에는 리소스 스케쥴링 전략 중 Affinity를 알아보도록 한다. AffinityPod가 특정 node에 배치되도록 설정하는 정책, Pod에 적용되는 설정앞서 살펴본 Taint는 Pod가 특정 node에 배치되지 않도록 하는 정책으로, node에 적용하는 설정이였다. Affinity에는 node를 기준으로 하는 node Affinity와 pod를 기준으로 하는 pod Affinity가 있다.각 Affinity는 조건의 강도에 따라 2종류로 나뉘게 된다.requiredDuringSchedulingIgnoredDuringExecution : 이 조건을 만족하는 node에만 pod를 스케쥴링 (Hard..
· Study/K8s
KEDAKubernetes Event-Driven Autoscaler, 이벤트 기반 오토스케일링을 지원하는 컴포넌트기존의 Kubernetes 클러스터 환경에서 pod의 Auto Scaling의 경우, HPA가 있었다.하지만, 이 HPA는 CPU나 메모리 Metric을 기반으로 밖에 pod를 Scaling할 수밖에 없었다.이에 따라 외부 서비스 Metric (DB, Queue, CSP 서비스 등)을 기반의 이벤트 기반 pod Auto Scaler인 KEDA가 등장하게 되었다.  공식 Docs에 따르면 KEDA는 현재 68종류의 이벤트 소스와의 연동을 지원한다.  KEDA는 HPA와 같이 동작하며, HPA를 보조하는 역할로 볼 수 있다.KEDA가 연결된 이벤트 소스로부터 특정 이벤트를 감지하면, HPA의 값..
· Study/K8s
kOps클라우드 환경에 kubernetes 클러스터를 배포할 수 있게 도와주는 클러스터 배포 자동화 오픈소스 툴 보통 각 CSP 별로 Managed Kubernetes 서비스가 존재한다. (AWS의 EKS, GCP의 GKE, Azure의 AKS 등등) 이러한 Managed 서비스와는 비용계산이나 배포 방식 등이 다르다.예를 들어, EKS는 Control plane을 AWS managed 방식으로 사용하기에 그 비용이 많이 나온다.또한 Control Plane은 AWS managed라 직접 접근할 수 없다.kOps는 이러한 master node를 사용자가 직접 관리하게 함, 따라서 Control Plane 노드에 대한 접근도 가능하다인스턴스 유형도 조절이 가능해, 싸게 간단한 클러스터를 구축할 수 있다.k..
SSL 트래픽을 처리하는 방법에는 크게 3가지가 존재한다.SSL Termination (Offloading)SSL PassthroughSSL Bridging이 방법들을 각각 알아보도록 한다.  SSL Termination (Offloading)SSL Termination은 SSL 암호화 트래픽을 서버 측으로 전달하기 전에 로드밸런서 단에서 SSL 암호화를 푼 뒤, 전달해준다. 이 방식은 SSL 암복호화를 내부 웹 서버단이 아닌 로드밸런서/프록시가 해준다는 점에서 내부 백엔드 서버의 부담을 줄여주게 된다. 이러한 이유로 인해 SSL Offloading(전가)이라고도 불리게 된다.또한, SSL 인증서를 내부의 백엔드 서버별로 각각 설치해줄 필요 없이, 로드밸런서 측에만 설치해주면된다는 점도 존재한다.  다만..
· Study/K8s
ABACAttribute-Based Access Control, User나 Group에 Permission Attribute를 지정해 접근을 제어하는 방식이 방법은 개별 User나 Group에 대해 각각 권한 설정을 해줌에 따라 복잡하고 세밀한 권한제어가 가능하다. 허나 User나 Group의 수가 증가하게되는 경우, 이들을 일일히 ABAC로 권한 설정을 해주기는 어려울 것이다.   ABAC policy 파일의 구성은 다음과 같다. 아래 Policy는 user 'jane'이 default namespace의 pod를 읽을 수 있도록 하는 내용이다. # abac_policy.json{ "apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": ..
· Study/K8s
kube 커맨드를 실행하기 위해 Kube API Server에 명령어를 Query해주어야한다.API Server에 Query하기 위해서는 User 인증을 위해 매번 User Certificate를 함께 보내주어야한다. kubectl get pods --server kubernetes.docker.internal:6443 \ --client-key admin.key \ --client-certificate admin.crt \ --certificate-authority ca.crt 매번 이렇게 커맨드를 실행할 수는 없지 않은가? 이 과정을 간소화시키기 위해 Context와 KubeConfig 파일이 존재한다. KubeConfig클러스터에 접근하고 상호작용하기 위해 필요한 설정을 포함하는 파일kubectl을..
· Study/K8s
Cluster내에서는 여러 Worker Node들이 연결되어 있고,  각 Node에는 여러 Pod들이 배치될 수 있다.배치된 Pod들은 CPU를 많이 잡아먹는 Workload, 혹은 메모리를 많이 잡아먹는 Workload 등 다양한 요구사항을 가질 수 있다. 그리고 Worker Node 또한 각각 사양이 다를 수 있기에, 이러한 요구사항과 cluster 내의 Node 상황에 맞춰 Pod를 효율적으로 Scheduling 하는 것이 중요하다. 효율적인 Pod의 Scheduling을 위해 Kubernetes에서는 Resource Requests와 Limits를 사용한다.이번에는 이 두 요소를 알아보도록 한다. Resource RequestsContainer가 생성될 때, 특정 용량을 요청하는 것, 해당 pod..
· Study/K8s
Taint & Tolerant어떤 pod가 특정 node에 schedule되는 것을 제한하는 것 (set restriction)즉, 특정 node가 특정 pod만 수용할 수 있도록 하거나 특정 node에 특정 pod가 배치되지 않도록 하는 수단이다. Taint는 node에 지정하는 요소이고, Tolerant는 pod에 지정하는 요소다.이해하기 쉽게 보자면, Taint는 '벌레 퇴치 스프레이', 그리고 Tolerant는 Taint에 적응할 수 있는 면역력으로 생각할 수 있다.  Taint와 Tolerant를 이해하기 위해 아래와 같이 Node와 Pod들이 있다고 가정해본다.  Node라는 사람 객체에 Pod라는 벌레 객체가 붙는다. 이때 Node에 예를 들어 app=prd 라는 Taint를 적용하게되면, ..
Omoknooni
'Study' 카테고리의 글 목록 (2 Page)