CS/Infra

쿠버네티스 공부 11일차 :: DB 파드는 어떻게 만들까? (스테이트풀셋)

lovelyunsh 2022. 11. 25. 20:49
  • 스테이트풀셋
    • 데이터베이스 파드를 만든다고 할 때 퍼시스턴트 볼륨으로 만들 수 있을까?
      • 레플리카 셋을 이용해 만든 파드는 동일한 퍼시스턴트 볼륨 하나만 참조 가능하다.
      • 그렇기 때문에 각각 다른 볼륨을 가진 데이터베이스 파드를 늘릴 수 없다.
    • 그럼 데이터베이스 파드는 어떻게 만들까?
      • 파드를 수동으로 만들기
        • 파드를 수동으로 만들면 각각 다른 볼륨을 지정해주면 된다.
        • 하지만 레플리카셋의 관리를 받지 못한다.
      • 파드 별로 레플리카셋 사용하기
        • 데이터베이스 파드 하나 당 하나의 레플리카 셋으로 관리하면 된다.
        • 하지만 각각 관리를 해주어야 하기 때문에 번거롭다.
      • 볼륨 하나로 쓰되 디렉토리로 나눠주기
        • 볼륨 하나에 디렉토리를 나눠 쓰도록 한다.
        • 레플리카셋에 어떤 디렉토리를 쓰라고 전달 할 수는 없지만, 생성되는 시점에 사용하지 않고 있는 디렉토리를 자동으로 선택하도록 할 수 있다.
        • 하지만 디렉토리 조정을 해주어야 하고, 볼륨에 병목 현상이 발생한다.
      • 기존의 것들로는 데이터베이스 파드를 만들기 쉽지 않다. 그래서 생긴 것이 스테이트풀 셋
    • 스테이트풀셋 이해하기
      • 스테이트풀셋은 예전엔 펫셋이라고 불렸다.
        • 이는 다른 일반적인 파드들을 가축 스테이트풀셋은 애완동물로 비유하는데서 왔다.
        • 다른 파드들은 죽으면 바로 완전히 다른 파드로 대체를 시킨다. 그저 가축을 바꾸는 것과 같이
        • 그에 반해 스테이트풀셋은 죽으면 아끼는 애완동물같이 완전히 같은 상태와 아이덴티티를 가지게 해야한다.
        • (애완동물보단 아끼던 인형 정도가 더 맞는 비유지 않을까 ..)
      • 안정적인 네트워크 아이덴티티
        • 스테이트풀셋이 생성하는 파드는 인덱스가 붙어서 파드 이름, 호스트 이름, 스토리지를 붙이는 데 사용된다. ( 레플리카셋은 랜덤 해시값이 붙었었다.)
        • 거버닝 서비스
          • 스테이트 풀셋은 각각 특별하기 때문에 특정 파드에게서 작동하길 바랄 수 있다.
          • 그렇기 때문에 파드는 거버닝 헤드리스 서비스를 각각 생성하여 가지고 있다.
          • 이 서비스를 통해 DNS 엔트리를 가지게 되고 파드의 주소로 접근 할 수 있다.
          • 파드 이름 a-0, 거버닝 서비스 이름 foo, 네임스페이스 default이면
            • a0.foo.default.svc.cluster.local이라는 FQDN로 접근이 가능하다.
      • 스케일 up down
        • 스케일 up을 할 때 인덱스에 따라 파드의 이름이 정해진다.
        • 스케일 down을 하면 가장 큰 인덱스의 파드부터 삭제 된다.
        • 어떤 이름의 파드가 생성되고 삭제될지 미리 알수가 있다.