이세개발
article thumbnail
쿠버네티스 04-04 Storage_Dynamic
Infra/Kubernetes 2023. 9. 6. 16:54

다음은 쿠버네티스에서 동적 프로비저닝을 사용하여 스토리지를 관리하는 방법에 대한 설명입니다. 다음은 쿠버네티스에서 동적 프로비저닝을 위한 PersistentVolumeClaim (PVC)에 대한 YAML 파일 예시입니다. 이 예시는 AWS EBS CSI Driver 저장소에서 가져왔습니다: apiVersion: v1 kind: PersistentVolumeClaim metadata: name: myapp-pvc-dynamic spec: accessModes: - ReadWriteMany resources: requests: storage: 1Gi storageClassName: nfs-client 이 YAML 파일에서: apiVersion, kind, 그리고 metadata는 표준 쿠버네티스 필드입니다...

article thumbnail
쿠버네티스 04-03 Storage_Static
Infra/Kubernetes 2023. 9. 6. 16:54

Kubernetes Storage_Static 쿠버네티스에서는 Persistent Volume (PV)과 Persistent Volume Claim (PVC)을 사용하여 스토리지를 관리합니다. PV는 클러스터 내에서 사용할 수 있는 스토리지의 양을 나타내며, PVC는 사용자가 요청하는 스토리지의 양을 나타냅니다. 이를 통해 사용자는 필요한 만큼의 스토리지를 동적으로 할당받아 사용할 수 있습니다. 이번 실습에서는 NFS를 사용하여 스토리지를 제공하는 방법에 대해 알아보겠습니다. NFS는 Network File System의 약자로, 네트워크를 통해 파일 시스템을 공유하는 프로토콜입니다. .sh 파일은 쉘 스크립트 파일로, 리눅스나 유닉스 시스템에서 사용하는 스크립트 언어입니다. 이 파일은 일련의 명령을 자..

article thumbnail
쿠버네티스 04-02 Storage_Hostpath
Infra/Kubernetes 2023. 9. 6. 16:53

Kubernetes Storage_Hostpath 쿠버네티스에서 hostPath 볼륨은 노드의 파일 시스템에 있는 파일이나 디렉터리를 파드에 마운트하는 데 사용됩니다. 이는 개발 및 테스트 환경에서 유용하며, 특히 단일 노드 클러스터에서 사용됩니다. 다음은 각 YAML 파일에 대한 설명입니다. myapp-rs-hp.yaml 이 YAML 파일은 ReplicaSet을 정의합니다. 이 ReplicaSet은 두 개의 파드를 생성하며, 각 파드는 hostPath 볼륨을 사용하여 노드의 특정 디렉터리를 마운트합니다. apiVersion: apps/v1 kind: ReplicaSet metadata: name: myapp-rs-hp spec: replicas: 2 selector: matchLabels: app: m..

article thumbnail
쿠버네티스 04-01 Storage_Emptydir
Infra/Kubernetes 2023. 9. 6. 16:53

Kubernetes Storage_Emptydir 쿠버네티스에서 emptyDir 볼륨은 파드가 노드에 할당될 때 처음으로 생성되며, 초기에는 비어 있습니다. 파드가 실행되는 동안 emptyDir 볼륨은 계속 존재하며, 파드 내의 모든 컨테이너에서 공유될 수 있습니다. 파드가 노드에서 제거되면 emptyDir 볼륨의 내용도 삭제됩니다. 이는 일시적인 데이터를 저장하거나 컨테이너 간에 데이터를 공유하는 데 유용합니다. 다음은 각 YAML 파일에 대한 설명입니다. myapp-pod-git.yaml 이 YAML 파일은 Pod를 정의하며, 이 Pod는 초기화 컨테이너를 사용하여 git 저장소를 클론합니다. 클론된 저장소는 emptyDir 볼륨에 저장되며, 이 볼륨은 git-container라는 이름의 컨테이너에서..

article thumbnail
쿠버네티스 03-05 Network_Headless_Service
Infra/Kubernetes 2023. 9. 6. 16:53

Kubernetes Headless_Service 쿠버네티스에서 Headless Service는 클러스터 IP를 할당하지 않는 서비스를 말합니다. 대신, 클라이언트는 서비스를 통해 파드의 IP 주소를 직접 조회할 수 있습니다. 이는 특정 파드에 직접 연결해야 하는 경우나, 서비스 디스커버리를 위해 DNS를 사용하는 경우에 유용합니다. 다음은 각 YAML 파일에 대한 설명입니다. myapp-rs-headless.yaml 이 YAML 파일은 ReplicaSet을 정의합니다. 이 ReplicaSet은 동일한 파드의 복사본을 여러 개 유지하도록 보장합니다. apiVersion: apps/v1 kind: ReplicaSet metadata: name: myapp-rs-headless spec: replicas: ..

article thumbnail
쿠버네티스 03-04 Network_Readiness_Probe
Infra/Kubernetes 2023. 9. 6. 16:52

Kubernetes Readiness Probe 쿠버네티스에서 Readiness Probe는 컨테이너가 트래픽을 받을 준비가 되었는지를 확인하는 역할을 합니다. 이는 서비스가 트래픽을 안전하게 라우팅할 수 있도록 보장하는 중요한 기능입니다. 일정한 간격으로 애플리케이션의 상태를 확인하고, 특정 조건을 충족할 때 애플리케이션을 "레디(Ready)" 상태로 표시합니다. 이는 클라이언트의 요청을 처리할 준비가 된 상태를 의미하며, 클러스터의 로드 밸런서 등에서 애플리케이션을 배포 가능한 상태로 간주합니다. 레디니스 프로브는 HTTP 요청, TCP 소켓 연결, 컨테이너 내부 명령 실행 등 다양한 방법으로 애플리케이션의 상태를 확인할 수 있습니다. 프로브는 애플리케이션의 특정 엔드포인트나 포트를 대상으로 요청을 ..

article thumbnail
쿠버네티스 03-03 Network_Ingress
Infra/Kubernetes 2023. 9. 6. 16:52

Kuernetes Ingress 쿠버네티스에서 Ingress는 클러스터 외부에서 클러스터 내부의 서비스로 HTTP 및 HTTPS 경로를 노출하는 역할을 합니다. 이는 트래픽 라우팅을 제어하며, 이는 Ingress 리소스에 정의된 규칙에 의해 이루어집니다. 다음은 각 YAML 파일에 대한 설명입니다. myapp-rs.yaml 이 YAML 파일은 쿠버네티스의 ReplicaSet을 정의합니다. ReplicaSet은 동일한 파드의 복사본을 여러 개 유지하도록 보장합니다. apiVersion: apps/v1 kind: ReplicaSet metadata: name: myapp-rs spec: replicas: 3 selector: matchLabels: app: myapp-rs template: metadata:..

article thumbnail
쿠버네티스 03-02 Network_External_Service
Infra/Kubernetes 2023. 9. 6. 16:51

Kuernetes 외부 서비스 쿠버네티스에서 외부 서비스를 사용하면, 클러스터 외부의 클라이언트들이 서비스를 찾고 통신할 수 있습니다. 이는 서비스 디스커버리를 가능하게 하며, 클러스터 외부의 클라이언트가 동적으로 생성되고 사라지는 파드와 통신할 수 있게 합니다. 다음은 외부 서비스를 테스트하기 위한 명령어입니다: kubectl run nettool --image ghcr.io/c1t1d0s7/network-multitool -it --rm > host -v example.default.svc.cluster.local kubectl run 명령어는 ghcr.io/c1t1d0s7/network-multitool 이미지를 사용하여 nettool이라는 이름의 파드를 실행합니다. 이 파드는 네트워크 문제를 진단..

article thumbnail
쿠버네티스 03-01 Network_Internal_Service
Infra/Kubernetes 2023. 9. 6. 16:51

Kuernetes 내부 서비스 쿠버네티스에서 내부 서비스를 사용하면, 클러스터 내의 다른 파드들이 서비스를 찾고 통신할 수 있습니다. 이는 서비스 디스커버리를 가능하게 하며, 파드가 동적으로 생성되고 사라지는 환경에서 중요한 역할을 합니다. 다음은 내부 서비스를 테스트하기 위한 명령어들입니다: kubectl run nettool -it --image ghcr.io/c1t1d0s7/network-multitool --rm > host myapp-svc.default.svc.cluster.local > curl http://myapp-svc.default.svc.cluster.local > curl http://myapp-svc kubectl run 명령어는 ghcr.io/c1t1d0s7/network-mu..

article thumbnail
쿠버네티스 02-05 Controller_Cronjob
Infra/Kubernetes 2023. 9. 6. 16:51

쿠버네티스에서는 주기적으로 작업을 실행할 수 있는 CronJob이라는 리소스를 제공합니다. CronJob은 특정 스케줄에 따라 Job을 생성하며, 이 Job은 하나 이상의 Pod를 생성하여 작업을 수행하고 완료된 후에는 Pod를 삭제합니다. myapp-cj-dl-al.yaml: 이 CronJob은 매 분마다 Job을 생성합니다. startingDeadlineSeconds는 CronJob이 시작할 수 있는 마지막 시간을 초 단위로 설정합니다. 이 경우, CronJob은 스케줄이 시작된 후 100초 이내에 시작해야 합니다. concurrencyPolicy는 Allow로 설정되어 있어, 이전 Job이 완료되지 않은 상태에서도 새 Job을 시작할 수 있습니다. apiVersion: batch/v1 kind: C..