IT/DevOps

    [kubernetes] pod 의 스케줄링 방법들과 예시 ( feat. anti affinity 활용 하여 다른 노드 다른 AZ에 스케줄링하기)

    Intro kubernetes 는 여러개의 노드가 클러스터링 되어있고, 그 안에 pod가 어느 노드로 스케줄링 해야할지를 상황에 따라 컨트롤 할 수 있어야 합니다. 오늘은 pod 스케줄링 기능중에 pod anti affinity 를 사용하여 각각 다른 노드와 다른 AWS AZ에 생성되도록 구성하는 방법에 대해 알아보고 관련된 내용을 살펴보겠습니다. pod의 기본(default) 스케줄링 pod의 기본 스케줄링은 first-come, first-served (FCFS) 방식입니다. 즉, pod가 생성되면, pod의 자원 요구 사항을 충족시키는 첫 번째 유효한 노드에 배치하게 됩니다. k8s의 Scheduler는 사용할 수 있는 리소스가 가장 많은 노드부터 시작해서 사용 가능한 노드 목록을 검토하고, pod..

    [DevOps] helm template에서 loop 돌리기 (rage until 사용)

    Intro helm chart를 사용하다보면 커스텀하게 변경해야할 경우가 종종 발생합니다. 오늘은 helm chart 문법에서 rage를 사용해서 for구문 처럼 loop 돌리고 정수 값을 0,1,2,3 으로 넘버링 하는 방법을 알아 보겠습니다. 결론 먼저 결론적으로 다음과 같이 {{range $index, $element := until (int .Values.replicas) }} 구문을 사용하면 됩니다. {{range $index, $element := until (int .Values.replicas) }} --- apiVersion: v1 kind: Service metadata: name: example-{{ $index }}-svc namespace: devops spec: ports: - ..

    [DevOps] NodLocal DNS Cache 란? (EKS에서 Node local dns사용하기)

    Intro kubnernetes는 MSA의 기반으로 만들어진 오픈소스 솔루션으로 kubernetes 클러스터 내부에서 모두 도메인기반으로 통신을 합니다. 쿠버네티스에서 기본적으로 사용되는 DNS는 CoreDNS입니다. MSA구조는 최대한 작은 단위로 나누어 지기 때문에 클러스터 내부에 서비스가 증가하면할 수록 많은 도메인 쿼리 처리가 필요 하게 됩니다. 여기서 CoreDNS의 성능 저하가 발생할 수 있는데요. 오늘은 CoreDNS앞단에서 도메인 캐싱을 하여 도메인 쿼리 성능을 향상시켜 주는 NodeLocal DNS Cache에 대해 알아 보도록 하겠습니다. NodLocal DNS Cache란? Nodelocal DNS Cache는 클러스터 노드에서 DaemonSet으로 DNS캐싱 에이전트를 실행하여 클러..

    [DevOps] helm template 다루기

    Intro kubernetes를 운영하는 엔지니어들은 helm 사용이 필수불가피 합니다. 일부 helm template을 커스터마이징하여 사용하게되는 경우도 빈번하게 됩니다. 따라서 helm template을 잘 다룰 수 있어야하겠죠. hlem은 리소스파일들을 템플릿화하기위해 go template을 사용합니다. 오늘은 go template으로 구성되어있는 helm에서 가장 많이 사용하는 문법에 대해 정리해보도록 하겠습니다. 공백(whitespace) 제거 {{- : 줄바꿈 포함한 왼쪽 공백 모두 제거 -}} : 줄바꿈 포함한 오른쪽 공백 모두 제거 whitespace 제거 구문 사용하지 않은 렌더링 예시 myvalue: "Hello World" drink: {{ .Values.favorite.drink ..