728x90
728x90
# Fargate를 쓰는 이유
- karpenter pod를 띄우기 위해서.
- (karpenter pod는 karpenter가 띄운 노드에 뜰 수 없다.)
- 별도 ec2 node group을 만들수도 있지만, 우리의 궁국적인 목적은 ec2 node group을 없애고 스팟으로만 운영하는 것이기 때문에 karpenter용 fargate를 띄움
- 참고로 pod 하나당 fargate 하나가 뜸
# Daemonset
- 노드의 백그라운드에서 항상 실행되며 여러 작업을 수행
- → 노드별로 파드가 하나씩 떠야 함.
- 이 때, fargate도 결국 노드의 한 종류인데 fargate에도 떠야하느냐? → 아니다. fargate는 hsot가 없기 때문에 데몬셋이 지원되지 않는다.
- 따라서 데몬셋들은 fargate가 아닌, ec2 노드들에만 떠야 함.
- https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/fargate.html#fargate-considerations
# 문제는?
- 데몬셋들은 ec2 node에만 떠야 함 → 이게 자동으로 인식되는 줄 알았다.
- 그러나 알고보니 nodeAffinity 설정을 통해 데몬셋 파드들이 fargate에는 뜨지 않도록 설정했어야 했다.
- nodeAffinity 설정이 되어있지 않던 데몬셋들 : prometheus-node-exporter / loki-promtail / datadog-agent
- -> 자꾸 pending상태의 daemonset pod들이 날아다녔다(?)
# 해결 (helm chart)
prometheus-node-exporter (in kube-prometheus-stack helm)
prometheus-node-exporter:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: eks.amazonaws.com/compute-type
operator: NotIn
values:
- fargate
loki-promtail (in loki-stack helm)
promtail:
enabled: true
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: eks.amazonaws.com/compute-type
operator: NotIn
values:
- fargate
datadog-agent (in datadog helm)
agents:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: eks.amazonaws.com/compute-type
operator: NotIn
values:
- fargate
끝
728x90
728x90
'공부 > Kubernetes' 카테고리의 다른 글
[kubernetes/GUI] OpenLens 로 쉽게 port-forward 하기 (0) | 2024.03.28 |
---|---|
[Karpenter] Disruption budget (중단 제어) 사용하기 (v0.34.0~) (feat. karpenter upgrade) (26) | 2024.03.09 |
[EKS/Terraform] Secondary IP 줄이기 with Terraform (25) | 2024.02.06 |
[ingress-nginx] restart 시 downtime 해결 - minReadySeconds (44) | 2023.11.29 |
[Cluster-Autoscaler] Over Provisioning with Terraform (4) | 2023.11.26 |
댓글