본문 바로가기

클라우드/쿠버네티스(Kubernetes)

(47)
쿠버네티스 Kubernetes 스토리지 볼륨 4 / hostPath 볼륨 # hostPath 볼륨 - 파드가 동작하는 쿼네티스 클러스터의 노드(호스트)의 로컬 파일시스템의 파일 및 디렉터리를 파드가 사용 할 수 있는 볼륨으로 제공 - 호스트의 디렉토리를 지정해줄 수 있음(데이터를 채워서 또는 빈 디렉토리여도 가능함) - 네트워크 스토리지가 아니라서 다른 호스트의 파드에게 제공할 수 없음, 각 노드에 각각의 볼륨이 생성 - 쿠버네티스 클러스터 노드에 로그 파일을 저장하거나 CA인증서 및 토큰을 파드에 제공하기 위한 용도로 사용 # hostPath 볼륨생성 # 볼륨 리소스 정의 volumes: - name: hostPath: type: path: # .volumes.hostPath.type: 볼륨의 종류 지정 DirectoryOrCreate: 지정된 경로의 디렉토리 사용 (없으면..
쿠버네티스 Kubernetes 스토리지 볼륨 3 / 초기화 컨테이너 (initcontainer) # 초기화 컨테이너 - gitRepo 볼륨은 더 이상 사용되지 않는다, 대신 InitContainer 를 이용하여 Git 저장소가 있는 컨테이너를 프로비전 한다. - 초기화 컨테이너(InitContainer )에 EmptyDir 볼륨을 마운트 하고, git 명령을 사용해서 Git 저장소를 복제하고, 파드 컨테이너 에서 EmptyDir 볼륨을 마운트한다. - 컨테이너 실행 전 추가작업이 필요할 때(파드 생성할 때 딱 한번, 애플리케이션은 꼭 종료되는 애플리케이션) - git 저장소를 제공 - 파드의 애플리케이션 컨테이너가 실행되기 전에 , 여러가지 작업을 수행 하도록 설정, 성공하기 전까지는 에플리케이션 컨테이너는 실행되지 않는다. # 초기화 컨테이너를 사용하여 Git 저장소를 제공 더보기 # ldh-po..
쿠버네티스 Kubernetes 스토리지 볼륨 2 / emptyDir 볼륨 # emptyDir 볼륨 -아무 데이터도 없는 빈 디렉토리를 제공해 주는 볼륨이다. 파드가 생성하는 데이터를 저장 할 수 있으며, 동일한 파드 내의 컨테이너 간에 네이터를 공유할 때 유용하게 사용 할 수 있다. 또한 빅데이터와 같은 큰 데이터 셋트를 처리하기 위한 임시 저장소로도 사용이 가능하다. # emptyDir 볼륨 생성 더보기 # emptyDir 볼륨을 사용하는 레플리카셋 정의 # ldh-rs-emptydir.yml apiVersion: apps/v1 kind: ReplicaSet metadata: name: ldh-rs-fortune spec: replicas: 1 selector: matchLabels: app: ldh-rs-fortune template: metadata: labels: ap..
쿠버네티스 Kubernetes 스토리지 볼륨 1 https://kubernetes.io/ko/docs/concepts/storage/ 스토리지 클러스터의 파드에 장기(long-term) 및 임시 스토리지를 모두 제공하는 방법 kubernetes.io # 스토리지 스토리지를 설정해두지 않으면 DB에 있던 데이터가 모두 사라진다. PersistentVolume 및 RersistentVolumeClaim 같은 별도의 리소스를 사용하여 볼륨을 분리할 수 있다. Pod나 컨트롤러가 제거되고 다시 생성되더라도 기존 볼륨을 사용 할 수 있게 된다. 대부분 네트워크 관련 볼륨이다. # 볼륨 종류 - 쿠버네티스에서 지원하는 볼륨의 종류 1) emptyDir : 임시 데이터를 저장하는 빈 볼륨 2) gitRepo : 사용자가 지정한 git 리포지토리 내용을 채움 3) ..
로드 밸런서 vagrant@k-control:~$ kubectl create -f ldh-cj.yml cronjob.batch/ldh-cj created vagrant@k-control:~$ kubectl get cronjobs.batch NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE ldh-cj */2 * * * * False 1 60s 5m41s vagrant@k-control:~$ kubectl get pods --watch NAME READY STATUS RESTARTS AGE h 0/1 ImagePullBackOff 0 17m ldh-cj-1625807880-9jmkk 0/1 Completed 0 5m24s ldh-cj-1625808000-rpmhh 0/1 Complet..
쿠버네티스 Kubernetes 크론잡 (CronJob) batch 같은 그룹이더라도 다른 버전을 사용할 수 있다 동시실행정책 끝나는 시간이 정해져있다 60ㅊ 간격으로 80초동안 실행? 동시에동시 두개의 작업이 실행 allow 기본값 실행 forbid replace 기존에있던걸 취소 백ㅇㅓㅂ작업이며 ㄴ 단일백업이 보장 ->forbid vagrant@k-control:~$ kubectl create -f ldh-cj.yml error: error parsing ldh-cj.yml: error converting YAML to JSON: yaml: line 19: found unexpected end of stream vagrant@k-control:~$ vi ldh-cj.yml vagrant@k-control:~$ kubectl create -f ldh-cj.y..
쿠버네티스 Kubernetes 잡 (Job) 앞의 것들은 파드에 있는 어플리케이션을 계속적으로 실행하기 위한 형태 레이블셀렉터 지정 잡 프로그램을 실행해서 언젠가는 끝나는 작업 apache -> 지속적으로 작업 데이터베이스 백업 -> 계속하는거 아니다 백업이 완료되면 끝나야한다 임시작업 배치작업 batch 그룹 끝을 보장한다 방송사 인코딩디지털파일형태로 벼ㄴ환하는 작업 레이블셀렉터를 사용자가 지정하진 않는다 레이블을 잘못지정하면 레플리카셋이 관리하는 파드를 선택이 되어버릴수도 있다 -> 종료보장 -> 종료시켜버릴수있다 잘못된 레이블 지정하는걸 막는다 재시작 정책 설정 기본값 ALWAYS 종료됐는데 다시 시작? -> 오류 OnFailure / Never -> 6번까지 재시작 파드를 세번 실행 하나만들어지고 종료 하나만들어지고 종료 하나만들어지고 종료..
쿠버네티스 Kubernetes 데몬셋 (DaemonSet) 복제본을 만들지 않는다 모든 노드에 하나씩 파드를 배치 특정 노드에 하나씩 파드를 배치- 노드의 레이블 이용 기본 레이블 노드에도 레이블을 붙일 수 있다 에이전트 형태 데몬 형태로 작동 데이터 ,로그 수집 모니터링 특정 노드에 해당 기능이 있어야한다 인프라를 구성하고 에이전트 서비스 kubectl get ds -n kube-system node selector 데몬셋은 노드 셀렉터를 이용 kubectl get nodes -L ku 쿠버네티스의 모든 노드는 이 에이전트 나 대신에 일을 해주는 것 노드 셀렉터 어떤노드에 해당하는 파드를 배치할것인지 vagrant@k-control:~$ cat ldh-ds.yml apiVersion: apps/v1 kind: DaemonSet metadata: name: ld..