minikube란?
쿠버네티스는 마스터 노드(Master Node)와 하나 이상의 워커 노드(Worker Node)로 구성되어 있다.
Minikube(미니큐브)는 마스터 노드의 일부 기능과 개발 및 배포를 위한 단일 워커 노드를 제공해 간단한 쿠버네티스 플랫폼 환경을 제공한다.
Node
Node는 쿠버네티스 클러스터 내의 하나의 워커 머신 또는 가상 머신을 나타냅니다.
실제로 애플리케이션 컨테이너가 실행되는 곳으로, CPU, 메모리, 디스크 등의 리소스를 가집니다.
애플리케이션 컨테이너는 Node 내에서 동작하며, Node 간에 로드 밸런싱이 이루어집니다.
Pod
Pod는 쿠버네티스의 가장 작은 배포 단위입니다.
하나 이상의 컨테이너로 구성될 수 있으며, 컨테이너들은 동일한 네트워크와 스토리지를 공유하며 함께 배포됩니다.
Pod 내의 컨테이너는 동일한 노드 위에서 실행되며, 컨테이너 간에 간단한 통신이 가능합니다.
Deployment
Deployment는 Pod를 생성, 업데이트, 롤백 등을 관리하는 리소스입니다.
애플리케이션 업데이트를 쉽게 관리할 수 있도록 도와주며, 레플리카셋(ReplicaSet)과 함께 사용됩니다.
원하는 레플리카 수를 유지하도록 조정하며, 롤아웃 및 롤백을 통해 애플리케이션의 안정적인 배포를 지원합니다.
Service
Service는 Pod들을 외부 네트워크와 연결하는 추상화된 리소스입니다.
클러스터 내부에서 서비스 디스커버리와 로드 밸런싱을 가능하게 하며, Pod의 IP 주소가 변경되더라도 Service는 변하지 않습니다.
여러 Pod에 접근하는 클라이언트는 Service를 통해 접근하며, 서비스의 타입에 따라 클러스터 내부 또는 외부에서 접근 가능합니다.
배포
미리 작성한 yml script파일을 통해 도커 허브에서 이미지를 가져와 deployment를 생성하고
service를 생성하여 외부 접근을 설정해보겠습니다.
먼저 deployment를 생성하는 yml로 도커 허브의 이미지를 가져와 8080 포트의 deployment를 생성합니다.
template-spec-container-image 에는 docker hub에 배포되어 있는 이미지 주소를 적어줍니다.
kubectl apply -f cicd-devops-deployment.yml
다음 명령어를 위 스크립트 파일을 실행시키면 deployment가 생성되었음을 확인해볼 수 있다.
deployment가 생성됐다면 service를 통해 외부 접근을 설정해보겠습니다.
앞서 8080포트로 설정한 target deployment를 32000번의 노드 포트를 통해 접근을 할 수 있게 하겠습니다.
kubectl apply -f cicd-devops-service.yml
다음과 같이 떴다면 이제 해당 포트 번호로 접속할 수 있습니다.
'DevOps' 카테고리의 다른 글
Jenkins + Ansible + Kubernetes + Dockerhub를 통한 CI/CD 파이프라인 구축 (0) | 2023.08.27 |
---|---|
[Ansible] Ansible서버에서 kubectl 명령어 실행 (0) | 2023.08.23 |
jenkins + Ansible playbook + docker hub를 통한 빌드 및 배포 (0) | 2023.08.04 |
[Ansible] Ansible - Playbook 사용하기 (0) | 2023.08.02 |
[Ansible] Ansible 모듈 사용하기 (1) | 2023.07.29 |