DevOps/Kubernetes 13

Kubernetes Architecture

컨트롤 플레인 컴포넌트 kube-apiserver: 쿠버네티스 API를 노출하는 쿠버네티스 컴포넌트 etcd: 모든 클러스터 데이터를 담는 키-값 저장소 kube-scheduler: 노드가 배정되지 않은 새로 생성된 파드를 감지하고 실행할 노드를 선택하는 컴포넌트 kube-controller-manager: 노드 컨트롤러, 레플리케이션 컨트롤러, 엔드포인트 컨트롤러, 서비스 어카운트, 토큰 컨트롤러를 포함한다. cloud-controller-manager: 클라우드별 컨트롤 로직을 포함하는 컴포넌트 노트 컴포넌트 kubelet: 각 노드에서 실행되는 에이전트. 파드에서 컨테이너가 확실하게 동작하도록 관리 kube-proxy: 각 노드에서 실행되는 네트워크 프록시로 서비스 개념의 구현부 컨테이너 런타임: ..

DevOps/Kubernetes 2022.07.10

쿠버네티스 (Kubernetes) 배포를 위한 고급 설정

쿠버네티스는 클러스터 내부에서 컴퓨팅 자원 활용률(Utilization)을 늘리는 것이 중요하다. 컨테이너와 포드의 자원 사용량 제한: Limit, Request apiVersion: v1 kind: Pod metadata: name: resource-limit-with-request-pod labels: name: resource-limit-with-request-pod spec: containers: - name: nginx image: nginx:latest resources: limits: memory: "256Mi" cpu: "1000m" requests: memory: "128Mi" cpu: "500m" - 참고: cpu 1개를 뜻하는 1000m(밀리코어) requests는 적어도 이만큼의 자..

DevOps/Kubernetes 2022.06.26

SonarQube on Kubernetes

SonarQube on Kubernetes Azure에서 쿠버네티스를 기반으로 SonarQube를 적용해보자. PersistentVolumeClaim 생성 data와 plugin 저장을 위한 2개 PVC 생성 apiVersion: v1 kind: PersistentVolumeClaim metadata: name: sonar-data spec: accessModes: - ReadWriteOnce storageClassName: default resources: requests: storage: 31Gi apiVersion: v1 kind: PersistentVolumeClaim metadata: name: sonar-extensions spec: accessModes: - ReadWriteOnce stor..

DevOps/Kubernetes 2022.06.25

쿠버네티스(Kubernetes) PV, PVC

쿠버네티스(Kubernetes) PV, PVC 여태껏 각 포드는 별도의 데이터를 갖고 있지 않았고 단순히 요청에 대한 응답만을 반환했다. DB처럼 포드 내부에서 특정 데이터를 보유해야 하는 상태가 있는(stateful) 애플리케이션의 경우 데이터를 어떻게 관리해야 할지 고민해야 한다. MySQL 디플로이먼트를 통해 포드를 생성했더라도 디플로이먼트를 삭제하면 포드도 함께 삭제되고 데이터도 함께 삭제된다. 이를 해결하기위해 쿠버네티스에서도 호스트에 위치한 디렉토리를 각 포드와 공유함으로써 데이터를 보존하는 것이 가능하다. 로컬볼륨: hostPath, emptyDir hostPath는 호스트와 볼륨을 공유하기 위해 사용하고 emptyDir은 포드의 컨테이너 간에 볼륨을 공유하기 위해 사용함 워커 노드의 로컬 ..

DevOps/Kubernetes 2022.05.20