728x90
📌Index Cordon Drain Cordon Cordon은 지정된 노드에 더이상 포드들이 스케쥴링 되지 않도록 한다. Cordon 설정하기 : Scheduling 금지하기 $ kubectl cordon 해당 노드에 이미 존재하는 것들은 관계없다. 새롭게 생성되는 파드들은 더 이상 해당 노드에 배치되지 않는다. Cordon 해제 $ kubectl uncordon 사용 예시 패치 커널 업데이트 💻 실습 : Cordon과 Affinity의 활용 현재 노드들의 상태는 다음과 같고, $ kubectl get nodes NAME STATUS ROLES AGE VERSION node1 Ready control-plane,master 9d v1.22.8 node2 Ready 9d v1.22.8 node3 Ready..
어피니티(Affinity)란, 개념적으로 nodeSelector와 유사한 것으로, 노드의 레이블을 기반으로 파드를 스케줄할 수 있는 노드를 제한할 수 있다. Affinity 종류와 대상 Node nodeAffinity Pod podAffinity podAntiAffinity 🔹 Node Affinity pod.spec.affinity.nodeAffinity Node Affinity는 Node 레이블을 기준으로 새로운 Pod가 특정 Worker Node로 배포되도록 Scheduling한다. preferredDuringSchedulingIgnoredDuringExecution Pod를 조건에 따라 노드에 배포하려고 시도는 하지만 보증할 수 없다는 것을 의미한다. (Soft) requiredDuringSche..
📌Index nodeName nodeSelector ✔️nodeName nodeName을 설정하면, 스케쥴러에 영향을 받지 않고 사용자가 원하는 노드에 강제로 배치시킬 수 있다. nodeName을 설정하지 않으면 스케쥴러에 의해 노드에 배치된다. 그러나 nodeName은 몇가지 제한 사항으로 인해 되도록이면 사용하지 않는 것을 권장한다. nodeName 을 사용해서 노드를 선택할 때의 몇 가지 제한은 다음과 같다. 만약 명명된 노드가 없으면, 파드가 실행되지 않고 따라서 자동으로 삭제될 수 있다. 만약 명명된 노드에 파드를 수용할 수 있는 리소스가 없는 경우 파드가 실패하고, 그 이유는 다음과 같이 표시된다. 예: OutOfmemory 또는 OutOfcpu. 클라우드 환경의 노드 이름은 항상 예측 가능하..
HPA(Horizontal Pod Autoscaling)는 워크로드를 자동으로 업데이트하며 Deployment, ReplicaSets, StatefulSet의 복제본 개수를 조정한다. Metric이 Pod의 CPU 사용량을 측정해서 HPA에 전달하고(HPA는 Metric을 모니터링하고), 실제로 Pod의 수를 늘리거나 줄이는것은 ReplicaSet이나 Deployment에 의해서 컨트롤 된다. CPU 등의 리소스 사용량이 증가 하면 Pod 개수를 늘리고, 리소스 사용량이 감소하면 다시 Pod 개수를 줄인다. 따라서 HPA를 사용하기 위해서는 사용량을 측정하기 위해 반드시 Metric 서버가 필요하다. 단, HPA는 크기를 조정할 수 없는 Object (ex : DaemonSet, Service 등)에는 ..
파드 및 컨테이너 리소스 관리 | Kubernetes : 요청(Request)과 제한(Limit) Resource pod.spec.containers.resources requests : 스케쥴러가 파드를 노드에 배치시킬 때 고려하는 리소스 요청. 이를 수용 가능한 노드에만 파드를 배치한다. cpu memory limits : 애플리케이션이 최대로 증가할 수 있는 상한 값 cpu memory $ kubectl explain pod.spec.containers.resources ... FIELDS: limits Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concep..
📌Index 헤드리스(Headless) 서비스 스테이트 풀셋(StatefulSets) ✔️ 헤드리스(Headless) 서비스 헤드리스(Headless) 서비스는 StatefulSet과 함께 사용하는 것으로, .spec.clusterIP의 필드 값을 None으로 설정하여 클러스터 IP가 없는 서비스이다. 💻 실습 : 일반적인 ClusterIP 서비스와 Headless 서비스의 비교 먼저 일반적인 ClusterIP 서비스를 다음과 같이 작성한다. myweb-svc.yaml apiVersion: v1 kind: Service metadata: name: myweb-svc spec: type: ClusterIP selector: app: web ports: - port: 80 targetPort: 8080 다음..