Kubernetes

Kubernetes

Kubernetes 레이블(label)과 셀렉터(selector) 개념

1. 레이블 개념 AWS 태그 또는 velog의 태그와 같은 개념 리소스 관리를 효율적으로 하기 위해 리소스마다 이름표를 붙이는 것 규격화된 양식은 없으며 DevOps 엔지니어가 원하는 임의의 레이블 지정 가능 app: frontend app: backend type: web ... 2. 셀렉터 개념 여러가지 레이블 중 특정 레이블을 선택하는 개념 ex.) type: web, purpose: dev를 만족하는 디플로이먼트 3. 레이블·셀렉터 활용 app=zero 레이블을 가진 파드 생성 app=zero 레이블을 가진 파드만 조회 다수 레이블에 대한 필터도 가능

Kubernetes

Kubernetes 메뉴얼 스케줄링(Manual Scheduling)과 노드 셀렉터(Node Selector) 개념과 설정

1. 개념 파드는 일반적으로 kube-Scheduler에 의해 자동으로 어떤 노드에 배포될지 결정 하지만 nodeName, nodeSelector 필드를 통해 엔지니어의 의도에 따라 특정 노드에 배포하도록 지정 가능 2. 메뉴얼 스케줄링 적용 리소스 생성 시 'nodeName' 항목 지정 리소스 배포 확인 3. 노드 셀렉터 적용 노드 레이블 확인 kubectl get node [노드_이름] -o yaml | grep -i labels -F10 or kubectl get node [노드_이름] --show-labels 노드 레이블 생성 kubectl label node [노드_이름] [레이블_키]=[레이블_값] or kubectl label node [노드_이름] --overwrite [레이블_키]=[레이..

Kubernetes

Kubernetes 명령형(Imperative) 관리와 선언형(Declarative) 관리 개념

1. 명령형(Imperative) vs 선언형(Declarative) 명령형(Imperative) shell에서 명령어(create, run, create, edit, replace 등)를 활용해 오브젝트를 핸들링하는 방식 (장점) 간단한 작업의 경우 빠르게 수행 가능 (단점) IaC 관리 불가능 (단점) 여러명의 엔지니어가 작업할 경우 히스토리 추적·관리 불가능 (단점) edit으로 변경한 내용이 수정 형태(추가 or 삭제)에 따라 Live Object Configuration 또는 Last Applied Configuration 둘 중 한곳에만 적용되어 설정의 불일치 발생 선언형(Declarative) yaml 파일에 오브젝트 상태를 정의하고 apply로 생성하는 방식 (장점) IaC 가능 (장점) ..

Kubernetes

Kubernetes 서비스(Service) 개념과 설정

1. 서비스 개념 파드가 끊임없이 생성·삭제되는 쿠버네티스의 특성으로 인해 파드의 IP도 고정되지 않고 계속해서 바뀜 이런 특성은 클러스터 외부에 있는 유저가 웹 서비스에 접근하거나, 클러스터 내부의 백엔드 또는 DB에 리소스를 요청할 때 큰 제약사항 서비스 오브젝트는 이러한 문제를 해결하기 위해 애플리케이션에 접근 가능한 고정된 IP를 제공하는 역할 서비스 타입은 4종류가 존재 ClusterIP NodePort LoadBalancer ExternalName 2. 서비스 타입 ClusterIP 서비스 오브젝트의 기본 타입으로 NodePort 등 별도의 옵션을 설정하지 않을 경우 디폴트로 ClusterIP로 설정 클러스터 내부에서만 접근 가능한 ClusterIP라는 Virtual IP를 생성하고, 내부 리..

Kubernetes

Kubernetes 네임스페이스(Namespace) 개념과 명령어

1. 네임스페이스 개념 쿠버네티스 클러스터 내에서 파드, 디플로이먼트 등 오브젝트를 서로 격리하기위해 네임스페이스를 사용 네임스페이스는 일종의 "집"으로 다른 네임스페이스에 존재하는 오브젝트는 서로 간섭할 수 없음 네임스페이스마다 개별적으로 접근제어, 자원 할당 등 설정 가능 prod, dev, service 1, service 2 등 목적별로 네임스페이스를 나누어서 클러스터를 관리하는 것이 운영·관리·보안 측면에서 유리 쿠버네티스 클러스터 주요 컴포넌트는 kube-system 네임스페이스에 존재 2. YAML을 활용한 네임스페이스 생성 zero라는 이름의 네임스페이스를 생성하는 YAML 내용 apiVersion: v1 kind: Namespace metadata: name: zero 3. 명령어를 활용..

Kubernetes

Kubernetes 디플로이먼트(Deployment) 개념과 명령어

1. 디플로이먼트 개념 기능적인 목적은 레플리카셋과 동일하지만, 추가적으로 파드에 대한 업데이트 기능이 존재(롤아웃, 롤백 등) 디플로이먼트는 레플리카셋을 핸들링하는 상위 기능으로, "디플로이먼트(레플리카셋(파드))" 형태로 캡슐화 된 뉘앙스 2. YAML을 활용한 디플로이먼트 생성 nginx 컨테이너로 구성된 디플로이먼트를 생성하기 위한 YAML 내용 apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - na..

Kubernetes

Kubernetes 레플리카셋(ReplicaSet) 개념과 명령어

1. 레플리카셋 개념 파드 실행의 연속성을 보장하기 위해 동일한 파드를 여러개로 묶어놓은 집합으로, 레플리카셋에 포함된 파드는 다운되어도 자동으로 재실행 파드에 트래픽이 증가해 일정 수준 이상이 될 경우 자동으로 새로운 파드가 복제되어 트래픽을 로드밸런싱 레플리카셋을 삭제할 경우 레플리카셋에 포함된 파드 모두 삭제 레플리카셋은 파드가 실행되는 개수에 대해서만 보장하고, 업데이트 기능을 제공하지 않기 때문에 디플로이먼트 활용을 권장 2. YAML을 활용한 레플리카셋 생성 nginx 컨테이너로 구성된 레플리카셋을 생성하기 위한 YAML 내용 apiVersion: apps/v1 kind: ReplicaSet metadata: name: test-ReplicaSet labels: app: my-ReplicaSe..

Kubernetes

Kubernetes 파드(Pod) 개념과 명령어

1. 파드 개념 컨테이너를 감싼 집합(덩어리)으로 K8s에서 배포할 수 있는 가장 작은 단위 하나의 파드 안에 단일 컨테이너 또는 다중 컨테이너 구성 가능 같은 파드안에 존재하는 컨테이너는 localhost로 서로 접근이 가능하고 스토리지를 공유 2. YAML을 활용한 파드 생성 쿠버네티스에서 활용되는 YAML 파일의 기본 구조 apiVersion: kind: metadata: spec: nginx를 이미지로 사용하는 컨테이너를 파드로 생성하기 위한 YAML apiVersion: v1 kind: Pod metadata: name: my-test-pod labels: purpose: test type: web spec: containers: - name: nginx-container image: nginx..

Kubernetes

Kubernetes 클러스터 및 컴포넌트 개념

1. 클러스터 컴포넌트 구성 요소 쿠버네티스가 구성된 환경을 클러스터라고 부르며, 클러스터는 쿠버네티스가 동작하도록 하는 컴포넌트와 파드가 배포(실행)되는 노드로 이루어져 있음 일반적인 클러스터는 아래 그림처럼 구성 컴포넌트 구성 요소 노드 마스터 노드 워커 노드 마스터 노드 컴포넌트 API Server etcd Scheduler Controller manager 워커 노드 컴포넌트 kubelet kube-proxy Container Runtime 2. 마스터 노드 마스터 노드·마스터·control plane 등으로 호칭하며 쿠버네티스가 작동하는데 필요한 컴포넌트가 배포 및 실행되는 노드 마스터 노드에 장애가 발생하거나 다운될 경우 K8s 환경 전체에 장애가 발생하므로, Prod 환경에서 운영 시 마스터..

MR. ZERO
'Kubernetes' 카테고리의 글 목록 (6 Page)