Kubernetes 13

쿠버네티스로 컨테이너 실행하기

쿠버네티스 입문을 요약한 내용입니다. 3.1 Kubectl 3.1.1 설치 3.1.2 기본 사용법 kubectl [command] [type] [name] [flags] command: 자원에 실행하려는 동작, create, get, delete 등을 사용할 수 있습니다. type: 자원 타입, pod, service, ingress 등을 사용할 수 있습니다. name: 자원 이름 flag: 부가적으로 설정할 옵션을 입력 간단한 에코 서버를 동작시키는 예제 실습 echoserver 라는 이름의 파드를 하나 생성 $ kubectl run echoserver --generator=run-pod/v1 --image="k8s.gcr.id/echoserver:1.10" --port=8080 ## k8s v1.18..

쿠버네티스 설치하기

쿠버네티스 입문을 요약한 내용입니다. 쿠버네티스를 사용하기 전 필요한 쿠버네티스 설치 과정을 다룹니다. 클라우드 서비스의 쿠버네티스 소개, 쿠버네티스 클러스터를 직접 구성하는 방법을 소개합니다. 2.1 설치 없이 쿠버네티스 사용하기 쿠버네티스는 별도로 설치하지 않고 웹 브라우저에서 사용해볼 수 있는 사이트가 있다. 2.1.1 카타코다 쿠버네티스 플레이그라운드 카타코다에서는 마스터 노드가 이미 설정되었고 플레이그라운드에서 제공하는 커맨드라인툴을 이용할 수 있다. 쿠버네티스 커맨드라인 인터페이스인 kubectl관련 명령을 실행할 수 있다. 2.1.2 Play with Kubernetes Play with Kubernetes는 도커에서 제공하는 쿠버네티스 실습용 웹 환경 카타코다와의 차이점은 로 직접 노드를 ..

쿠버네티스 소개

쿠버네티스 입문을 요약한 내용입니다. 쿠버네티스는 컨테이너 오케스트레이션 시스템 세계의 사실상 표준이라고 볼수 있다. 컨테이너 오케스트레이션 시스템에는 도커 스웜, 코어OS 플리트, D2iQ의 DC/OS 등이 있었다. 도커가 스웜뿐만 아니라 쿠버네티스를 지원하기 시작하고 코어OS는 플리트 개발을 종료 했다. 1.1 컨테인너 리눅스는 원래 프로세스별로 자원을 격리해서 사용하는 cgroup과 특정 디렉터리로 권한을 제한하는 chroot 등으로 격리 환경을 구성할 수 있었다. 여기에 디스크의 파일 변경 사항을 레이어 형태로 저장하는 파이시스템을 합해 컨테이너라는 개념이 탄생 도커는 위에 기능을 모아서 컨테이너를 손쉽게 사용할 수 있도록 한 것으로 주목을 받았음 countainerd, runc, cri-o 같은..

파드와 컨테이너 보안

쿠버네티스 모범 사례을 요약한 내용입니다. 파드 보안에는 파드시큐리티폴리시(PodSecurityPolicy)와 런타임 클래스(RuntimeClass)라는 두가지 방법이 있음 각 API의 목적과 사용법에 대해서 살펴보기 10.1 파드시큐리티폴리시 API 클러스터 수준 리소스인 파드시큐리티폴리시는 파드 명세에서 보안에 민감한 모든 필드를 정의하고 관리할 수 있는 유일한 곳 리소스를 생성하기 전, 클러스터 관리자와 사용자는 SecurityContext 설정을 워크로드마다 개별적으로 정의해야 함 클러스터에서 맞춤형 어드미션 컨트롤러를 활성화해 파드 보안을 시행 파드시큐리티폴리시는 효과적으로 구현하기 어려움 클러스에서 실행할 수 있는 대상과 권한 수준을 제한하여 공격에 취약한 영역을 줄이는 가장 효과적인 방법 1..

네트워킹, 네트워크 보안, 서비스 메시

쿠버네티스 모범 사례을 요약한 내용입니다. 쿠버네티스는 서로 연결된 시스템으로 구성된 클러스터의 관리자 서비스가 효과적으로 통신하려면 쿠버네티스가 관리하는 분산 서비스 사이에 통신이 이루어지는 방법을 이해야함 9.1 쿠버네티스 네트워크 원칙 효과적인 애플리케이션 아키텍처를 설계하기 위해서는 쿠버네티스의 내부 네트워크를 통해 서비스 사이의 통신이 이루어지는 방법을 이해해야 함 쿠버네티스의 네트워크 규칙(컴포넌트 사이에서 통신하는 방법) 동일한 파드 내의 모든 컨테이너는 동일한 네트워크 공간을 공유 컨테이너 사이의 localhost 통신이 가능 동일 파드 내의 컨테이너는 다른 포트를 열어야함 리눅스 네임스페이스와 도커 네트워크를 통해 이루어짐 파드의 네트워킹을 담당하는 모든 파드에서 일시 중지된 컨테이너를 ..

리소스 관리

쿠버네티스 모범 사례을 요약한 내용입니다. 쿠버네티스 리소스를 관리하고 최적화하는 모범 사례를 살펴보기 워크로드 스케줄링, 클러스터 관리, 파드 리소스 관리, 네임스페이스 관리, 애플리케이션 확장에 대해 논의 어피니티(Affinity), 안티어피니티(AntiAffinity), 테인트(Taint), 톨러레이션(Toleration), 노드 셀렉터(NodeSelector)를 이용한 고급 스케줄링 기술을 알아보기 리소스 제한과 요청, 파드 서비스 품질, PodDisruptionBuget, LimitRanger, 안티어피니티 정책을 알아보기 8.1 쿠버네티스 스케줄러 스케줄러는 컨트롤 플레인에서 호스팅되는 핵심 컴포넌트 스케줄러는 파드를 클러스터에 어떻게 배치할지를 결정 클러스터와 사용자가 정의한 제약에 따라 리..

글로벌 애플리케이션 분산과 스테이지

쿠버네티스 모범 사례을 요약한 내용입니다. 애플리케이션의 규모를 글로벌 수준으로 늘리는 데는 여러가지 이유가 있습니다. 확장성 애플리케이션이 성공하여 전세계의 사용자에게 배포될 때 공개 클라우드 공급자의 글로벌 API 게이트웨이, 대규모 IoT, SNS 등 지역성 대역폭이나 데이터 프라이버시의 이유로 특정 리전에 배치해야하는 경우 쿠버네티스를 사용하더라도 빛의 속도를 따라갈 수 없기 때문에 레이턴시를 최소화 하기 위해서는 애플리케이션을 전세계에 분산하여 사용자와 물리적인 거리를 좁혀야 합니다. 글로벌 리전을 관리하고 안정적으로 서비스를 롤아웃 하는 것은 대단히 어렵습니다. 7.1 이미지 분산 전 세계 클러스터에서 애플리케이션을 실행하기 위해서는 전 세계의 리전에서 이미지를 사용할 수 있어야 함 이미지 레..

버전, 릴리스, 롤아웃

쿠버네티스 모범 사례을 요약한 내용입니다. 6.1 버전 대부분의 소프트웨어 회사와 개발자는 시멘틱 버전의 유용함에 동의 함 시멘틱 버전은 마이크로서비스와의 API 호환성에 의존하는 경우 더욱 유용 시멘틱 버전은 기본적으로 세 개의 버전 숫자로 이루어짐 메이저 버전, 마이너 버전, 패치 버전 1(메이저).2(마이너).3(패치) 와 같이 점 표기로 표현 패치 버전은 버그 수정이나 API변경 없는 사소한 수정마다 증가 마이너 버전은 API 변경이 있더라도 이전 버전과 하위 호환이 가능 마이크로서비스에서는 협업하는 개발자에게 매우 중요 메이저 버전은 대규모 코드 변경을 의미 API는 호환되지 않음 4가지 버전을 사용할 수도 있음 ex) 1.4.7.0은 알파 코드, 1.4.7.3은 릴리즈 등 6.2 릴리즈 쿠버네..

지속적 통합, 테스트, 배포

쿠버네티스 모범 사례을 요약한 내용입니다. CI/CD를 적용 하는 방법, 도구, 절차를 알아 보기 CI/CD의 목표는 코드 검토부터 운영 롤아웃까지 완전히 자동화된 프로세스를 갖추는 것 쿠버네티스에서 배포된 앱을 수동으로 업데이트하면 오류가 자주 발생함 설정 표류(configuration drfit)를 발생 가능성이 높아짐 배포 업데이트가 불안정해짐 배포 속도가 둔화됨 5.1 버전 관리 CI/CD 파이프라인은 버전관리부터 시작 브랜치 전략을 세우는 방법을 조직 구조와 업무에 따라 설정해야 함 운영 코드가 포함된 마스터 브랜치(Master Branch) 기능과 개발을 위한 기능 브랜치(feature) 개발자와 운영 엔지니어가 단일 스토리지에서 공동의 작업을 수행하게 되면 운영에 전달하는 팀에 대한 신뢰도가..

설정, 시크릿, RBAC

쿠버네티스 모범 사례을 요약한 내용입니다. 서비스 운영중 런타임에 설정 데이터를 컨테이너에 전달 할 수 있음 설정을 효과적으로 변경 가능 민감한 데이터는 시크릿과 같은 방법으로 전달 해야함 RBAC로 특정 사용자나 그룹의 API 이용에 대한 정교한 권한 구조를 구현할 수 있음 4.1 컨피그맵과 시크릿을 통한 설정 컨피그맵과 시크릿의 중요한 차이는 파드가 수신 정보를 저장하는 방식과 데이터가 etcd에 저장되는 방식 차이 4.1.1 컨피그맵 컨테이너를 사용해 애플리케이션과 설정 정보를 분리할 수 있음 컨피그맵 API를 이용해 전달받은 설정 정보를 주입할수 있음 컨피그맵은 유연성이 뛰어나기 때문에 다양한 처리를 할수 있음 키/쌍, JSON, XML 등 으로 전달 가능 설정 정보 뿐만 아니라 컨트롤러, CRD..