목록DevOps/Kubernetes (23)
우노
들어가기 앞서, kubectl secret 명령어는 Kubernetes 클러스터에서 비밀 정보를 관리하는 데 사용됩니다. 해당 포스팅에선, 몇 가지 kubectl secret 명령어 예시에 대해서 다뤄보겠습니다. Secret 생성 Secret 값 직접 명시 # kubectl create secret --from-literal== kubectl create secret generic my-secret --from-literal=username=admin Secret 값이 적힌 파일 사용 # kubectl create secret --from-file= kubectl create secret generic my-secret --from-file=cert.pem Secret 조회 kubectl get secr..
Service란? Pod는 IP가 랜덤하게 지정 되고, 재시작 될 때마다 변경되기 때문에, 고정된 엔드포인트로 호출하는 것이 어렵습니다. 이때, Service를 사용해 고정된 IP로 Pod에 접근하도록 설정할 수 있습니다. 뿐만 아니라, Service를 통해 트래픽이 여러 Pod들에게 로드밸런싱되도록 설정할 수 있습니다. Service Type 서비스 유형은 크게 3가지로 구분됩니다. ClusterIP NodePort LoadBalancer ExternalName (해당 유형은 생략하겠습니다.) ClusterIP 디폴트 설정입니다. ClusterIP 유형은, Service에 클러스터 내부 가상 IP 주소인 ‘ClusterIP’를 할당해, 클러스터 내부에서만 해당 Service에 접근할 수 있도록하는 설정..
들어가기 앞서, 쿠버네티스 클러스터는 노드들의 집합이며, 노드는 두가지 종류로 이루어져있습니다. Master Node - Control Plane(컨트롤 플레인) 워커 노드와 클러스터 내 파드들을 관리하고 제어합니다. Worker Node - Data Plane(데이터 플레인) 파드를 통해 실제 Application을 동작시킵니다. Control Plane(컨트롤 플레인) Control Plane은 현재의 클러스터 상태를 사용자가 원하는 클러스터 상태(ex. yaml 파일 내용)로 끊임없이 조정해 주는 컨트롤 센터입니다. 즉, Control Plane에는 실제 서비스와는 무관한, k8s 클러스터 운영과 관련된 컴포넌트들로 이루어져 있습니다. API Server REST, kubectl 명령어 등을 입력 ..
Label 사용자가 특정 객체를 구분하기 위해 사용하는 기능입니다. Controller들은 특정 Label에 해당하는 Pod들을 관리합니다. 생성된 이후 언제든지 수정이 가능하고, 코어 시스템에 직접적인 영향은 없습니다. Selector 특정 Label에 해당하는 객체를 관리하기 위해 사용하는 기능입니다. Annotation 쿠버네티스 시스템이 필요한 정보들을 표시하거나, 주석의 목적으로 사용하는 기능입니다. 일반적으로 쿠버네티스에 새로운 기능을 추가할 때 사용됩니다. 다음과 같은 메타데이터를 기록할 수 있습니다. 사용자 지시 사항 필드 이미지 정보 (타임 스탬프, 릴리즈 ID, 빌드 버전, git 브랜치, 이미지 해시, 레지스터리 주소 등) 디버깅에 필요한 정보 (이름, 버전, 빌드정보) 참고 http..
들어가기 앞서, 해당 포스트에서는, Kubernetes에서 Service 생성 시 사용되는 port 유형을 정리합니다. 매번 볼 때마다 헷갈려서.. Nodeport Node에 접근할 때 사용되는 포트입니다. Port Cluster 안에서 내부적으로 Service 객체에 접근하기 위해 사용되는 포트입니다. Targetport Service 객체로 전달된 요청을 Pod로 전달할 때 사용되는 포트입니다. 전체적인 서비스 흐름 NodePort -> Port -> TargetPort 순서로 트래픽이 전달됩니다. deployment.yml과 service.yml 예제 참고 https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=freepsw&logN..
들어가기 앞서, Kubernetes Cluster 를 구성하는 방법은 다양합니다. Minikube을 이용하는 방법, 클라우드 플랫폼의 VM을 이용하여 구축하는 방법, 라즈베리파이 보드를 구매하여 클러스터를 만드는 방법 등 다양한 방법들이 있습니다. 해당 포스트에서는 MacOS 위에 VirtualBox 를 설치하여, 쿠버네티스 클러스터를 구축하는 방법에 대해서 살펴보겠습니다. 설치 스펙 MacOS VirtualBox 가 설치된다면, 어떤 호스트든 괜찮습니다. VirtualBox Master, Worker node 용 VM 을 생성할 수 있도록 하는 툴입니다. Ubuntu 20.04 우분트 서버를 기준으로 쿠버네티스 클러스터를 생성해보겠습니다. k3s 적은 리소스로도 쿠버네티스 컴포넌트를 실행할 수 있도록 ..
진행 순서 Docker Desktop for Mac 설치 Docker Desktop Kubernetes 사용 설정 Kubectl 설치 Kubernetes Dashboard 설치 계정 생성 계정 토근 조회 계정 토큰을 통해 Kubernetes Dashboard 로그인 Docker Desktop for Mac 설치 Docker Desktop 은 kubernetes 를 지원하기 때문에, 우선 Docker Desktop for Mac 을 설치합니다. https://www.docker.com/products/docker-desktop Docker Desktop Kubernetes 사용 설정 Docker Desktop 에 접근한 뒤, 우측 상단의 톱니바퀴 버튼을 통해 Preferences 로 접근합니다. 이후, 좌..
들어가기 앞서, 해당 포스트는 인프런의 ‘대세는 쿠버네티스 [초급~중급]’ 강의를 기반으로 작성되었으며, [기초편] 기초 다지기 - ‘Getting started - Kubernetes - 실습’ 에 해당하는 내용입니다. Nodejs 앱을 일반 서버, 도커, 쿠버네티스 환경에서 각각 실행시켜보며, 각각의 차이점에 대해서 이해할 수 있습니다. 실습 순서 Linux 를 사용한 Nodejs 앱 배포 Docker 를 사용한 Nodejs 앱 배포 Kubernetes 를 사용한 Nodejs 앱 배포 Linux 를 사용한 Nodejs 앱 배포 전체적인 구조 CentOS 에 nodejs 설치 curl -sL https://rpm.nodesource.com/setup_10.x | sudo bash - yum -y ins..
들어가기 앞서, 해당 포스트는 인프런의 ‘대세는 쿠버네티스 [초급~중급]’ 강의를 기반으로 작성되었으며, [기초편] 기초 다지기 - ‘VM vs Container’ 에 해당하는 내용입니다. 구조적인 측면에서, VM 과 Container 의 차이 하단의 좌측 그림은 VM Server 를 의미하고, 우측 그림은 Container Server 를 의미합니다. VM Server 우선, VM Server 와 Container 서버는, 공통적으로 Host OS 가 올라갑니다. 이후, VM Server 는, Host OS 위에 VM 을 가상화시키기 위해, 여러 Hypervisor 들을 올립니다. 마지막으로, 원하는 Guest OS 기반의 VM 을 생성하게 됩니다. 이 때, Guest OS 는 Host OS 와 독립적..
들어가기 앞서, 해당 포스트는 인프런의 ‘대세는 쿠버네티스 [초급~중급]’ 강의를 기반으로 작성되었으며, [기초편] 기초 다지기 - ‘Why Kubernetes?’ 에 해당하는 내용입니다. 서비스에 따른 서버 자원 우리는, 어떤 서비스든 원활하게 유지하기 위해선, 충분한 서버 자원들이 뒷받침 되어야 한다는것을 너무나 잘 알고 있습니다. 하지만, 기업 입장에선, 트래픽의 양을 예측하기 어려울 뿐더러, 엄청 많은 자원들을 준비해놓기에는 비용적인 측면에서 쉽지 않습니다. 또한, 한 서비스가 아닌 여러 서비스를 운영한다면, 상황은 더더욱 어려워집니다. 따라서, 아래 예제를 통해, 쿠버네티스가 서비스 운영에서 어떠한 이점을 제공하는지에 대해 다뤄보겠습니다. 쿠버네티스 사용 이점 예를 들어, 한 회사는 아래 그림과..