[kubernetes] pod master 노드에 지정해서 띄우기 - label

Hoon·2022년 11월 22일
0

Kubernetes

목록 보기
7/7

Why?

프로메테우스 컴포넌트들을 마스터 노드에 띄우기 위함.
Worker 노드에는 다른 파드들이 올라간다. 그렇기 때문에 특정 상황에서는 워커노드에 많은 파드들이 올라가며 노드의 불안정성이 커질 수 있기 때문에 프로메테우스 컴포넌트를 마스터 노드에 띄운다.

Label 설정

쿠버네티스는 노드를 라벨로 관리할 수 있다.

  1. label 조회

kubectl get nodes --show-labels

  1. node에 label 추가

kubectl label nodes [node_name] [key]=[value]

kubectl label nodes ip-10-0-3-65.ap-northeast-2.compute.internal key=worker
kubectl label nodes ip-10-0-3-70.ap-northeast-2.compute.internal key=worker
kubectl label nodes ip-10-0-3-181.ap-northeast-2.compute.internal key=master

프로메테우스 컴포넌트 마스터에 띄우기

helm으로 install 한다.
앞의 배포와 마찬가지로 values.yaml을 참고해 적절하게 overwrite해준다.

helm install prometheus prometheus-community/prometheus \
--set pushgateway.enabled=True \
--set alertmanager.enabled=True \
--set nodeExporter.tolerations[0].key=node-role.kubernetes.io/master \
--set nodeExporter.tolerations[0].operator=Exists \
--set nodeExporter.tolerations[0].effect=NoSchedule \
--set alertmanager.service.annotations."service\.beta\.kubernetes\.io/aws-load-balancer-type"=nlb \
--set alertmanager.tolerations[0].key=node-role.kubernetes.io/master \
--set alertmanager.tolerations[0].operator=Exists \
--set alertmanager.tolerations[0].effect=NoSchedule \
--set alertmanager.nodeSelector.key=master \
--set alertmanager.configMapOverrideName=notifier-config \
--set alertmanager.securityContext.runAsGroup=1000 \
--set alertmanager.securityContext.runAsUser=1000 \
--set alertmanager.service.type="LoadBalancer" \
--set alertmanager.persistentVolume.existingClaim="prometheus-alertmanager" \
--set alertmanager.mountPath="/efs/perometheus/alertmanager" \
--set server.tolerations[0].key=node-role.kubernetes.io/master \
--set server.tolerations[0].operator=Exists \
--set server.tolerations[0].effect=NoSchedule \
--set server.nodeSelector.key=master \
--set server.service.annotations."service\.beta\.kubernetes\.io/aws-load-balancer-type"=nlb \
--set server.persistentVolume.existingClaim="prometheus-server" \
--set server.mountPath="/efs/perometheus/server" \
--set server.securityContext.runAsGroup=1000 \
--set server.securityContext.runAsUser=1000 \
--set server.service.type="LoadBalancer" \
--set server.storage.tsdb.path="/efs/perometheus/server"

Summary

alertmanager, server는 마스터 노드에 올린다.
nodeExporter는 모든 노드에 올린다.
alertmanger, server는 efs에 마운트한다.
nlb type으로 alertmanager, server를 외부에 노출한다.
SecurityContext 설정을 해준다.(runAsUser, runAsGroup)

master node에 띄워진 걸 볼 수 잇다.

Reference

0개의 댓글