본문 바로가기

전체 글35

EKS Helm에서 발생하는 Error: Kubernetes cluster unreachable 해결하기 EKS는 Kubernetes latest 버전을 지원하고 있지 못하다 보니 호환성 이슈가 종종 발생하고 있다. 대표적으로 kubectl을 사용했을 때 아래와 같은 오류 문구를 만날 수 있는데 발생한 이유는 EKS에서 지원하는 Kubernetes 버전과 내 환경의 kubernetes 버전과 충돌이 일어나서 발생한 오류이다. Kubernetes를 기반으로 동작하는 Helm 역시 동일한 이슈가 발생할 수 있게되는데 이 역시 Helm의 kubernetes 버전이 EKS와 맞지 않아서 발생하게 된다. 실제로 사용하고 있는 EKS에서 사용하고 있는 Kubernetes는 1.22 버전이지만 현재 사용하고 있는 Helm v3.9.1에서는 Kubernetes 1.24.2를 지원하고 있다. 따라서 EKS에서 지원하고 있는.. 2022. 7. 15.
Skaffold와 Cloud Code 일반적으로 쿠버네티스를 포함한 환경에서 개발을 한다면 수정된 코드를 테스트하기란 복잡한 절차가 따른다. 그러나 이를 효과적으로 단축하여 개발 효율성을 향상할 수 있는 방법이 있는데 바로 Skaffold이다. 이번 글에서는 Skaffold와 추가적으로 Skaffold를 효과적으로 사용할 수 있게 도와주는 IDE Extension인 Cloud Code에 대해서도 소개해보려고 한다. Skaffold란? Skaffold는 구글에서 개발한 Command Line Tool로 쿠버네티스 어플리케이션을 위한 지속적인 배포를 쉽게 가능하게 해 준다. 즉, 내가 개발한 애플리케이션의 빌드, 푸시, 배포 등의 워크로드를 다루는 툴이며, 코드를 작성하는 것만 집중할 수 있도록 도와준다. Skaffold와 일반 개발과정 차이 .. 2022. 7. 4.
Kubernetes Context 적용방법 쿠버네티스를 사용하다 보면 비단 로컬 환경뿐만이 아니라 EKS, GKE, on-premise 등 다양한 환경에서 사용하게 된다. 이때 로컬 환경도 사용하고 싶고 다른 환경도 같이 사용하고 싶을 때 쉽게 전환하기 위해 K8s에서는 use-context라는 명령어를 지원하고 있다. 이번 글에서는 여러 클러스터의 config 정보를 하나로 합쳐서 use-context를 통해 쉽게 전환할 수 있는 방법을 소개하려고 한다. 사전에 필요한 것들 위 글은 쿠버네티스 구축에 대한 이야기를 담고 있지 않기 때문에 사전에 내 쿠버네티스 환경에 추가할 외부 클러스터 config를 아래와 같이 준비한다. apiVersion: v1 clusters: - cluster: certificate-authority-data: serv.. 2022. 6. 28.
chroot로 컨테이너 환경 간접 체험하기 Docker 공부를 하다보면 어떻게 컨테이너 기술이 VM보다 손실없이 사용할 수 있는지 의문점이 들 것이다. 이는 기존에 리눅스에서 지원하는 namespace, cgroup, Union Mount 등의 기술을 활용했기 때문이다. 하지만 해당 개념을 공부하기에는 많은 시간이 들기 때문에 많은 사람들은 chroot로 간접 체험을 해보는 것을 추천하고 있다. 비록 chroot는 컨테이너 기반 기술은 아니지만 컨테이너 환경을 이해하는데 많은 도움이 되기 때문이다. 그래서 이번 글에서는 chroot로 컨테이너 환경을 간접 체험을 해볼 것이다. chroot(Changing root & Change the root directory)는 1979년에 나온 기능으로 컨테이너 기반 기술인 namespace, cgroup,.. 2022. 6. 6.
Minikube 환경에서 NodePort 사용하기 Minikube는 별도의 쿠버네티스 클러스터를 구성하지 않고 빠르게 로컬 쿠버네티스 클러스터를 구성해준다. 아무래도 로컬 환경으로 사용하다보니 쿠버네티스에서 사용되는 일부 오브젝트들을 사용하기 까다로운 경우가 있다. 서비스 타입 중 하나인 NodePort 역시 도커 드라이버를 통해 Minikube를 구성할 경우 Node IP를 직접적으로 사용하기 어려운 경향이 있다. 이를 해결하기 위해서 tunnel과 함께 minikube service라는 기능을 사용해야 한다. 먼저 상황을 가정하기 위해 deploy.yml과 svc-np.yml을 만들어 봤다. depoly.yml apiVersion: apps/v1 kind: Deployment metadata: name: web-deploy spec: replicas.. 2022. 5. 21.
Docker Image와 Dockerfile로 알아보는 Image Layer 들어가기 전에 이전까지는 도커의 존재만 알고 있을 뿐 도커가 정확하게 무엇을 하는지 왜 사용하는지에 대해 하나도 알지 못했다. 그러나 칼고리 스터디를 통해 도커를 접할 기회가 생겼고 까다로울 거 같다는 예상과 달리 막상 도커을 접하고 나니 새로운 지식을 배우게 되어 재밌었고 왜 그렇게 도커를 많이 사용하는지에 대해 알게되는 계기가 되었다. 도커의 다양한 개념 중 이번 글에서는 이미지 레이어에 대해 다뤄보려고 한다. “Docker 이미지는 일련의 레이어로 구성되어 있고 각 계층은 Dockerfile에 있는 명령어를 나타낸다.” - docker docs - 실제 공식 문서에 이미지에 대한 정의처럼 위 예제를 보면 다음과 같다. 4개의 Command로 구성되었으며, 여기서 File System을 수정하는 Co.. 2022. 4. 3.