[Kubernetes] Cordon & Drain
DevOps/Kubernetes2022. 6. 6. 13:20[Kubernetes] Cordon & Drain

🚀 Cordon & Drain 🚀 Cordon 스케줄링 금지 kubectl cordon 스케줄링 허용 kubectl uncordon vagrant@k8s-node1  ~/schedule/affinity  kubectl get nodes NAME STATUS ROLES AGE VERSION node1 Ready control-plane,master 10d v1.22.8 node2 Ready 10d v1.22.8 node3 Ready 7d23h v1.22.8 node의 STATUS를 주의깊게 보자 vagrant@k8s-node1  ~/schedule/affinity  kubectl cordon node2 node/node2 cordoned node2에 cordon을 걸었다. vagrant@k8s-no..

[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..

image