
먼저 해당 기능을 사용하게 된 이유는 master node에 pod가 스케줄링 되지 않게 NodeAffinity 옵션을 사용하였는데도 계속 master node에 pod가 스케줄링 되는 상황을 직면하였습니다. 사용한 NodeAffinity 속성은 다음과 같습니다. 아래의 속성에 관련된 Affinity 속성을 간단하게 정리해보았습니다. □ Affinity 라벨링 기반의 스케줄링은 단순히 키 값이 같은지만을 비교해서 노드를 할당하기 때문에 활용 방법이 비교적 제한되어 있습니다. nodeSelector 대비 더 유연한 표현식으로 Node를 지정하고 싶을때 affinity나 inter pod affinity를 이용하면 됩니다. 위의 Taints가 Pod가 배포되지 못하도록 하는 정책이라면, affinity는 P..

이번 포스팅은 Kubernetes를 운영하면서 어플리케이션에 HTTPS 이슈가 발생하여 해결한 내용을 공유하고자 합니다.. 어떻게 보면 정말 간단하고 Kubernetes networking을 잘 알면 바로 해결할 수 있는 부분이지만, 누군가에게는 도움이 되고자 하는마음에,, 먼저 외부에서 Kubernetes안에서 실행되는 Pod 즉 어플리케이션에 접속하려면 Ingress가 필요합니다. 클라이언트가 HTTP / HTTPS 요청을 Ingress에 보낼 때, 요청한 호스트와 경로에 따라 요청을 전달할 서비스가 결정됩니다. Ingress는 네트워크 스택의 어플리케이션 계층(HTTP Layer Control) 7에서 작동하며 서비스가 할 수 없는 쿠키 기반 세션 어피니티 등과 같은 기능을 제공합니다. hskim...

몇 년 전만 하더라도 대부분의 소프트웨어 애플리케이션은 하나의 프로세스 또는 몇 개의 서버에 분산된 프로세스로 실행되는 거대한 모놀리스(monolith)였습니다. 이런 레거시 시스템은 릴리스 주기가 느리고 비교적 업데이트가 자주 되지 않습니다. 요즘은 점차 마이크로서비스라는 독립적으로 실행되는 더 작은 구성 요소로 세분화되고 있습니다. 마이크로서비스는 개별적으로 개발, 배포, 업데이트를 확장할 수 있고 오늘날 급변하는 비즈니스 요구 사항을 충족시킬 만큼 신속하게 자주 구성 요소를 변경할 수 있습니다. 모놀리스 애플리케이션 모든 것이 서로 강하게 결합돼 있고, 전체가 하나의 운영체제 프로세스로 실행되기 때문에 하나의 개체로 개발, 배포, 관리돼야 합니다. 애플리케이션의 한 부분을 변경하더라도 전체 애플리케..