DevOps 20

[ 쿠버네티스 입문: 90가지 예제로 배우는 컨테이너 관리 자동화 표준 ] Chapter10. 컨피그맵

10.1 컨피그맵 사용하기 .data 실제 사용하려는 환경 값을 넣음 ‘ kubectl create configmap webapp-config-map --from-literal=APP_COLOR=darkblue ‘ : 컨피그맵 생성 ( —from-literal : .data (키:값) 설정 ) 10.2 컨피그맵 설정 중 일부만 불러와서 사용하기 containers[].env[].name 필드에 DEBUG_LEVEL이라는 환경 변숫값을 설정함 containers[].env[].valueFrom 필드값은 어디에서 가져올 것인지를 정하며 configMapKeyRef 필드는 어떤 컨피그맵이 어떤 키를 가져올지 지정함. 10. 3 컨피그맵 설정 전체를 한꺼번에 불러와서 사용하기 spec.containers[].e..

DevOps/Kubernetes 2021.07.21

[ 쿠버네티스 입문: 90가지 예제로 배우는 컨테이너 관리 자동화 표준 ] Chapter09. 레이블과 애너테이션

9.1 레이블 키-값 으로 구성. 메타데이터로 설정 가능. 컨트롤러들이 파드를 관리할 때 자신이 괄니해야 할 파드를 구분하는 역할. 노드에도 설정 가능하므로 자원 할당시에 할당할 노드를 구분하여 사용가능. 특정 레이블을 선택 시, 레이블 셀렉터를 사용함. 명령어 1. —selector “키=값” 해당 레이블 값을 가진 것들 출력 (—no-headers : 헤더값 미출력) ( wc -l : 행 수 출력 ) 2. —show-labels : 파드들의 모든 레이블 출력 3. ' Kubectl label node “노드이름” “키:값” ' 노드에 레이블 설정 9.2 에너테이션 키-값 쌍으로 구성하며 레이블처럼 사용자가 설정할 수 있음. 에너테이션은 쿠버네티스 시스템이 필요한 정보들을 담았으며, 쿠버네티스 클라이언..

DevOps/Kubernetes 2021.07.21

[ 쿠버네티스 입문: 90가지 예제로 배우는 컨테이너 관리 자동화 표준 ] Chapter 08. 인그레스

8.1 인그레스의 개념 클러스터 외부에서 안으로 접근하는 요청들을 어떻게 처리할지 정의해둔 규칙 모음 외부에서 접근해야 할 URL을 사용할 수 있도록 하고, 트래픽 로드밸런싱, SSL 인증서 처리, 도메인 기반 가상 호스팅 제공 실제로 동작시키는 것은 인그레스 컨트롤러 직접 인그레스에 인그레스 컨트롤러(ingress-nginx)를 연동해야 함 Metadata.annotations : 인그레스 설정시 사용하는 필드. 하위필드의 설정은 컨트롤러에 따라 다름. spec.rules[] : 규칙 지정하기 host : 요청받을 주소 http.paths[] : 경로 backend.serviceName : 처리할 서비스의 이름 backend.servicePort : 서비스 포트 8.2 ingress-nginx 컨트롤러..

DevOps/Kubernetes 2021.07.21

[ 쿠버네티스 입문: 90가지 예제로 배우는 컨테이너 관리 자동화 표준 ] Chapter07. 서비스

7.1 서비스의 개념 해당 파드에 접근하기 위해 필요. 클러스터 외부에서도 접근 가능.(인그레스) 파드는 한곳에 고정되서 실행되지 않고, 클러스터 안을 돌아다님. (노드를 옮겨다니거나 파드의 IP가 달라질 수도 있음) Kubectl expose pod “파드 이름” (—port= “ “, —name “서비스이름”) 7.2 서비스 타입 ClusterIP 기본 서비스 타입. 클러스터 안에서만 사용가능.(외부에서는 이용 불가) NodePort 서비스에 할당된 노드의 지정된 포트를 할당함. ClusterIP의 접근 범위 뿐만 아니라 클러스터 외부에서도 포트번호로 접근 가능 3. LoadBalancer 로드밸런서와 파드를 연결한 후 해당 로드밸런서의 IP를 이용해 클러스터 외부에서 파드에 접근할 수 있도록 함 4..

DevOps/Kubernetes 2021.07.21

[ 쿠버네티스 입문: 90가지 예제로 배우는 컨테이너 관리 자동화 표준 ] Chapter06. 컨트롤러

6.1 레플리케이션 컨트롤러 6.2 레플리카세트 지정한 숫자만큼의 파드가 항상 클러스터 안에서 실행되도록 관리. Selector에 해당하는 Pod의 replicas 갯수를 유지함. 명령어 ‘Kubectl get rs’ : 사용하는 레플리카셋 목록 가져오기 ‘Kubectl describe rs “레플리카셋이름” : 상세목록 정보 출력 ‘Kubectl delete rs “레플리카셋이름” : 삭제하기 ‘Kubectl edit rs “레플리카셋이름” : 설정 편집 ( 재설정될려면 기존의 파드들을 모두 삭제해야 함 )‘ Kubectl scale rs “레플리카셋이름” —replicas=“스케일 갯수” ‘ : 스케일링할 파드의 갯수 6.3 디플로이먼트 쿠버네티스에서 상태가 없는 앱을 배포할 때 쓰이는 컨트롤러 레플..

DevOps/Kubernetes 2021.07.21

[ 쿠버네티스 입문: 90가지 예제로 배우는 컨테이너 관리 자동화 표준 ] 5. 파드

5.1 파드 개념 쿠버네티스는 파드라는 단위로 컨테이너를 묶어서 관리 파드로 컨테이너 여러 개를 한꺼번에 관리할 떄는 컨테이너마다 역할을 부여할 수 있음. 하나의 컨테이너들이 같은 목적을 자원을 공유하게 됨. (IP공유. 포트는 서로 다름) spec.securityContext.runAsUser container를 실행할 User ID 지정하기 spec.containers.securityContext.capabilities.add root가 할 수 있는 일을 추가로 허용하기 5.2 파드 사용하기 5.3 파드 생명 주기 Pending 쿠버네티스 시스템에 파드를 생성하는 중 컨테이너 이미지를 다운로드한 후 전체 컨테이너를 실행하는 도중이므로 파드 안의 전체 컨테이너가 실행될 때까지 시간이 걸림 Running..

DevOps/Kubernetes 2021.07.21

[ 쿠버네티스 입문: 90가지 예제로 배우는 컨테이너 관리 자동화 표준 ] 4. 쿠버네티스 아키텍처

4.1 쿠버네티스 클러스터의 전체 구조 4.2 쿠버네티스의 주요 컴포넌트 마스터용 컴포넌트 Etcd /etc/kubernetes/manifests/etcd.yaml : 설정파일 Kube-apiserver 클러스터로 온 요청이 유효한지 검증함. (요청을 실행할 권한이 있는지 검사한 후 응답해줌) 쿠버네티스는 MSA이므로 서로 분리된 컴포넌트 여러 개로 구성되어 있음. 쿠버네티스에 보내는 모든 요청은 kube-apiserver를 이용해서 다른 컴포넌트로 전달함 /etc/kubernetes/manifests/kube-apiserver.yaml : 설정파일 Kube-scheduler 파드가 할당 될 노드를 결정함 Kube-controller-manager 2. 노드용 컴포넌트 Kubelet 클러스터 안 모든 노..

DevOps/Kubernetes 2021.07.21

[ 쿠버네티스 입문: 90가지 예제로 배우는 컨테이너 관리 자동화 표준 ] 3. 쿠버네티스로 컨테이너 실행하기

3.1 kubectl 클러스터를 명령으로 관리 및 동작 가능 (자원 생성, 업데이트, 삭제, 디버깅, 모니터링, 트러블슈팅, 클러스터 관리.. ) 설치 기본사용법 - Service Kubernetes : kube-apiserver 관련 파드를 가리킴 - 명령어 Port-forward : 로컬 컴퓨터와 service를 포트포워딩하는 명령어 Logs : 해당 서비스의 로그 수집 3. POSIX/GNU 스타일의 명령 작성 규칙 -n(—namespace) : 네임스페이스 지정 'exec my-pod' : my-pod라는 이름의 파드에 해당 명령을 실행하기(인자 주기) '-c my-container' : 컨테이너 지정 4. 플래그 5. Kubeconfig 환경변수 kubectl은 기본적으로 $HOME/.kube/..

DevOps/Kubernetes 2021.07.21

[ 쿠버네티스 입문: 90가지 예제로 배우는 컨테이너 관리 자동화 표준 ] Chapter02. 쿠버네티스 설치하기

2.3 클라우드 서비스에서 제공하는 쿠버네티스 도구 구글 쿠버네티스 엔진(GKE) 아마존 쿠버네티스 일래스틱 컨테이너 서비스(Amazon EKS) 애저 쿠버네티스 서비스 2.4 쿠버네티스 클러스터를 직접 구성하는 도구 kubeadm 쿠버네티스에서 공식 제공하는 클러스터 생성/관리 도구 고가용성을 제공하는 클러스터 구성 가능 여러 대의 마스터 노드를 구성하고 그 앞에 로드밸런서를 둠. 워커 노드들이 마스터노드에 접근할 때는 로드밸런서를 거쳐 접근함 -> 마스터 노드 1대에 장애 발생하더라도 다른 마스터 노드로 접근할 수 있게 해서 클러스터의 신뢰성을 유지함 etcd클러스터를 마스터 노드와 함께 설치해서 운용하는 방식 CNI (Container Network Interfaces) 1. 칼리코 2. 위브넷 클..

DevOps/Kubernetes 2021.07.21

[ 쿠버네티스 입문: 90가지 예제로 배우는 컨테이너 관리 자동화 표준 ] Chapter01. 쿠버네티스 소개

* 이 글은 [ 쿠버네티스 입문: 90가지 예제로 배우는 컨테이너 관리 자동화 표준 ] 책을 읽고 정리한 포스트임 1.1 컨테이너 리눅스는 원래 프로세스별로 자원을 격리하여(cgroup) 사용하거나, 특정 디렉터리로 권한을 제한하는(chroot) 등의 격리 환경을 구성할 수 있다. 도커를 이용하여 컨테이너 이미지를 만들고 저장소에 저장도 가능. 이를 가지고 가상환경 구현시에 성능을 높이기에 좋았음. 단, 개발환경 설정에 여러 장애요소가 발생해서 어려움을 겪음. 이러한 문제를 컨테이너 오케스트레이션 시스템을 사용하여 해결할 수 있었다. 앱을 배포하고 관리하기가 더 편하고 강력해짐 1.2 컨테이너 오케스트레이션 시스템 상용 서비스 구성 시, 여러 컨테이너를 배포하는 과정을 자동화 해줌. 운영이 훨씬 수월해짐..

DevOps/Kubernetes 2021.07.21