본문 바로가기

반응형

데브옵스/K8S

(6)
K8S Finalizers란? (K8S 리소스 종료 라이프사이클 / PV / PVC 삭제) Intro쿠버네티스 환경에서 Statefulset 애플리케이션을 사용하다 보면, PVC나 PV 리소스 또한 함께 사용하게 됩니다.노드의 statefulset pod를 Drain 하거나, 테스트를 위해 자원을 여러 번 생성/삭제 하는 등 퍼시스턴트 볼륨을 삭제할 상황도 굉장히 많은데요. 특정 자원은 delete, force delete 를 사용해도 삭제되지 않는 케이스가 있습니다. 이런 케이스에서 아래 명령어로, 원하는 리소스를 삭제할 수 있습니다.kubectl patch pv -n $PV_NAME -p '{"metadata": {"finalizers": null}}'--type merge 단순히 쿠버네티스의 지워지지 않는 리소스를 지우기 위해서라면, 이 커맨드만 사용하고 떠나셔도 되는데요.그런데 저 명령..
docker entrypoint 란 / k8s entrypoint 사용 ? (entrypoint 사용법) Intro 많은 시스템이 컨테이너 기반으로 올라가게 되면서, docker를 생성하여 프로세스를 띄울 일이 많아졌습니다. 또한 최근 흐름은 docker 자체가 단독적으로 사용되기보다는 K8S 시스템 내에서 docker를 사용하고 있습니다. 오늘은 docker file에 선언하는 entrypoint와, docker entrypoint 과 같은 기능을 K8S에서 사용하는 사례에 대해 간단히 설명합니다. Docker Entrypoint 란? docker의 entrypoint는 dockerfile 선언 시 컨테이너가 시작될 때 실행되는 커맨드를 지정하는 기능입니다. 최종적으로는 주로 컨테이너 안에서 항상 실행될 프로세스를 정의하는 데 사용됩니다. 간단한 예를 들어볼까요? FROM Alpine COPY excute..
[k8s network] nodelocaldns 란? (Nodelocal DNSCache) Intro K8S에서는 대부분의 통신이 도메인 기반으로 이루어집니다. CoreDNS를 통해 pod나 service 객체에 대한 DNS 질의가 가능하죠. K8S에서는 더 나은 DNS 성능을 위해 제공하는 서비스가 있습니다. NodeLocal DNSCache 우리가 흔히 nodelocaldns 라고 부르는 서비스의 정식 명칭은 NodeLocal DNSCache입니다. 애플리케이션의 존재 이유가 'caching'인데 길다는 이유로 cache가 생략되는게 좀 아이러니한데요. NodeLocal DNSCache는 K8S DNS 쿼리의 성능을 향상시키기 위한 캐싱 서비스입니다. DNS 질의에 대해, 동일한 요청을 캐시하여 앞단에서 처리함으로서, 추가적인 외부 DNS 쿼리를 수행하지 않고도 빠른 응답을 제공할 수 있습..
[k8s network] kube-proxy 란? kube-proxy 역할 Intro K8S cluster 내부에서는 컨테이너를 포함한 여러 객체들 간 여러 네트워킹이 이루어집니다. 그 중 주된 케이스는 pod 와 Service 객체 간의 통신이 아닐까 생각됩니다. 수많은 마이크로 서비스가 서로를 호출하고, 호출할 때 K8S 의 Service 객체를 사용하게 되는데요. 해당 포스트에는 이러한 흐름과 관련된 K8S Network component, kube proxy에 대해 설명합니다. K8S Service kube-proxy 이야기를 하기 전에 Service 객체에 대한 이야기를 하지 않을 수 없습니다. 앞서 K8S 클러스터 내의 주된 호출 케이스가 pod - Service 간의 통신이라고 말씀드렸는데요. 그 이유는 쿠버네티스의 pod는 IP가 가변하는 특성을 가지고 있기 때문..
[k8s network] coredns 란? core dns 작동 구조 및 config Intro K8S cluster는 pod를 통해 수많은 애플리케이션을 호스팅하며, service 등의 객체를 통해 요청에 대한 부하 분산을 하는 등 다양한 기능을 가지고 있습니다. K8S 내에서 이러한 통신은 도메인 기반 요청으로 이루어지며, K8S cluster 내의 DNS 질의를 위해 사용되는 coredns에 대해 알아봅니다. CoreDNS CoreDNS는 쿠버네티스 클러스터의 DNS 역할을 수행할 수 있는, 유연하고 확장 가능한 DNS 서버입니다. (링크) 클러스터 내에서 주로 1) 내부의 도메인 질의, 2) 외부 도메인 질의를 할 때 사용됩니다. 다른 애플리케이션과 마찬가지로 Pod로 호스팅되며, Deployment로 실행되어 Service로 요청을 받습니다. CoreDNS 사용 이유 주로 아래의..
K8S Node 캐시된 컨테이너 이미지 정리 (kubelet) Intro 저희는 컨테이너 오케스트레이션인 k8s를 통해 컨테이너 기반의 애플리케이션을 배포할 수 있습니다. k8s cluster 속에 pod라고 불리는 자원들은 노드 위에 격리되어 생성되고, container image를 사용해 생성되는데요. k8s에서는 image를 노드에 캐시 저장하여, 빠르게 이미지를 이용해 애플리케이션을 생성하도록 도와줍니다. 하지만 이렇게 저장되는 container image가 과다해지면, 노드의 스토리지 사용량에 영향을 줄 수 있습니다. K8S에서는 k8s node의 cached 되는 container image에 대해, kubelet을 통해 garbage collection을 제공합니다. kubelet garbage-collection kubelet의 config 변경을 통..

반응형