Kubernetes

Kubernetes

Kubernetes Blue·Green / Canary 배포 방법

1. 개념 Blue·Green 및 Canary 배포 전략에 대한 개념은 앞서 작성한 글 참고 Blue·Green 배포 : Blue 리소스를 구성하고 Selector로 서비스와 맵핑한 상태에서 Green 리소스를 구성하고 서비스의 Selector를 Green으로 변경 Canary 배포 : v1과 v2 리소스를 구성하고 두 리소스를 Selector로 서비스와 맵핑한 상태에서 v2의 레플리카 개수를 점진적으로 증가시킴과 동시에 v1의 개수를 감소시키다 마지막에는 v1 리소스 삭제 2. Blue·Green 배포 Blue에 해당하는 nginx 웹서버 리소스 구성 apiVersion: apps/v1 kind: Deployment metadata: name: resource-blue namespace: default..

Kubernetes

Kubernetes Custom Resource 개념 및 설정

1. 개념 디플로이먼트, 레플리카셋 등 기본적으로 정의된 리소스 외에 Custom Resource를 활용하여 관리자가 원하는 리소스를 정의하고 사용 가능 2. Custom Resource 생성 crd 생성 apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: internals.datasets.kodekloud.com spec: group: datasets.kodekloud.com versions: - name: v1 served: true storage: true schema: openAPIV3Schema: type: object properties: spec: type: object properties: in..

Kubernetes

Kubernetes Admission Controller(Mutating / Validating) 개념 및 설정

1. 개념 쿠버네티스에서 파드 등의 리소스를 생성하는 경우 접근권한은 3단계를 거치게 됨 - Authentication(인증) → Authorization(인가) → Admission Control 인증·인가에서는 인가된 사용자인지, 적절한 권한이 있는지를 확인함 Admission Control은 인가되고 권한을 보유한 이용자의 액션에 대해 관리자가 정의한 설정을 적용하도록 강제함 Admission Control로 핸들링이 가능한 액션(플러그인)은 링크에서 확인 가능 2. Admission Controller 예시 kube-api의 --enable-admission-plugins에 NamespaceAutoProvision 설정 ns 목록 확인 존재하지 않는 ns에 파드 생성 자동으로 ns가 생성 및 파드..

Kubernetes

Kubernetes Statefulset 개념 및 설정

1. 개념 파드에 저장된 데이터 또는 파드의 설정을 stateful하게 유지해야 하는 경우 Statefulset 활용 Statefulset으로 생성한 파드는 재생성 시에도 랜덤한 문자열 이름이 아닌 관리자가 정의한 특정 규칙의 이름으로 생성 Statefulset으로 생성한 파드의 스토리지는 PVC로만 연결 가능 Statefulset에 접근하기 위해서는 headless service 생성 필요 2. Statefulset 생성 headless service 생성 apiVersion: v1 kind: Service metadata: name: headless-svc labels: app: headless-svc spec: ports: - name: http port: 80 clusterIP: None sele..

Kubernetes

Kubernetes Job, CronJob 개념 및 설정

1. 개념 특정 작업을 수행하기 위한 목적으로 사용하는 오브젝트로, 특정 액션을 수행하는 임시 파드 정도로 생각하면 적절 주기적으로 특정 액션을 수행해야 할 경우 cronjob을 사용 2. Job, CronJob 설정 Job apiVersion: batch/v1 kind: Job metadata: name: pi spec: template: spec: containers: - name: pi image: perl:5.34.0 command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] restartPolicy: Never backoffLimit: 4 CronJob apiVersion: batch/v1 kind: CronJob metadata: name: h..

Kubernetes

Kubernetes Probe(Readiness, Liveness, Startup) 개념 및 설정

1. Probe 개념 1.1. Readiness, Startup 파드의 상태를 체크 할 수 있는 2가지의 지표가 존재 get을 통해 확인 가능한 STATUS 정보 describe을 통해 확인 가능한 Conditions 정보 STATUS와 Conditions이 Running/True 상태임에도 불구하고 컨테이너가 초기화 프로세스(cold start)를 거치는 경우 파드에 정상적으로 접근 불가 컨테이너 생성 및 HTTP 요청에 대한 응답을 할 수 있는지 확인하기 위해 Readiness Probe를 활용 컨테이너에 배포된 서비스의 초기화 프로세스(cold start)가 완료되어 서비스를 제공할 수 있는지 확인하기 위해 Startup Probe를 활용 1.2. Liveness 파드에 장애가 발생하는 경우 k8s..

Kubernetes

Kubernetes Ingress 개념 및 설정

1. 개념 NetworkPolicy의 Ingress와 개념은 같지만 컨셉이 다름 클러스터 외부에서 HTTP/s를 통한 클러스터 내부로의 요청을 처리하는 규칙 예를들어 클러스터에 /member 와 /product 두 개의 애플리케이션을 운영중이고 개별적인 요청을 핸들링하고자 할 때 Ingress 활용 2. 실습 링크 참고 3. Ingress 핸들링 Ingress 리소스 확인 : kubectl get ingress -A Ingress 리소스 설정 확인 : kubectl describe ingress [인그레스_이름]

Kubernetes

Kubernetes StorageClass 개념 및 설정

1. 개념 PVC를 이용해 볼륨을 손쉽게 요청할 수 있으나 운영자는 PV로 사용할 볼륨을 수동으로 프로비저닝해야 함(Static Provisioning 방식) 이런 불편함을 해결하기 위해 자동으로 볼륨을 생성·할당하는 StorageClass를 사용(Dynamic Provisioning 방식) 2. StorageClass 생성 StorageClass 생성 apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: demo-sc volumeBindingMode: WaitForFirstConsumer provisioner: kubernetes.io/aws-ebs parameters: type: io1 iopsPerGB: "10" fsType: ext4 ..

Kubernetes

Kubernetes PV·PVC 개념 및 설정

1. 개념 영속성을 보장할 수 없는 파드에 데이터를 저장할 경우 언제든 데이터가 사라질 가능성 존재 따라서 파드의 생명주기와 무관하게 저장이 유지되는 데이터 저장소가 필요한데 이런 요구사항을 만족하기 위한 개념이 PV(PersistentVolume)와 PVC(PersistentVolumeClaim) PV : 데이터를 저장할 볼륨. 볼륨을 생성하고 이를 클러스터에 등록한 것 PVC : 필요한 저장 공간·RW모드 등 요청사항을 기술한 명세로서 PV에 전달하는 요청. PV와 바인딩을 하는 목적으로 사용 2. PV 생성 demo-pv라는 PV 생성 apiVersion: v1 kind: PersistentVolume metadata: name: demo-pv spec: capacity: storage: 100Mi..

Kubernetes

Kubernetes 네트워크 정책(NetworkPolicy) 개념 및 설정1

1. 개념 쿠버네티스에서 각 파드는 기본적으로 서로간에 모든 통신이 가능한 상태 때문에 DB처럼 보안적으로 중요한 파드에 대해 접근을 제어하기 위하여 NetworkPolicy 서비스 활용 파드 생성 시 labels에 명시한 key : value를 기준으로 NetworkPolicy 적용 2. NetworkPolicy 상황별 설정 NetworkPolicy를 설정하지 않은 경우 모든 파드에서 DB로 접근 가능 특정 파드에서만 접근을 허용하고자 하는 경우 apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: db-policy namespace: prod spec: podSelector: matchLabels: role: db policyTyp..

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