Kubernetes 30

[쿠버네티스] 컨테이너 애플리케이션 사용자화 개념 정리

들어가며 이미지 사용자화 환경 변수 사용자화 configMap(컨피그맵)을 이용한 사용자화 시크릿을 이용한 사용자화 들어가며: 컨테이너에 있는 애플리케이션을 몇 가지 기능을 통해 사용자화 할 수 있습니다. 각각의 기능을 나열하고 개념을 알아보도록 하겠습니다. 이미지 사용자화 도커 이미지 작성 시 Dockerfile의 ENTRYPOINT 및 CMD 지시어를 지정하여 애플리케이션을 어떻게 동작할 것인지 지정할 수 있습니다. 컨테이너 이미지를 통해 컨테이너를 실행할 떄 실행할 명령어(프로세스, 애플리케이션) 및 인자(옵션)을 지정할 수 있습니다. 일반적으로 명령어는 실행할 애플리케이션이기 떄문에 그대로 두지만, 인자는 필요에 따라 다른 인자를 옵션 형태로 전달함으로 다른 동작을 하도록 할 수 있습니다. 환경 ..

[쿠버네티스] PV,PVC 리소스 정적 볼륨 프로비저닝

들어가며: NFS 스토리지 구성 NFS 서버 구성 (kube-control1) NFS 클라이언트 구성 (kube-node1,2,3) PV 생성 및 확인 PVC 생성 및 확인 레플리카셋 컨트롤러 생성 및 확인 PV 및 PVC 상세 정보 확인 서비스 생성 및 확인 볼륨 상태 전환 확인 들어가며: PV 리소스는쿠버네티스 클러스터 외부 스토리지와 연결을 담당하는 리소스이며,PVC는PV와 파드를 연결하기 위한 리소스입니다. 정적 볼륨은 PV 및 PVC 리소스를 직접 생성하고 사용하는 방식입니다. PV, PVC 에 대한 설명은 이전 포스팅을 참고하시기 바랍니다. NFS 스토리지 구성 NFS 서버 구성 (kube-control1) 이 작업은 NFS 서버를 구성할 컨트롤플레인 노드 kube-control1 호스트에서 ..

[쿠버네티스] 쿠버네티스 PV / PVC 볼륨 소개

들어가며: PV(PersistentVolume) PVC(PersistentVolumeClaim) 이란? PV 및 PVC 생명주기 프로비저닝 바인딩 사용 회수 끝마치며: 들어가며: emptyDir , hostPath 는 컨트롤러의 템플릿이나 파드에 직접 스토리지 볼륨을 정의해야 했습니다. 이는 몇 가지 문제점이 있습니다. 1. 스토리지에 대한 지식이 있어야 합니다. emptyDir, hostPath 같은 경우 많은 지식이 필요하지 않지만 네트워크 기반 스토리지의 경우 스토리지 자체의 지식이 많이 필요합니다. 2. 볼륨의 생명주기가 컨트롤러 및 파드의 생명주기와 같습니다. 컨트롤러 및 파드를 삭제하면 볼륨도 같이 삭제된다는 문제점이 있을 수 있습니다. PV(PersistentVolume) PVC(Persis..

[쿠버네티스] hostPath 볼륨

들어가며 hostPath 볼륨 생성 hostPath 볼륨에 사용할 노드의 디렉토리 준비 hostPath 볼륨을 사용하는 레플리카셋 생성 hostPath 볼륨을 사용하는 리소스 변경 hostPath 볼륨을 사용하는 리소스 재확인 들어가며: emptyDir 볼륨은 아무 데이터도 없는 빈 디렉토리를 제공하는 볼륨이였고 동일한 파드 내의 컨테이너 간에 데이터를 공유할 때 유용하게 사용할 수 있었습니다. hostPath 볼륨은 파드가 동작하는 쿠버네티스 클러스터의 노드(host)의 로컬 파일시스템의 파일 및 디렉토리를 파드가 사용할 수 있는 볼륨으로 제공해줍니다. 같은 노드에 배치된 파드 및 컨테이너에게 공유 디렉토리를 제공할 목적으로 사용될 수 있지만, 다른 노드에 배치된 파드 및 컨테이너에는 데이터를 공유할 ..

[쿠버네티스] emptyDir 볼륨 / gitRepo / 초기화 컨테이너

들어가며 emptyDir 볼륨 생성 및 확인 gitRepo 볼륨 초기화 컨테이너 들어가며: emptyDir 볼륨은 아무 데이터도 없는 빈 디렉토리를 제공해주는 볼륨입니다. 파드가 생성하는 데이터를 저장할 수 있으며, 동일한 파드 내의 컨테이너 간에 데이터를 공유할 때 유용하게 사용할 수 있습니다. 또한, 빅 데이터와 같은 큰 데이터 셋트를 처리하기 위한 임시 저장소로도 사용 가능 합니다. 최초로 volume이 생성될 때는 volume의 내용이 비어있기 때문에 emptyDir 이라고 부릅니다. Container1이 Web1 역할을 하는 서버이고 Container2가 backend 단을 처리해주는 서버라면 web서버로 받는 특정 파일을 mount가 된 volume에 저장을 해놓고 backend의 Contai..

[쿠버네티스] 쿠버네티스의 볼륨이란?

들어가며: 볼륨 소개 볼륨 종류 끝마치며: 들어가며: 볼륨 소개 파드의 컨테이너는 이미지로부터 파일 시스템을 제공받습니다. 그러나 파드가 종료되면 파드 내에 변경된 데이터(파일)는 더 이상 사용할 수 없습니다. 컨트롤러에 의해 새로운 파드가 생성이 되면 이미지로부터 새로운 파일 시스템을 제공받습니다. 즉, 컨테이너는 기본적으로 데이터를 유지하지 않으며, 이런 형태를 상태가 없다(Stateless)라고 합니다. 쿠버네티스의 파드는 새로 생성된 데이터를 보존하기 위해 외부 저장소 볼륨을 생성하고, 이런 볼륨을 컨테이너에 마운트 해서 사용합니다. 볼륨은 여러 파드에서 동시에 접근이 가능합니다. 기본적으로 볼륨의 라이프사이클은 파드의 라이프사이클과 같습니다. 파드가 생성되면 볼륨도 같이 생성되고, 파드가 삭제되..

[쿠버네티스] Kubernetes 오브젝트를 이용한 Apache(httpd) 웹서비스 구성

들어가며 replicaSet(Apache[httpd]) 오브젝트 구성 Service(LoadBalancer) 오브젝트 구성 동작 확인 들어가며: ReplicaSet 과 Service 를 먼저 명령형 오브젝트를 이용하여 클러스터를 구성하고 loadbalancer 서비스를 이용하여 웹서비스를 구성해보는 포스트입니다. replicaSet(Apache[httpd]) 오브젝트 구성 vagrant@kube-control1:~/q3$ cat myapp-rs.yaml apiVersion: apps/v1 kind: ReplicaSet metadata: name: myapp-rs spec: replicas: 3 selector: matchLabels: app: myapp-rs template: metadata: label..

[쿠버네티스] 클러스터 외부 서비스 / loadBalancer

들어가며 외부 서비스용 레플리카셋 생성 및 확인 NodePort 서비스 생성 및 확인 LoadBalancer 서비스 생성 및 확인 ExternalName 서비스 생성 및 확인 들어가며: 쿠버네티스 클러스터에서 웹의 프론트엔드 서비스를 실행하는 파드의 경우 쿠버네티스 클러스터의 외부로 노출시켜 접근 가능하도록 구성해야 합니다. ClusterIP는 클러스터 내부에서 DB와 같이 외부로의 노출이 없어야하는 경우에 사용하기 위함이였습니다. 쿠버네티스 클러스터 외부에서 접근 가능한 서비스 리소스 출력의 필드를 살펴보겠습니다. NodePort NodePort + ClusterIP 쿠버네티스 모든 노드(호스트)에 외부 접근용 포트를 할당 노드의 포트를 사용하여 외부에서 접근 가능 노드의 포트로 접근하면 서비스에 의해..

[쿠버네티스] 클러스터 내부 서비스 / clusterIP

들어가며: 서비스 소개 서비스 생성 서비스 및 엔드포인트 확인 파드 생성 및 엔드포인트 연결 서비스 접근 테스트 서비스의 세션 어피니티 구성 서비스 다중 포트 구성 포트 이름 참조 들어가며 쿠버네티스의 네트워크 형태는 내부용 서비스, 외부 노출용 서비스, 특수한 형태(내부에서 외부로 나갈 때) 등이 있습니다. db와 같이 외부로 노출되면 안되는 컨테이너가 사용하는 클러스터 내부 서비스에 대해 알아보도록 하겠습니다. 파드는 클러스터 외부의 요청이나 클러스터 내부의 다른 파드의 요청에 응답해야 합니다. 또한 파드가 다른 파드에서 제공하는 애플리케이션에 접근하기 위해서는 파드를 찾을 수 있어야 합니다. 쿠버네티스가 아닌 기존의 시스템은 애플리케이션이 동작하는 시스템의 호스트 이름이나 정적 IP를 할당하여 애플..

[쿠버네티스] kubeadm 클러스터 업그레이드 방법 및 작동 원리

들어가며: 컨트롤플레인 노드 업그레이드 워커노드 업그레이드 작동원리 들어가며 쿠버네티스 버전 및 버전-차이 정책와 kubeadm 버전 차이 정책을 확인하고 릴리스 노트를 주의 깊게 보시는 것을 추천합니다. 이전 포스트의 내용을 사전에 보시는 것도 권장해드립니다. 업그레이드할 버전을 먼저 결정해야합니다. apt update apt-cache madison kubeadm 포스팅한 시점에서는 1.21 까지 나왔지만 안정성을 위해 1.19.11-00 버전으로 업그레이드 해보겠습니다. 패치 업그레이드는 몇 칸을 올라가든 상관없지만 마이너 업그레이드는 1단계씩만 가능합니다. 현재는 1.18 버전이기 때문에 문제가 없습니다. 업그레이드 순서는 1. 컨트롤플레인노드 kubeadm → 2. kubelet and kube..