우리는 새로운 Kubernetes 클러스터 인프라를 계획하고 있는데 몇 가지 질문이 있습니다. 현재 우리는 환경(개발, 스테이징, 프로덕션)과 여러 팀이 작업하고 있는 하나의 대규모 클러스터를 보유하고 있습니다. 처음에는 데모인 "POC"에 불과했습니다. 하지만 아시다시피 임시 솔루션보다 오래 지속되는 것은 없습니다. 이 설정에는 몇 가지 일반적인 문제가 있으며 대상 아키텍처에서는 이러한 주제 중 일부를 수정할 계획입니다.
여러분 중 일부가 지식/경험을 공유할 수 있기를 바랍니다.
우선, 애플리케이션당 하나의 클러스터는 솔루션이 아닙니다. 애플리케이션은 매우 작으며 모든 팀에는 약 3~5개의 애플리케이션이 있으며 환경당 모든 노드에 대해 약 6~20GB의 RAM이 필요합니다. 따라서 단일 클러스터는 실제로 옵션이 아닙니다.
우리는 개발, 스테이징(qa), 프로덕션 및 운영을 위해 데모 클러스터 등 환경당 하나의 클러스터를 계획합니다. 모든 것이 자동화되고 terraform + ansible(kubespray)을 사용하여 IaC가 될 것입니다. 모든 팀/애플리케이션 범위는 원인에 따라 단일 네임스페이스를 갖습니다.
우리의 질문/문제:
모니터링 일반적으로 우리는 Prometheus와 Grafana를 사용하여 포드/클러스터 리소스 사용량을 모니터링합니다. 새로운 기능에는 중앙 로깅도 포함되어야 합니다(현재 솔루션을 시험 중입니다). 인프라 팀에는 괜찮지만 인프라는 애플리케이션 수준에서 모니터링하기를 원하지 않습니다.
앱 팀에 모니터링을 제공할 수 있는 방법이 있나요? 예: 귀하(앱 팀)는 필요한 모든 로그, CPU, RAM 사용량에 대한 알림을 설정할 수 있습니다. "이 조타 차트를 출시하기만 하면 됩니다." 좋은 세상에서는 모든 팀(즉, 모든 네임스페이스)에 자체 모니터링 스택을 제공하여 스토리지와 RAM+CPU 사용량을 제한할 수 있고 모든 팀이 "정렬된" 리소스를 사용할 수 있습니다(따라서 팀이 로그/모니터링 요구 사항이 많기 때문에 더 많은 리소스를 "주문"해야 합니다.") 또한 이러한 접근 방식을 기반으로 가장 적합한 소프트웨어를 선택할 수 있습니다.
또 다른 해결책은 인프라 팀이 중앙 모니터링/로그 솔루션을 설정하고 액세스를 제한하는 것입니다. App-Team A는 App-Team B의 로그/CPU 사용량/RAM 사용량/디스크 사용량에 액세스할 수 없어야 합니다. 하지만 실제로 그렇게 할 수 있는 방법은 없습니다.
인프라 팀이 해당 스택을 설치하는 옵션일 수 있지만 제가 본 것은 특정 네임스페이스에 모니터링 스택을 설치할 때 스택에 클러스터에 대한 관리자 액세스 권한이 필요하다는 것입니다. 내 의견으로는 이것은 좋지 않습니다.
내가 잘못?
저장 우리는 Gluster 저장소를 가지고 있으며 이를 유지하고 싶습니다. 팀에 디스크가 필요한 경우 "team1-disk5"와 같은 특정 크기 및 StorageClassName을 가진 "glusterfs 영구 볼륨"을 추가합니다. 이를 기반으로 팀에서는 PVC를 생성하고 스토리지를 사용할 수 있습니다. 과거에는 잘 작동했습니다.
이것이 좋은 해결책입니까? 다른 아이디어가 있나요?
지금은 그게 전부인 것 같아요. 그 두 가지 질문뿐입니다. 나를 올바른 방향으로 움직일 아이디어가 있습니까?
감사해요!