Kubernetes 25

영구 볼륨 클레임

컨피그 & 스토리지 API 카테고리 설정/기밀 정보/영구 볼륨 등에 관련된 리소스 - 시크릿 - 컨피그맵 - 영구 볼륨 클레임 볼륨, 영구 볼륨, 영구 볼륨 클레임의 차이 볼륨 사용 가능한 볼륨을 매니페스트에 직접 지정하여 사용할 수 있게 하는 것 사용자가 설정된 볼륨을 사용할 수 있지만, 쿠버네티스에서 신규 볼륨을 생성하거나 기존 볼륨을 삭제하는 작업은 할 수 없다. 매니페스트에서 볼륨 리소스 생성 불가능 영구 볼륨 외부 영구 볼륨을 제공하는 시스템과 연계하여 신규 볼륨을 생성하거나 기존 볼륨을 삭제하는 등의 작업이 가능하다. 구체적으로 매니페스트에서 영구 볼륨 리소스를 별도로 생성하는 형태다. 볼륨과 같은 플러그인 제공 예를 들어 GCP, AWS 볼륨 서비스에서는 영구 볼륨 플러그인과 볼륨 플러그인 ..

Kubernetes 2024.02.20

ConfigMap(컨피그맵)

작성중 컨피그 & 스토리지 API 카테고리 설정/기밀 정보/영구 볼륨 등에 관련된 리소스 - 시크릿 - 컨피그맵 - 영구 볼륨 클레임 설정 정보 등 key-value 값으로 저장할 수 있는 데이터 저장 리소스다. nginx.conf나 http.conf 같은 설정 파일 자체도 저장할 수 있다. 컨피그맵 생성 kubectl로 파일에서 값을 참조하여 생성(--from-file) kubectl로 직접 값을 전달하여 생성 (--from-literal 매니페스트로 생성(-f) ku커 빌드 시 컨테이너 이미지에 추가 이미지를

Kubernetes 2024.02.20

Secret(시크릿)

컨피그 & 스토리지 API 카테고리 설정/기밀 정보/영구 볼륨 등에 관련된 리소스 - 시크릿 - 컨피그맵 - 영구 볼륨 클레임 # 직접 옵션에서 type과 값을 지정하여 시크릿 생성 $ kubectl create secret generic --save-config sample-basic-auth \ --type kubernetes.io/basic-auth \ --from-literal=username=root --from-literal=password=rootpassword MySQL 데이터베이스에 접속하려면 사용자명이나 패스워드 등의 기밀 정보가 필요하다. 쿠버네티스에서 애플리케이션을 실행할 경우, 이와 같은 기밀 정보를 컨테이너로 전달하는 방법으로는 어떤 것이 있을까? 도커 빌드 시 컨테이너 이미지에..

Kubernetes 2024.02.19

컨피그 & 스토리지 API 카테고리

컨피그 & 스토리지 API 카테고리 설정/기밀 정보/영구 볼륨 등에 관련된 리소스 - 시크릿 - 컨피그맵 - 영구 볼륨 클레임 컨테이너에 대해 설정 파일, 패스워드 같은 기밀 정보 등을 추가하거나 영구 볼륨을 제공하기 위한 리소스다. 내부에서 사용되는 것을 제외하고 사용자가 직접 사용하는 것으로 세 가지 종류의 컨피그 & 스토리지 리소스가 있따. 환경 변수 사용 쿠버네티스에서 개별 컨테이너의 설정 내용은 환경 변수나 파일이 저장되어 있는 영역을 마운트하여 전달하는 것이 일반적이다. 쿠버네티스에서 환경 변수를 전달할 때 파드 템플릿에 env 또는 envForm을 지정한다. 다음과 같이, 크게 나눠 다섯 가지 정보를 환경 변수에 포함시킬 수 있다. 정책 설정 파드 정보 컨테이너 정보 시크릿 리소스 기밀 정보..

Kubernetes 2024.02.18

서비스 API 카테고리 정리

서비스 API 카테고리 컨테이너를 외부에 공개하는 엔드포인트를 제공하는 리소스 - 서비스 - ClusterIP - ExternalIP (ClusterIP의 한 종류) - NodePort - LoadBalancer - 그 외 서비스 기능 - Headless (None) - ExternalName - None-Selector - 인그레스 서비스 L4 로드 밸런싱 클러스터 내부 DNS를 사용한 이름 해석 레이블을 사용한 파드의 서비스 디스커버리 인그레스 L7 로드 밸런싱 SSL 터미네이션 경로 기반 라우팅 서비스 종류 서비스 종류 IP 엔드포인트 내용 ClusterIP 쿠버네티스 클러스터 내부에서만 통신 가능한 가상 IP ExternalIP 특정 쿠버네티스 노드의 IP 주소 NodePort 모든 쿠버네티스 노..

Kubernetes 2024.02.18

Ingress(인그레스)

서비스 API 카테고리 컨테이너를 외부에 공개하는 엔드포인트를 제공하는 리소스 - 서비스 - ClusterIP - ExternalIP (ClusterIP의 한 종류) - NodePort - LoadBalancer - 그 외 서비스 기능 - Headless (None) - ExternalName - None-Selector - 인그레스 인그레스 지금까지 설명한 서비스는 L4 로드밸런싱이지만 Ingress는 L7 로드밸런싱을 제공하는 서비스이다. 서비스들을 묶는 서비스들의 상위 객체로, 서비스 종류의 하나로서가 아닌 독립된 리소스로 구현되어 있다. Network Policy 리소스에 Ingress/Egress라는 설정 항목이 있지만 이 인그레스와 관련은 없다. 1. 리소스와 컨트롤러 쿠버네티스에서 서비스를 ..

Kubernetes 2024.02.17

None-Selector 서비스

서비스 API 카테고리 컨테이너를 외부에 공개하는 엔드포인트를 제공하는 리소스 - 서비스 - ClusterIP - ExternalIP (ClusterIP의 한 종류) - NodePort - LoadBalancer - 그 외 서비스 기능 - Headless (None) - ExternalName - None-Selector - 인그레스 None-Selector ExternalName 서비스는 서비스명으로 이름 해석을 하면 CNAME으로 반환 하였다. 그에 반해, None-Selector 서비스는 서비스명으로 이름 해석을 하면 A 레코드로 반환한다.자신이 설정한 멤버에 대해 로드 밸런싱을 하며, Client-side 로드밸런싱용 엔드포인트를 제공하는 서비스라고 말할 수 있다.type: LoadBalancer..

Kubernetes 2024.02.17

스케줄링(taint&tolerations/NodeSelector/NodeAffinity)

Woker Node위에 Pod들이 배포될때 다양한 스케줄링 기법을 제공합니다. taint&tolerations taint와 tolerations의 사용 목적: 특정 Node에 할당되지 않도록 방지. taint taint가 설정된 노드에는 pod가 스케줄 되지 않는다. 특정 파드만 받기 위한 노드 설정 kubectl taint node [node명] -l key1=value1 key2=value2:effect kubectl taint nodes node-name key=value:taint-effect → kubectl taint nodes node1 app=blue:NoSchedule apiVersion: v1 kind: Node metadata: name: sample-toler labels: labe..

Kubernetes 2024.02.13

Resource Requests/Limits

Request pod를 생성할 때 필요한 Resource 최소치 Limits Pod가 사용할 수 있는 Resource 최대치 Throttling cpu가 과도할 때, 강제로 down 시킴 CPU Limit 넘어서는 경우, throttling 발생 우려 Memory Limit 넘어서는 경우, Pod 종료 apiVersion: v1 kind: Pod metadata: name: sample-pod labels: sample: app spec: containers: - name: sample-webapp-color image: simple-webapp-color ports: - containerPort: 8080 resources: requests: cpu: 1 memory: "1Gi" limits: cpu:..

Kubernetes 2024.02.13

서비스 API 카테고리(ExternalName)

서비스 API 카테고리 컨테이너를 외부에 공개하는 엔드포인트를 제공하는 리소스 - 서비스 - ClusterIP - ExternalIP (ClusterIP의 한 종류) - NodePort - LoadBalancer - 그 외 서비스 기능 - Headless (None) - ExternalName - None-Selector - 인그레스 ExternalName 서비스 서비스명의 이름 해석에 있어 외부 도메인으로 CNAME을 반환한다. 사용 용도를 살펴보면, 다른 이름을 설정하고 싶은 경우 클러스터 내부에서의 엔드포인트를 쉽게 변경하고 싶을 경우에 사용한다. apiVersion: v1 kind: Service metadata: name: sample-externalname namespace: default s..

Kubernetes 2024.02.11