[Kubernetes] Affinity (affinity, anti-affinity)
DevOps/Kubernetes2022. 6. 5. 10:10[Kubernetes] Affinity (affinity, anti-affinity)

🚀 Affinity nodeSelector의 정책이 경직되어 있다면 Affinity는 선호도를 이용해 가능하면 선호하는 것을 사용하고 아니어도 허용한다. 즉, 스케줄링에 유연성을 둔다. affinity pod node anti-affinty pod apiVersion: v1 kind: Pod metadata: name: with-node-affinity spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/e2e-az-name operator: In values: - e2e-az1 - e2e-az2 preferre..

[Kubernetes] Pod Scheduling ( + kube-scheduler, nodeName, nodeSelector)
DevOps/Kubernetes2022. 6. 5. 10:00[Kubernetes] Pod Scheduling ( + kube-scheduler, nodeName, nodeSelector)

🚀 kube-scheduler 쿠버네티스 스케줄러 | Kubernetes kube-scheduler는 파드나 컨트롤러를 만들었을 때 또는 스케줄링을 할 때 파드를 어디에 배치시킬 것인지 결정한다. kube-scheduler는 각 노드를 필터링하고 스코어링한다. 필터링은 어떤 노드의 어떤 리소스를 볼 것인가 하는 기준을 정하는 것이고 스코어링은 해당 기준에 따라서 가중치를 두며 이에 기반해 점수를 매긴다. 즉, 노드가 여러개 있는 경우 각 노드마다 점수를 매겨서 파드를 만들었을 때 파드를 어디에 배치할 것인지 결정하는 것이 kube-scheduler가 하는 역할이다. 필터링, 스코어링을 어떻게 할 것인지 구성할 수 있다. 🚀 nodeName 노드에 파드 할당하기 | Kubernetes nodeName은 가..

[Kubernetes] HPA : Horisontal Pod AutoScaler (파드의 오토 스케일링)
DevOps/Kubernetes2022. 6. 4. 12:24[Kubernetes] HPA : Horisontal Pod AutoScaler (파드의 오토 스케일링)

🚀 HPA : Horisontal Pod AutoScaler Horizontal Pod Autoscaling | Kubernetes 지금까지 우리는 kubectl scale, apply, replace, edit, patch 등의 명령어를 이용해서 ReplicaSet, Deployment 또는 StatefulSet과 같은 리소스들의 replicas 개수를 변경할 수 있었다. 앞선 방식은 스케일링을 수동으로 하는 것이고 Horisontal Pod AutoScaler(HPA)는 자동 스케일링하는 것이다. HPA : Deployment, ReplicaSet, StatefulSet의 복제본 개수를 조정 세가지의 공통점은 모두 replicas를 사용한다는 것이다. Scale out(Horisontal) : 개수를..

[Kubernetes] Resource Request & Limit (리소스 요청과 제한)
DevOps/Kubernetes2022. 6. 4. 12:21[Kubernetes] Resource Request & Limit (리소스 요청과 제한)

🚀 Resource Request & Limit 파드 및 컨테이너 리소스 관리 | Kubernetes Docker에서 --cpu, --memory 옵션을 통해 컨테이너가 실제로 사용할 수 있는 리소스 양을 제한했던 것과 같은 기능을 쿠버네티스에서도 할 수 있다. 파드를 생성할 때 별도로 제한을 걸지 않으면 호스트에 있는 모든 CPU, Memory 자원을 독점해서 사용할 수 있다. 그래서 반드시 적절하게 용량을 지정할 필요가 있다. 요청 : request 제한 : limit 파드에서 요청이나 제한 또는 모두를 설정할 수 있다. 요청과 제한 모두를 설정하는 것을 권장한다. 🚀 Request (요청) 요청이라는 것은 파드가 리소스를 사용할 때 특정 용량을 요청하는 것이다. ex) cpu : 1개 memory ..

[Kubernetes] StatefulSet (스테이트풀)과 Headless Service (헤드리스 서비스)
DevOps/Kubernetes2022. 6. 4. 12:19[Kubernetes] StatefulSet (스테이트풀)과 Headless Service (헤드리스 서비스)

🚀 Headless Service Headless Service란 ?! DB와 같이 master, slave 구조가 있는 서비스들의 경우 service를 통해 로드밸런싱을 하지 않고 개별 pod의 주소를 알고 접속해야한다. pod들은 DNS 이름을 가질 수는 있으나 {pod name}.{service name}.{namespace}.svc.cluster.local 형식의 이름을 갖기 때문에 pod를 DNS를 이용해 접근하려면 service name이 있어야 한다. Statefulset에 의한 서비스들은 service를 이용해서 로드 밸런싱을 하는 것이 아니기 때문에 로드 밸런서의 역할은 필요없고 논리적으로 pod들을 묶어 줄 수 있는 service만 있으면 되기 때문에 헤드리스 서비스를 사용한다. Hea..

[Kubernetes] TLS/SSL Termination with Ingress
DevOps/Kubernetes2022. 6. 1. 15:57[Kubernetes] TLS/SSL Termination with Ingress

🚀 TLS/SSL Termination란 무엇인가 ? SSL 표준화 → TLS SSL은 취약점이 발견되어 현재 사용되지 않는다. 첫번째 이미지가 종단간 암호화 방식이며 두번째 이미지가 TLS/SSL Termination 방식이다. 종단간 암호화 방식은 클라이언트부터 서버까지 모든 통신 구간에 암호화를 사용하는 방식을 말한다. TLS/SSL Termination 방식은Loadblancer (=Proxy)가 존재하며 노출되어 있다. 클라이언트와 LB 사이에는 HTTPS(암호화를 제공)를 사용하며 LB와 실제 서비스를 제공하는 서버 사이에는 HTTP(암호화를 제공하지 않음, 평문 통신)를 사용한다. 클라이언트부터 LB까지만 암호화하며 종단간 암호화가 아니다. 그렇다면 안전해보이지 않는 이런 구성을 왜 사용하는..

image