본문 바로가기

MLOps/Kubernetes9

[Kubernetes] Object 기초 - ConfigMap, Secret 이번 글에서는 kubernetes의 object 중 ConfigMap과 Secret에 대해서 살펴보고자 합니다. 해당 글은 Inflearn의 '대세는 쿠버네티스 [초급~중급]' 강의를 학습하면서 작성한 글임을 미리 알려드립니다. 바로 예시를 들어 설명하겠습니다. 서비스를 운영할 때는 테스트를 진행하기 위한 개발 서버와 실제 운영을 위한 운영 서버가 존재합니다. 개발과 운영 서버에서는 보안 설정, 유저, 키 등 일부 설정들에 차이가 있습니다. 이러한 차이로 인해 개발과 운영 서버의 이미지를 각각 생성하게 된다면, 상당히 비효율적일 수 있습니다. 따라서 하나의 image로도 개발과 운영 환경에 배포할 수 있도록, 환경 변수들을 관리해 주는 object가 바로 ConfigMap과 Secret입니다. 일반적인 .. 2023. 12. 13.
[Kubernetes] Volume 기초 - emptyDir, hostPath, PVC/PV 이번 글에서는 Kubernetes의 구성 요소 중 하나인 Volume의 기초에 대해 작성하고자 합니다. 해당 글은 Inflearn의 '대세는 쿠버네티스 [초급~중급]' 강의를 학습하면서 작성한 글임을 미리 알려드립니다. Volume 기초에서는 크게 1) emptyDir, 2) hostPath, 3) PVC/PV에 대해 살펴보겠습니다. 우선 emptyDir입니다. emptyDir은 volume이 생성될 당시에는 해당 volume의 내용에는 아무것도 없기 때문에 붙여진 명칭으로, pod 내에서 container 간 데이터를 공유하기 위한 volume입니다. 아래 그림을 보면, container1과 container2는 같은 volume을 mount하고 있으므로, container 간 데이터를 전송하지 않아도.. 2023. 12. 10.
[Kubernetes] PostgreSQL 설치 및 실행 이번 글에서는 Kubernetes(minikube)에 PostgreSQL을 설치하고 간단하게 실행하는 방법에 대해 살펴보도록 하겠습니다. PostgreSQL과 같은 DB의 경우 물리적인 저장소가 필요하기 때문에, PV(Persistance Volume)과 PVC(Persistance Volume Claim)을 생성해줘야 합니다. DB 관련된 폴더를 생성하고 pv와 pvc 관련된 yaml 파일을 생성합니다. $ sudo mkdir -p ./postgres $ vi postgres/pv.yml apiVersion: v1 kind: PersistentVolume metadata: name: postgres-pv labels: type: local spec: storageClassName: manual capa.. 2023. 11. 29.
[Kubernetes] Service 기초 이번 글에서는 Kubernetes의 구성 요소 중 하나인 Service의 기초에 대해 작성하고자 합니다. 해당 글은 Inflearn의 '대세는 쿠버네티스 [초급~중급]' 강의를 학습하면서 작성한 글임을 미리 알려드립니다. Kubernetes의 pod는 재생성될 때마다 IP가 초기화되는 것과 같이 영구적이지 않다는 특성을 가지고 있습니다. 따라서 pod가 재생성되더라도 외부 혹은 내부에서 접근이 용이하도록 Service를 사용합니다. Service의 유형은 크게 1) ClusterIP, 2) NodePort, 3) Load Balancer 등이 있으며, 차례대로 살펴보도록 하겠습니다. 위에서 간단하게 언급한 것처럼, pod는 메모리 및 CPU 이슈로 인해 언제든지 내려갈 수 있고, 재생성되기는 하지만 IP.. 2023. 11. 25.
[Kubernetes] Helm 설치 이번 글에서는 kubernetes 패키지 관리 툴인 Helm 설치 과정에 대해 살펴보고자 합니다. Python의 pip와 Node.js의 npm 등이 대표적인 패키지 관리 툴이며, helm도 kubernetes에서 유사한 역할을 수행합니다. RedHat에서 설명하는 Helm을 간단하게 살펴보면, Helm은 helm chart를 통해 애플리케이션 정의부터 업그레이드까지 설명하는 방식으로 작동하며, CLI 툴을 사용하여 애플리케이션을 생성, 관리, 구성하는 것이 가능하다고 합니다. 설치 과정은 간단합니다. Helm 문서에 나와있는 설치 방법으로, 다음 코드들을 입력해 주면 설치가 완료됩니다. $ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/hel.. 2023. 11. 15.
[Kubernetes] Pod 기초 이번 글에서는 Kubernetes의 구성 요소 중 하나인 Pod의 기초에 대해 작성하고자 합니다. 해당 글은 Inflearn의 '대세는 쿠버네티스 [초급~중급]' 강의를 학습하면서 작성한 글임을 미리 알려드립니다. Pod는 하나 혹은 여러 개의 container 집합으로, Kubernetes application 중 가장 작은 단위입니다. 그럼 그림과 코드를 통해 살펴보겠습니다. Pod는 하나의 독립된 서비스를 실행할 수 있는 container들로 구성되어 있고, 내부 혹은 외부에서 접속할 수 있도록 port를 가지게 됩니다. 이때 container는 한 개 이상의 port를 부여받을 수 있지만, 다른 container의 port와 중복되서는 안됩니다. Pod가 생성될 때, 내부 IP가 자동 할당되며 재.. 2023. 11. 13.
[Kubernetes] minikube 설치 및 실행 (Linux) 이번 글에서는 Linux 환경에서 minikube를 설치하고 간단하게 실행하는 방법에 대해 살펴보고자 합니다. 저번 글에서는 Windows 환경에서의 minikube 설치 과정에 대해 알아봤었습니다. 하지만 wsl 내에서는 minikube가 실행되지 않아, Linux 환경으로 재설치를 진행했습니다. Windows 환경의 minikube는 제어판을 통해 제거하실 수 있습니다. 1. minikube 설치 Windows와 마찬가지로 해당 링크(https://minikube.sigs.k8s.io/docs/start/)에서 설치 방법을 확인할 수 있습니다. Operating System에서 Linux를 선택하면, 설치 파일 대신 코드가 나옵니다. 두 라인의 코드를 그대로 실행해 주시면 됩니다. cmd 창에서 ws.. 2023. 11. 10.
[Kubernetes] Kubernetes 기초 이번 글에서는 Kubernetes의 기초에 대해 작성하고자 합니다. 해당 글은 Inflearn의 '대세는 쿠버네티스 [초급~중급]' 강의를 학습하면서 작성한 글임을 미리 알려드립니다. 우선 Kubernetes에 대해 간단하게 살펴보면, kubernetes는 단어가 길기 때문에 보통 짧게 k8s라고도 작성합니다. redhat에서는 kubernetes를 컨테이너화된 애플리케이션을 배포, 관리, 확장할 때 수반되는 다수의 수동 프로세스를 자동화하는 오픈소스 컨테이너 오케스트레이션 플랫폼이라고 소개하고 있습니다. 보다 쉽게 설명하면, 여러 컨테이너를 효율적으로 관리할 수 있는 플랫폼이라고 생각해 주시면 될 것 같습니다. 그럼 강의 순서에 따라 kubernetes에 관한 내용을 설명하겠습니다. 1. Why Kub.. 2023. 11. 1.
[Kubernetes] minikube 설치 및 실행 (Windows) 이번 글에서는 Windows 환경에서 minikube를 설치하고 간단하게 실행하는 방법에 대해 살펴보고자 합니다. minikube는 로컬 환경에서 Kubernetes의 클러스터를 손쉽게 구성할 수 있도록 돕는 툴 중의 하나입니다. k3s라는 툴도 존재하지만, minikube를 보편적으로 사용하는 것 같아 minikube를 통해 진행하겠습니다. minikube를 설치하기 이전에 docker가 설치되어있어야 하므로, docker가 설치되지 않은 분은 docker 설치 관련 글(https://dslyh01.tistory.com/39)을 참고해 주시길 바랍니다. 1. minikube 설치 minikube는 다음 링크(https://minikube.sigs.k8s.io/docs/start/)에서 설치하는 것이 가.. 2023. 10. 27.