[Kubernetes] DevOps 한 방 정리
·
Kubernetes
DevOps에서 가장 중요한 것Spring Boot Application 기준의 개발 환경에서는,Gradle을 통해 빌드하고, 빌드된 실행 파일을 가지고 실행하여 접속한다.또한 이 두 과정 모두 JDK가 필요하다. 반면 인프라 환경에서는 App 실행만을 위한 실행 파일과 JDK만 있으면 되고,CI/CD 환경에서는 빌드만을 위한 Gradle과 JDK만 있으면 된다. 인프라 환경에서는 dev, qa, prod 등으로 각각의 환경을 구성하게 되고,개발 환경의 테스트용 구성이나, 운영 환경의 이중화 등의 추가적인 구성이 요구된다. CI/CD 환경에서는 인프라 환경으로 실행 파일을 넘겨주기 위한 배포라는 과정이 추가되는데,혼자 App을 개발하는 것이 아니기 때문에 GitHub 등의 소스 통합 관리 툴을 이용하여 ..
[Kubernetes] Component 동작으로 이해하기
·
Kubernetes
Kubernetes Cluster 설치까지마스터 노드마스터 노드용 VM에 kubectl, kubeadm, kubelet, container runtime 설치kubeadm 명령어로 manifests를 기반으로 Control Plane Component들 생성dashboard, metrics-server 등 기본 기능을 확장시기 위한 Addon Pod 설치kubectl이 인증서를 가지고 kube-apiserver로 API를 호출해서 etcd에 각 Object들에 대한 데이터를 저장한다.워커 노드다른 VM으로 여러 대의 워커 노드 생성하고 kubeadm, kubelet, container runtime 설치해당 워커 노드를 마스터 노드에 join 시켜서 Worker Component 영역 생성 (kube-p..
[Kubernetes] Application 기능으로 이해하는 PV/PVC, Deployment, Service, HPA
·
Kubernetes
PVC, PVPVC의 resource, accessMode와 PV의 capacity, accessMode는 동일하게 설정두 Object는 selector와 label로 연결되어 있지만, 두 속성이 다르면 연결되지 않는다.localnodeAffinity : 어느 노드에 Pod를 생성할 건지 정하는 속성PV에 연결된 Pod는 nodeAffinity 속성에서 설정한 노드에 만들어진다.해당 노드에 path를 만들어 놓으면 쿠버네티스가 컨테이너와 연결해 준다.컨테이너에서 구성된 path에 파일을 만들면 실제 파일은 노드의 path에 저장되고,이 파일은 Pod가 죽더라도 유지되기 때문에 새 Pod가 만들어지면 그대로 확인할 수 있다.hostPathPod에 nodeSelector 속성으로 노드 지정hostPath는 ..
[Kubernetes] Application 기능으로 이해하는 ConfigMap, Secret
·
Kubernetes
ConfigMap, Secret 기본 개념ConfigMap컨테이너 내부의 환경 변수를 주입하기 위해 ConfigMap을 사용한다.ConfigMap의 data 속성 내에 key:value 형식으로 주입할 수 있다. ConfigMap에 들어가는 데이터에는 크게 아래와 같은 종류가 있다.인프라 환경에 따른 변수App의 기능을 제어하기 위한 변수외부 환경을 App으로 주입시키기 위한 변수환경 변수는 Pod가 생성될 때 한 번만 주입되기 때문에,Pod가 생성된 이후 ConfigMap의 값을 바꾼다고 해서 Pod의 환경 변수가 변경되진 않는다.Secret조금 더 중요한 환경 변수를 담기 위해 Secret을 사용한다.Secret의 stringData 속성에 파일일 이름과 해당 파일에 담을 내용을 기입하는 형태로 구성..
[Kubernetes] Application 기능으로 이해하는 Probe
·
Kubernetes
Probe 기본 개념Probe는 쿠버네티스에서 Application의 상태를 확인하고 그에 맞는 처리를 해주기 위한 기능이다.Probe에는 아래와 같은 속성들이 있다.httpGet : 상태 확인을 위한 API 설정 (App에 구성되어 있어야 함)path : API 경로port : 요청할 컨테이너 PortperiodSeconds : API 요청 주기successThreshold : 해당 수치 이상으로 API 요청에 성공하면 성공 상태로 취급할 횟수failureThreshold : 해당 수치 이상으로 API 요청에 실패하면 실패 상태로 취급할 횟수Probe에는 3가지 종류가 있고, 각각 아래와 같이 동작한다.startupProbe : App이 기동 된 직후 정상 시작 여부를 확인.성공으로 간주되면 start..
[Kubernetes] Object 그려보며 이해하기
·
Kubernetes
Object 이해하기쿠버네티스를 구성하는 각 Object의 구성을 그려보면 아래와 같다. 아래 각 Object를 생성하는 yaml 내용의 주석을 통해 각 상세한 내용을 이해해 보자. 참고로 아래 yaml들을 그대로 쿠버네티스 대시보드에 입력하면 생성이 되는데,그 전에 아래 명령어를 통해 디렉토리를 생성해 두어야 한다.mkdir -p /root/k8s-local-volume/1231 출처 : https://cafe.naver.com/kubeops/36NamespaceNamespace : Object들을 그룹핑해주는 역할.apiVersion: v1kind: Namespacemetadata: name: anotherclass-123 labels: part-of: k8s-anotherclass m..
[Kubernetes] 실무에서 쿠버네티스가 정말 편한 이유
·
Kubernetes
편해진 IT 인프라 구축쿠버네티스가 나온지 10년 정도밖에 되지 않았는데,현재 아래와 같이 정말 많은 제품들이 쿠버네티스 생태계 위에서 돌아간다.여기에 있는 많은 것들을 다 알 수도 없고, 이렇게까지 필요도 없으니 중요한 것들만 줄여나가 보자.아래와 같은 기준으로 줄일 수 있다.CNCF 프로젝트 중 Graduated or Incubating ProjectsCNCF 멤버 제품 / 비 CNCF 멤버 제품 중 자주 사용하는 것들이들 중 GitHub Stars가 높은 프로젝트들이나 보편적인 것들을 줄이면 아래 정도로 축약할 수 있다.이 오픈 소스들을 공부하게 될 때 이것들만 잘 깊이있게 보면 좋지만,갑자기 누군가 요즘 이런 게 좋다더라 하는 얘기를 들으면 괜히 공부해야 하는 기분이 들 게 마련이다. 여기에 있는..
[Kubernetes] 무게감 있게 쿠버네티스 설치
·
Kubernetes
개요강의 등을 통해 제공하는 빠르게 설치하는 방법을 따라 하면 쿠버네티스를 빠르고 쉽게 설치할 수 있다.하지만 그렇게 설치하게 되면, 설치 중 실패하는 경우 어디서 문제인지 알기가 어렵고, 설치 이해도는 낮아지게 된다. 또한 쿠버네티스 오브젝트들인 Pod나 Service를 공부하면서 개념이나 기능 만으로 이 기술들을 이해하는 데 한계가 있는데,쿠버네티스 자체 구성을 조금 알고 이 개념들을 공부하는 것이 더 이해가 잘 된다. 쿠버네티스 구성은 쿠버네티스를 설치할 때 가장 배우기 좋은 내용이므로,쿠버네티스를 제대로 공부하고 싶다면 설치 절차를 익혀서 쿠버네티스 구성을 꼭 이해하고 넘어가자. 참고로 본 글은 Virtualbox, Vagrant를 이용하여 만들어진 아래 스크립트를 기준으로 세부 내용을 설명한다...