Kubernetes
- EKS 쓰지 마십쇼. 그래선 진짜 kubernetes 가 어떤 모습인지 영원히 모른채 살 겁니다. 이렇게 말해도 쓰겠죠?
- IP 추적 이슈가 없다면 CNI는 Calico 쓰십쇼.
- Amazon VPC CNI 를 쓰면 AWS의 지원을 받을 수 있죠? 그런데 정말 그런가요?
- Cilium 쓰지 마십쇼. 컨셉이 좋다 해서 구현 완성도가 높다는 보장이 있나요?
- K8s가 거대한 배포 시스템인데 자꾸 배포시스템 얹으려 하지 마십쇼.
- K8s가 거대한 플랫폼인데 그 위에 플랫폼 얹지 마십쇼.
- 멀티클러스터? 여태 실패한 프로젝트만 몇 개인지 압니까?
- Istio? 겉멋 든 건 아닙니까?
Author Details
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
혹시 EKS를 비추천 하시는 이유가 있으신가요
AWS만 비추하시는지 아니면 Managed Kubernetes를 비추하시는지 궁금합니다
CNI는 Calico만 추천하시는지도 궁금하네요
마스터 노드를 통제하면서 얻는 이점이 어마어마한데 그걸 포기한다는 게 어떤 의미가 있는지 생각해볼 필요가 있다고 봅니다. 마스터 노드에 대한 통제가 꼭 필요하지 않다는 전제에서는 Managed 전체가 나쁘다고 보기엔 제품군마다 특성이 많이 다릅니다. GKE, EKS, DigitalOcean, Vultr 등의 Managed 서비스를 써봤는데, GKE는 지나치게 통제하고 유연함이 없고, EKS는 융통성이 있지만 융통성을 발휘하는 순간 Managed 쓰는 편이 더 고통스럽습니다. DO, Vultr 등은 일반적인 사용자층을 고려했을 때 그만하면 괜찮나 싶긴 합니다. 아무래도 엔터프라이즈 고객이 많을 것 같지 않고 요구사항도 단순한 편일 것 같습니다.
EKS 이야기를 좀더 하자면, VPC CNI 가 기본 CNI 인데 개인적으로는 하자품이라고 생각합니다. 너무 많은 제약과 덜익은 설계로 고통받기 딱 좋습니다. EKS만 써 본 분은 이런 한계가 K8s의 한계인 줄 아는데 대체로는 EKS만의 문제입니다. 너무 길게 이야기하고 싶진 않은데, 제가 국내에서 가장 큰 규모로 k8s를 운영해보았고 AWS 엔지니어 분들과 이야기도 많이 나눴습니다. 그 분들 곤란하게 하는 질문도 자주 드리는데, 자가 운영을 해봤기 때문에 EKS의 한계가 눈에 잘 보입니다.
CNI 중에서 대규모 네트워크에서 한번도 문제를 안 일으킨 건 Calico 밖에 없습니다. 제가 다 써본 건 아니니 더 좋은 대안이 있을 수는 있습니다. 다만 Cilium은 구현 완성도가 너무 낮다고 생각합니다. 최근 반년 사이에 어마어마한 개선을 이루지 않았다면 그렇습니다. Amazon의 VPC CNI 같이 ENI 를 바로 사용하는 접근법도 개념상 장점이 많지만, 실제 구현상의 하자와 개념상의 일부 허점을 생각하면 Calico 같은 오버레이 네트워크가 더 낫다고 봅니다. 오버레이 네트워크의 유일한 단점은 IP 추적이 어렵다는 겁니다. 굉장히 큰 단점처럼 여겨질 수 있는데, ENI를 바로 사용하는 CNI는 안정적인 운영 자체가 만만치 않은 과제라는 점에서 상대적으로 작은 문제입니다.
한가지 더 말씀드리면 VPC CNI 를 쓸 때 쓰더라도 EKS가 아닌 Kops에서 자가운영하며 쓰면, 이런저런 패치를 직접할 수 있습니다. VPC CNI 저장소는 공개되어 있으니 소스코드를 직접 고쳐서 마스터 노드에 적용할 수 있습니다. PR 처리하면 일정 시간이 지난 후에는 유지보수 문제도 없어집니다. 반면 EKS를 사용하면 PR이 머징되어도 한참을 더 기다려야 합니다. EKS 공식 업그레이드에 CNI의 변경사항이 들어올 때까지는 손가락 빨아야 합니다. 대규모 서비스를 운영하면서, 그렇게 큰 비용을 지불하면서, 벤더의 눈치만 살피는 게 과연 올바른 운영일까요? 최악의 경우에는 회사의 뛰어난 개발자들을 총동원해서라도 문제를 고칠 수 있어야지. 아무런 수단도 없이 손가락만 빠는 건 …
Kubernetes를 많이 다뤄보지 않아서 “마스터 노드를 통제하면서 얻는 이점” 이런부분이 아직 감이 잘 안오는데 kubernetes 관련된 노하우는 직접 운영해보면서 경험해보는 방법 밖에 없을까요 ?
kubernetes 관련 자료는 공식 홈페이지 말고 혹시 추천해주실 자료가 있으시면 추천할만한것이 있으시다면 추천부탁드립니다.
디테일한 답변 감사드립니다
Managed 서비스 운영과 자가 운영 둘다 해보기는 현실적으로 어렵다 보니 그 이점을 알기 어렵습니다. 하나만 강조하자면, 마스터 노드가 없으면 마스터 노드에 배포되는 컴포넌트에 버그가 있어 전면 장애가 발생하는 일이 벌어져도 손만 빨아야 합니다. 컴포넌트가 오픈소스여서 소스코드를 변경하더라도 마스터 노드에 배포하지 못한다면 아무 소용 없습니다. Managed 서비스 대부분이 마스터 노드에서 벌어지는 일을 지표와 로그 등으로 전부 제공하지 않습니다. 감춰놔서 자기가 뭘 못 받고 있는지도 모르는 경우가 태반이죠
아 이해했습니다 Managed가 갖고있는 고질적인 문제내요 감사합니다