반응형

(출처: 패스트캠퍼스 "Kubernetes와 Docker로 한 번에 끝내는 컨테이너 기반 MSA" 강의를 들으며 내용 정리한 것임을 밝힙니다)

도커와 쿠버네티스를 야기 하고자 하려면, 우선적으로 컨테이너를 언급해야 한다.

 

#1. 컨테이너 기술의 발전

 

1. 컨테이너 등장배경

1) 전통방식

     [  H/W -> OS ] -> Framework -> Library       => APP

    - 하나의 서버에 app1, app2, app3 을 running 시킬때  framework , library 버젼등에 대한 제약이 발생하여 유연하게 사용이 어렵다

    - 갖고 있는 자원을 효율적으로 사용하기는 한계가 있다.

 

2) 가상머신 

     [  H/W -> OS ] ->[ HyperVisor ]-> Framework -> Library       => APP

     - 가상머신을 running 하기 위한 자원 overhead 가 발생

     - 전통방식에 대비 성능이 떨어짐????? why???

 

3) 컨테이너 

    1번과 2번의 단점/문제점을 해결할 수 있는 방법이 필요...좀더 효율화

    [  H/W -> OS ] ->[ Container Engine(Docker) ]-> Framework -> Library       => APP

    - host 입장에서의 하나의 process 와 유사 (= container)

    - 각 container 간 격리 (파일시스템 등) 되어 각 container 간 의존성 충돌 문제 없어짐

 

4) 쿠버네티스 (k8s)

     Container Orchestration System     

      - Container Engine : 하나의 서버내에서 Container 를 어떻게 관리할 수 있을까? 하는 관리 소프트웨어

      - Container Orchestration System : 여러서버들로 구성된 클러스터 환경에서 Container들 을 어떻게 하면 잘 관리할 수 있을까? 하는 관리하기 위한 기술 , 소프트웨어 를 의미

 

2. 컨테이너 기술 발전 흐름도

   1) docker 릴리즈 : 2013.3.20

   2) k8s : 2014

 

(계속 작성중....) not complete....

 

 

 

반응형
반응형

출처: https://seongjin.me/how-to-prepare-cka-exam/

 

Certified Kubernetes Administrator(CKA) 자격증 합격 후기 및 유용한 팁 (2022.02, v1.23)

CKA는 쿠버네티스 클러스터 관리 능력을 검증하는 대표적인 국제 자격증 중 하나다. 엔지니어 경험이 없는 초심자로서 이 CKA 자격증 시험에 도전하여 합격한 과정과 후기를 공유한다. 같은 시험

seongjin.me

 

 

CKA 자격증 시험은 쿠버네티스 기술을 관리하는 Linux Foundation 산하의 Cloud Native Computing Foundation(CNCF)에서 주관하며, 컨테이너 관리 도구인 쿠버네티스 클러스터의 관리 능력 검증을 목적으로 한다. 따라서 쿠버네티스 클러스터의 설치와 운영, 내부 리소스 배포 및 네트워크 설정, 그리고 클러스터에 발생한 문제 해결에 이르기까지 넓은 범위의 응용 지식을 다룬다. 또한 단순 이론 암기를 지양하고 철저한 실습 위주로 검증하므로 배움의 과정 자체에서도 얻을 것이 많다.

시험 진행 방식

시험 개요

  • Hands-on Practical Lab 형식의 온라인 원격 시험이다.
  •  120분 동안 약 15~20문제 가량을 풀어야 한다.
  • 100점 만점(100%) 중 66점(66%) 이상을 얻어야 한다.
  • 시험은 항상 최신 버전의 쿠버네티스 환경에서 진행된다. 만약 새 버전이 릴리즈 될 경우 시험 환경에는 4-8주 이내에 반영된다.
  • 1회 등록시 1년 이내에 총 2회까지 응시 가능하다. 1차에서 불합격해도 2차 기회가 주어진다.
  • 자격 유효기간은 3년이다.

응시 환경 체크

온라인 원격 시험이므로 시험을 치르는 주변 환경에 대해 상당히 엄격한 점검이 이루어진다. 아래 사항들을 꼼꼼히 살펴서 미리 준비해두자.

  • 응시자 외에 아무도 없는 격리된 개인 공간이어야 한다. 공공장소는 허용되지 않는다.
  • 시험 공간 4면에 책장, 액자, TV 등 시선을 끌만한 요소가 없어야 한다.
  • 책상 위의 불필요한 물품을 모두 치워야 한다. 내 경우엔 신분증도 신분 확인 후엔 치워야 했다. 단, 라벨 없는 투명한 물병은 허용되었다.
  • 신분 인증을 위해서는 시험 등록시 입력한 이름을 직접 확인 가능한 국가 공인 신분증이 필요하다. 어떤 언어로 입력했느냐에 따라 준비해야 할 신분증이 달라진다. 국문으로 입력했다면 주민등록증이나 국문 운전면허증으로 인증 가능하다. 만약 영문으로 입력했다면 여권 또는 영문 운전면허증을 반드시 준비하자. 얼굴 사진과 이름을 한 번에 확인 가능한 신분증이  권장된다.
  • 웹캠이 필수다. 별도의 웹캠이 없다면 가급적 15인치 이상의 대형 노트북 사용을 권장한다.
  • 시험 화면과 응시자 얼굴이 모두 실시간으로 감독관에게 전송된다. 인터넷 회선 속도와 연결 감도를 반드시 사전 점검해야 한다.
  • 8080/tcp, 4505/tcp, 4506/tcp 포트가 열려있어야 한다. 방화벽 이슈가 있는지 꼭 확인해보자.
  • 현재는 오직 1대의 모니터만 사용 가능하다. 노트북에 외장 모니터를 연결하는 것은 허용되지 않는다.
  • 내 경우에는 노트북 거치대와 블루투스 키보드, 터치패드 사용이 허용되었다.
  • 체크 과정에서 소요되는 시간은 주어진 시험 시간(120분)에 영향을 주지 않으므로 편안한 마음으로 진행하자.

시험 진행 환경 및 주의사항

실제 시험은 아래와 같은 UI 환경에서 진행된다. 이 내용은 2022년 8월, 쿠버네티스 v1.24 환경 기준으로 업데이트 된 내용임을 밝힌다.

새로 개편된 CKA 시험의 ExamUI 환경 (출처: Linux Foundation)

  • 응시자는 PSI Bridge Secure Browser를 통해 리눅스 기반의 VM에 원격 접속하여 시험을 치른다. 원격 응시 가능한 시스템 사양은 여기서 확인할 수 있다.
  • PSI Bridge Secure Browser 상단의 -, + 버튼으로 VM 화면의 글자 크기를 조정 가능하다. 이밖에 시험 화면 조정을 위한 방법도 함께 숙지하면 좋다.
  • VM에 포함된 터미널(Terminal)을 이용하여 문제 풀이를 진행한다.
  • 오픈북 용도로 VM에 포함된 브라우저(Firefox)를 이용할 수 있다. 오직 지정된 경로의 문서들만 이용 가능하다. 이밖의 다른 웹사이트 접속은 막혀있다. 번역본 문서 열람이 허가되지 않는 경우도 있었다고 하니 영문 문서에 익숙해지는 것이 좋다. 대신 이제는 한 번에 여러 탭으로 여러 문서를 동시에 참고할 수 있다.
  • 사전에 정리해 둔 북마크는 더 이상 사용할 수 없다. 미리 초기화 된 VM에 접속해서 시험을 치르므로 어쩔 수 없는 부분이다.
  • 시험용 VM의 터미널에서 복사/붙여넣기 단축키는 Ctrl+SHIFT+C, Ctrl+SHIFT+V 를 이용해야 한다. 이 단축키는 오직 터미널 안에서만 동작한다. 터미널 바깥에서는 Ctrl+C, Ctrl+V 를 이용한다. 단축키가 잘 듣지 않을 때엔 마우스 오른클릭을 이용하는 것이 좋다.
  • VM 내 브라우저(Firefox)에서 터미널로 복사-붙여넣기를 할 때 “Unsafe Paste” 경고가 뜬다. 이 경고는 그냥 무시해도 된다. 터미널의 Edit > Preferences > General 에서 Show unsafe paste dialog 옵션을 찾아 해제하면 경고가 뜨지 않는다.
  • 시험 화면의 우측 상단에 메모장(notepad) 기능이 있지만, 이전과 달리 VM 화면과 메모장 사이의 텍스트 복사 기능이 막혀있으므로 쓸 이유가 거의 없다.
  • 대신 VM에 포함되어 있는 텍스트 편집기(Mousepad)를 이용하자. 공식 문서의 샘플 YAML을 여기로 복사해서 편집한 뒤, 터미널의 vi 또는 vim 화면에 붙여넣는 식으로 활용할 수 있다.
  • VM 화면의 우측 상단에 보면 여러 개의 작업공간(Workspace)을 만들어 전환할 수 있는 버튼이 있다. 이걸 잘 활용하면 문서 참고용 Firefox 화면, YAML 편집 화면, 터미널 화면을 각각 넓게 구성해서 쓸 수 있다.
  • 각 문제마다 kubectl config set-context <컨텍스트명> 형태로 문제를 수행할 클러스터를 지정하도록 되어 있다. 이전 문제와 같은 클러스터에서 작업하게 되더라도 실수를 줄이는 차원에서 꼭 다시 실행해주자.
  • 2022년 8월 기준으로 시험용 클러스터의 OS는 Ubuntu 20.04로 지정되어 있다. 따라서 클러스터 설치 또는 업데이트 과제 수행시 패키지 관리를 apt로 해야 한다.
  • 각 문제마다 참고할 만한 공식 문서 링크가 함께 첨부되어 있다. 그러나 큰 도움은 되지 않으므로 https://kubernetes.io/docs/에서 필요한 문서를 직접 검색하는 것이 좋다.
  • 감독관과는 오직 채팅으로만 대화할 수 있다.

 

시험 준비 방법

리눅스 CLI 환경과 편집기에 적응하기

CKA 시험은 실제 구동되는 쿠버네티스 클러스터 환경에 직접 접속해서 문제를 해결하는 구성을 갖고 있다. 따라서 리눅스의 CLI 환경, 그리고 CLI를 통해 직접 사용 가능한 텍스트 편집기의 기초 사용법에 먼저 익숙해져야 한다. 리눅스 경험이 부족했던 내 경우에는 공부 기간 중 방송통신대학교에서 UNIX시스템 과목 수강을 병행하면서 파일 및 디렉터리 관리, 그리고 텍스트 탐색 및 편집 방법을 우선적으로 익혔다. 이 과정이 없었다면 이후의 학습 진행은 불가능했을 것이다.

CLI 환경에서의 텍스트 편집기는 vi 또는 vim을 주로 사용하게 된다. 이에 대한 사용법은 아래 블로그 포스팅들을 참고하여 익혔다.

컨테이너 기초 다지기

쿠버네티스는 컨테이너 오케스트레이션을 구현한 기술이다. 따라서 컨테이너와 도커, 네트워크에 대한 사전 지식이 필요하다.

내 경우에는 도커/쿠버네티스 온라인 부트캠프에서 조경민 매니저님께서 진행하신 도커 강의와, Eric Han님의 기술 블로그가 무척 큰 도움이 되었다. 만약 도커가 처음이라면, 아래 Eric Han님의 두 포스팅을 참고하면 좋다. 시간이 걸리더라도 차근차근 읽어보자.

도커를 통해 컨테이너 기반의 간단한 애플리케이션 배포를 직접 시험해보고 싶은 경우를 위해 예전에 연재했던 블로그 포스팅들도 함께 공유한다.

모두가 아는 '그 강의'로 시작하기

CKA 시험 후기를 찾아보면 반드시 언급되는 강의가 있다. 모두가 알고 모두가 추천하는 그 강의, 바로 Mumshad Mannambeth의 Certified Kubernetes Administrator (CKA) with Practice Tests다. 실제 수강해보니 그 명성 답게 유익한 강의였다.

이 강의는 쿠버네티스의 핵심 컨셉은 물론 클러스터의 주요 리소스들에 대한 기초적인 운용 방법을 명료하게 안내해준다. 커리큘럼이 체계적으로 잘 정비되어 있고, 영상 강의 내용을 복기할 수 있는 간편한 실습 환경도 함께 겸비하고 있다. KodeKloud를 통해 수십 가지 유형의 클러스터 실습 환경을 제공하며, 실제 시험 문제와 유사한 구성을 갖춘 Mock Exams  Lightning Labs도 포함되어 있다. 할인가 기준 2만 원 미만의 가격이 믿기지 않을 정도다.

아는 내용이라고 건너뛰지 말고 가급적 하나하나 찬찬히 들여다보길 권한다. 빽빽하게 구성된 커리큘럼 특성상 중간에 대충 넘겨짚고 넘어갔다가 나중에 어려움을 겪을 수 있다. 또한 강의 영상에서 한글 자막이 지원되지 않으므로 영어 독해 및 청해 능력이 필요하다. 영문 자막도 자동 생성 기반이어서 때때로 부정확한 내용이 출력될 수 있다는 점에 유의하자.

배운 것을 내 언어로 정리하기

모든 공부의 과정이 대체로 그렇듯이, 초반의 기초 지식을 익히는 시간이 가장 지루하고 힘들다. 그러나 이 단계를 잘 넘겨서 내것으로 소화해야 이후에 익혀야 할 정보량에 압도되지 않는다. 특히 클러스터의 주요 구성요소들에 대한 개괄적인 이해가 있어야 최근 시험에서 비중이 높아진 트러블슈팅 상황에도 빠르게 대처할 수 있다.

이 블로그에서는 쿠버네티스의 기초 구성요소에 대해 그동안 공부하고 익힌 내용을 kubernetes 태그에 모아두고 있다. 어디선가 얻은 내용을 단순 요약하기보단 시간이 걸리더라도 부족하게나마 내 언어로 정리하기 위해 애썼다. 지난한 과정이었지만, 덕분에 실습 단계에서도 내게 필요한 정보를 빠르게 캐치하여 배움을 수월하게 이어갈 수 있었다.

비록 자격증 시험의 모든 범위를 다루고 있진 않지만, 입문 과정에서 조금이라도 도움이 될 수 있으리라 생각되어 작성글 목록을 공유한다. 앞서 소개한 Mumshad의 강의에서도 이 내용들을 대부분 다루고 있다.

실습, 그리고 또 실습하기

터미널에서 직접 클러스터를 다루며 평가받는 시험이므로 반복적인 실습이 반드시 필요하다.

위에서 소개한 유데미 강의를 수강했다면 Mock Exams  Lightning Labs를 꼭 진행해보자. 문제를 풀어나갈 시험 환경이 어떤 형태로 구성되는지, 어떠한 문제 유형을 다루게 되는지 미리 적응할 수 있는 좋은 기회다. 실제로 경험해보니, 2022년 2월 기준으로 Mock Exam 2 Mock Exam 3의 난이도가 실제 시험에서 중간 또는 낮은 난이도의 문제들과 수준이 비슷했다. 틀리는 문제 없이, 넉넉한 여유 시간을 두고 풀 수 있을 때까지 반복 연습하는 것을 권한다. 높은 난이도의 문제를 대비하려면 아래에서 소개할 killer.sh를 이용하는게 좋다.

유데미 강의 없이 시험을 준비할 경우, 실습환경을 직접 구성해보는 것도 가능하다. 아래의 깃허브 리포지터리를 참고하자.

killer.sh 시뮬레이터 도전하기

CKA 시험을 등록하면 killer.sh 에서 문제 풀이 실습을 해볼 수 있는 무료 세션 2회분이 제공된다. 지금까지 배우고 연습한 것을 총정리한다는 마음으로 도전해보자.

이름부터 살벌한 시뮬레이터, killer.sh 접속 화면

많은 후기글에서 소개된 것처럼 killer.sh의 난이도는 상당히 높다. 그러나 대개는 하나의 문제 안에서 이것저것 해결해야 할 사항이 많거나, 일반적인 자격증 관련 강의에서 잘 다루지 않는 리소스 및 제약사항을 이용해야 하기에 까다로운 경우들에 속했다. 이를테면 podAntiAffinity를 이용하여 DaemonSet처럼 동작하는 Deployment를 구현하는 식이다. 실제로 경험해보니 시간만 충분하다면 쿠버네티스 공식 문서를 참고하며 풀어나갈 수 있는 문제들이었다.

killer.sh의 시뮬레이터는 리소스 디자인 및 배포, 정보 탐색, 클러스터 문제 해결 등 다양한 부문에서 빠른 시간 안에 실력을 점검하고 보완하기 좋은 구성을 갖췄다. 그러니 1회차에는 시간 제한에 얽매이지 말고 모든 문제들을 직접 스스로 풀어본 뒤, 2회차에서 시간 내 완료에 도전해보길 권한다. 나는 시험 전날 2회차를 진행하면서 25개 중 21개의 문제를 120분 안에 해결했고, 다음날 시험 과정에서 아무런 어려움을 겪지 않았다.

시험에 유용한 팁 소개

kubectl 단축어와 자동 완성기능 이용하기

2022년 들어 기존 시험 환경에 응시자의 편의를 위한 요소들이 새로 추가되었다.

  • kubectl에 대한 단축어(alias) k를 모든 클러스터에서 바로 사용할 수 있다.
  • kubectl 명령에 대한 셸 자동완성(Bash autocompletion) 기능도 바로 사용할 수 있다.
  • YAML 또는 JSON 작업을 위한 jq, 그밖에 tmux와 curl, wget, man이 기본 지원된다.

vim 설정파일 추가하기

아래 내용은 2022년 7월 전후로 시험 환경에 기본 적용된 사항이다. 그러나 만약을 대비하여 설정 방법을 남겨둔다.

시험 특성상 대부분의 문제 풀이 과정에서 YAML 파일을 편집하게 된다. 따라서 시험이 시작되면 처음 1분을 에디터 환경 편집에 할애하면 좋다. vim 기준으로 시험 과정에서 내가 사용한 설정값은 다음과 같다.

# tab을 2칸으로 설정
set tabstop=2

# tab 사용시 발생하는 공백을 띄어쓰기(스페이스)로 채움
set expandtab

# shift(>, >>, <, << 등)를 2칸으로 설정
set shiftwidth=2

위 내용을 외워서 과제 수행용 노드에 ~/.vimrc 파일로 저장해 두면 편집 작업이 한결 수월해진다.

kubectl의 달인이 되기

17개 내외의 문제를 해결하기에 120분의 시간은 조금 빡빡한 편이다. 조금이라도 시간을 절약하려면 가능한 한 많은 리소스 작업을 kubectl 명령 만으로 해결해낼 수 있어야 한다.

시험에서 다루는 리소스들 가운데 멀티 컨테이너 파드와 PV, PVC, 그리고 NetworkPolicy 정도를 제외하면 대부분 kubectl을 이용하여 빠르게 생성할 수 있다. 또한 --dry-run=client -o yaml 플래그와 결합하면 쿠버네티스 공식 문서 없이도 필요한 리소스의 기본 골격을 바로 뽑아서 편집할 수 있게 된다. 쿠버네티스 자격 시험에서 시간 관리의 성패는 결국 kubectl을 얼마나 빠르게 잘 활용하느냐에 달려 있다.

kubectl Cheat Sheet를 반드시 참고하자. 실제로 몇몇 문제는 여기에 기재된 명령어 만으로 바로 해결이 가능한 경우도 있었다.

JSONPath 익히기

CKA 시험에는 클러스터/노드/리소스 관련 특정 정보를 찾아 양식에 맞게 가공하여 제출하는 문제가 반드시 출제된다. kubectl get <리소스+리소스명> -o json 명령으로 받아온 출력물을 뒤져서 답안을 한땀한땀 써내려 가는 것은 촉박한 시험 환경에선 무척 수고로운 일이다.

이럴 때 내게 필요한 정보만 가공해서 빠르게 출력시키는 수단으로 JSONPath를 익혀두면 도움이 된다. 내 경우에는 시험 중에 특정 리소스의 정보를 찾아 주어진 조건대로 정렬해서 파일로 제출하는 형태의 문제를 자주 만났는데, 이걸 익혀둔 덕분에 정말 많은 시간과 노력을 절약할 수 있었다.

아래의 공식 문서에서 kubectl 명령과 JSONPath를 어떻게 결합하여 쓸 수 있는지 확인할 수 있다. 보다 디테일한 사용 방법 또한 다른 포스팅에서 정리하여 두었으니 함께 참고하면 도움이 될 것이다.

실수 줄이기

긴장도가 높은 환경에서 시간 제한을 두고 문제를 풀다 보면 의도치 않게 실수가 생길 수도 있다. 아래의 체크리스트를 반드시 떠올리자.

  1. 내 리소스가 올바른 클러스터(컨텍스트)에 만들어졌는가?
  2. 내 리소스가 올바른 네임스페이스에 만들어졌는가?
  3. 내 리소스가 문제에 제시된 대로 잘 동작하고 있는가?
  4. 내 리소스의 이름에 오탈자는 없는가?
  5. 파일로 제출하는 답안의 경우, 해당 파일에 필요한 내용이 올바르게 들어가 있는가?

알아두면 좋은 핵심 문제 유형

etcd 스냅샷 생성 및 복구

지정된 클러스터의 마스터 노드 etcd 백업 및 복원 방법을 반드시 익혀두자. 배점도 크기 때문에 놓치면 눈물 난다. 나는 etcdctl API의 버전 3 기준으로 CA인증서, 서버인증서 및 키파일 경로를 포함하여 snapshot 생성하고 복원하는 명령어 전체를 매뉴얼 없이 바로 입력 가능하도록 연습했다.

클러스터 노드 업그레이드

마스터 또는 워커 노드의 업그레이드 절차를 숙지하자. 공식 문서에 방법이 상세하게 안내되어 있으므로 참고하여 차근차근 진행하면 된다. 특히 업그레이드 과정 중간에 노드의 drain과 cordon, uncordon 절차를 반드시 따라야 한다.

파드 간 네트워크 구성

Service와 Ingress, 그리고 NetworkPolicy를 이용한 파드 간 네트워크 구성을 반드시 실습해보기 바란다. 이 유형은 위에서 소개한 유데미 강의 만으로는 커버되지 않으므로 killer.sh 또는 직접 구성한 클러스터를 통해 실습하는 것이 좋다. 내 경우에는 아래의 공식 문서에서 많은 도움을 얻었다.

로그 스트리밍용 사이드카(Sidecar) 컨테이너 구현

emptyDir 또는 hostPath 유형의 공유 볼륨을 이용하여 로깅 에이전트 기능을 하는 사이드카(Sidecar) 컨테이너 구현도 꼭 연습해보자. 이를 위해서는 멀티 컨테이너 파드를 구성하는 방법, 그리고 이 컨테이너들이 함께 공유하는 볼륨 설정법을 알아야 한다. 아래의 공식 문서와 블로그 포스팅을 각각 참고하자.

트러블슈팅(Troubleshooting)

2020년 9월부터 트러블슈팅이 CKA 시험에서 가장 큰 채점 비중(30%)을 차지하게 되었다. 66% 이상의 점수를 획득해야 하는 시험 구조상, 트러블슈팅 문제를 반드시 준비해야만 합격을 기대할 수 있다.

CKA 과정에서 다루게 되는 트러블슈팅의 유형은 크게 네 가지로 나뉜다.

  1. 애플리케이션(파드/컨테이너) 구동 문제
  2. 컨트롤 플레인 구성 요소의 구동 문제
  3. 워커 노드의 구동 상태 확인 및 복원 문제
  4. 네트워크 문제

2022년 2월 기준으로, 내 경우에는 위의 1, 2, 3번 유형에 해당하는 트러블슈팅 문제를 모두 경험했다. 특히 컨트롤 플레인 관련 트러블이 해결되지 않으면 이어지는 2개 정도의 문제가 연이어 해결 불가능한 구조로 출제되었다. 따라서 각 유형 별로 문제의 근원을 탐지하는 방법을 반드시 학습해 두어야 한다. 유데미 강의 또는 killer.sh에서 트러블슈팅을 실습해 볼 수 있으며, 아래의 공식 문서들 또한 문제 해결에 도움이 된다.

반응형

'DevOps' 카테고리의 다른 글

k8s Architecture  (0) 2023.06.15
Iaas, paas, saas 차이  (0) 2019.12.18
CentOS 에서 yum-config-manager: command not found  (0) 2019.09.02
centos 7 virtualbox guest additions 해결및 공유폴더설정완료  (0) 2019.08.26
Devops roadmap  (0) 2019.06.25
반응형

출처: https://aws.amazon.com/ko/what-is/cloud-native/

클라우드 네이티브는 클라우드 컴퓨팅 환경에서 현대적 애플리케이션을 구축, 배포 및 관리할 때의 소프트웨어 접근 방식

현대적인 회사는 고객의 요구를 충족하기 위해 신속하게 업데이트할 수 있는 확장성, 유연성 및 복원력이 뛰어난 애플리케이션을 구축하고자 합니다. 이를 위해 클라우드 인프라에서 애플리케이션 개발을 기본적으로 지원하는 현대적인 도구와 기술을 사용

처음부터 클라우드에 상주하도록 설계된 애플리케이션 을 의미함

 

(출처: https://www.nutanix.com/kr/info/what-is-cloud-native)

클라우드 네이티브 애플리케이션의 핵심 특징의 예는 다음과 같습니다.

  1. 코드가 컨테이너로 패키지화됨
  2. 마이크로서비스 집합으로 설계됨
  3. 긴밀하게 통합된 민첩한 방식으로 개발자와 IT 운영 팀이 협력함
  4. 탄력적인 클라우드 인프라 전반에서 배포 및 관리됨
  5. 인프라 리소스가 자동화된 정책 기반 방식으로 할당됨

 

클라우드 네이티브 방식이 엔터프라이즈에 주는 이점

클라우드 네이티브 여정을 시작하는 조직들은 방대한 클라우드 네이티브 생태계의 다양한 상용 오픈소스 기술과 더불어 컨테이너 및 Kubernetes를 도입하고 있습니다.

컨테이너 및 클라우드 네이티브 기술을 사용하면 조직은 애플리케이션 개발을 가속화하고, 운영 중단 없이 애플리케이션을 업그레이드하고, 효율적으로 애플리케이션을 확장하고, 다양한 환경 간에 쉽게 이식할 수 있습니다. 이러한 이점들은 궁극적으로 비즈니스 민첩성과 경쟁 우위를 향상합니다.

컨테이너 서비스는 엔터프라이즈가 직면한 몇 가지 주요 문제를 해결합니다. 어디서나 실행할 수 있고 개발자를 위한 강력한 소프트웨어 패키지를 제공하며 공급업체 중립적 패키지를 통해 서비스 업그레이드, 확장성, 가용성, 리소스 효율성을 지원합니다.  Kubernetes는 엔터프라이즈에서 일반적으로 수행되는 수동적 관리 대신 프로그래밍 가능하고 반복 가능한 방식으로 규모에 맞게 IT가 작동하는 인프라 레이어를 제공합니다. 쿠버네티스(Kubernetes)는 온프레미스와 퍼블릭 클라우드에서 배포할 수 있으므로 여러 환경에서 공통 운영 모델을 제공합니다.  이러한 특징 때문에 Kubernetes는 이러한 두 가지 환경을 활용하는 기업에게 적합한 플랫폼이 됩니다.

반응형
반응형

출처 : 쿠버네티스 | 쿠버네티스 아키텍처 :: 쉽지않은 개발 블로그 (tistory.com)

 

쿠버네티스 | 쿠버네티스 아키텍처

쿠버네티스를 정리함에 있어서 기본적으로 쿠버네티스가 내부적으로 어떻게 동작하는지에 대해서 알아보기 위해 정리하는 시간을 가지게 되었습니다. 쿠버네티스 구성 쿠버네티스는 다음과

no-easy-dev.tistory.com

 

너무 깔끔하게 잘 정리되어 있어 퍼옵니다. 

정리를 잘 하려면 역시 명확한 이해가 필요하다!!!

 

 

쿠버네티스를 정리함에 있어서 기본적으로 쿠버네티스가 내부적으로 어떻게 동작하는지에 대해서 알아보기 위해 정리하는 시간을 가지게 되었습니다.

 

쿠버네티스 구성

쿠버네티스는 다음과 같이 크게 Master Node 2가지로 구성됩니다.

 

 

위의 그림처럼 사용자는 kubectl이라는 것을 이용하여 쿠버네티스 클러스터와 통신을 하게 됩니다.

클러스터 내의 Master는 쿠버네티스의 설정 환경을 저장하고 전체 클러스터를 관리하는 역할을 맡고 있고, 각 Node들에서는 쿠버네티스 위에서 동작하는 워크로드들이 실행되게 됩니다.

 

그렇다면 좀 더 자세하게 Master에서는 어떻게 해서 위에서 설명한 역할들을 수행하고 있고 마찬가지로 Node에서는 어떻게 워크로드들이 실행되게 되는지 알아보겠습니다.

 

쿠버네티스 기본 개념

Master와 Node에 대해서 알기 전에 쿠버네티스의 기본 개념에 대해서 알고 넘어가도록 하겠습니다.

 

쿠버네티스의 기본 개념은 desired state(원하는 상태)라는 개념입니다.

원하는 상태라 함은 관리자가 바라는 환경을 의미하고, 좀 더 구체적으로는 어떤 서비스가 얼마나 많이 서버에 떠있으면 좋을지?
몇 번 포트로 서비스하기를 원하는지 등을 나타냅니다.

 

기본적으로 쿠버네티스틑 내가 원하는 상태(Desired State) 현재 상태(Current State)를 비교하고, 만약 원하는 상태와 현재 상태가 다르다면 현재 상태를 원하는 상태로 변경하는 기능을 수행합니다.

즉, 쿠버네티스는 항상 우리가 원하는 상태로 현재 상태를 유지한다고 생각하면 될 것 같습니다.

 

 

그렇다면 이제부터는 어떻게 위와 같은 기능들이 수행되는지 알아보도록 하겠습니다.

 

Master

위에서 Master는 쿠버네티스의 설정 환경을 저장하고 전체 클러스터를 관리하는 역할을 맡고 있다고 설명하였습니다.

쿠버네티스는 MSA(Microservices Architecture) 형태로 설계되어 Master 내부에는 다음과 같이 나뉘어 있습니다.

 

 

위의 그림처럼 Master 내부에는 Api Server, Controller, Scheduler, etcd라는 것들이 존재합니다.

 

그렇다면 어떻게 동작하게 되는지 간단한 예시를 통해 알아보도록 하겠습니다.

 

Api Server

우리는 현재 아무것도 올라가 있지 않은 쿠버네티스 클러스터에 파이썬 애플리케이션을 올리는 요청을 보냈다고 가정을 하겠습니다.

요청을 보내게 되면 다음과 같이 진행되는 것을 알 수 있습니다.

 

 

  1. 관리자는 Python App을 띄우도록 하는 Yaml파일을 작성하여 kubectl를 이용하여 쿠버네티스 클러스터에 요청을 하게 됩니다.
  2. 우리가 보낸 요청은 Api Server가 받게 되고 etcd라는 key, value저장소에 어떤 상태가 되어야 하는지를 저장합니다.
앞으로도 계속 나오겠지만 쿠버네티스의 모든 요청들은 Api Server을 통해서 수행되게 됩니다.

 

etcd는 key, value저장소입니다.

https://www.redhat.com/ko/topics/containers/what-is-etcd

쿠버네티스 클러스터의 모든 상태에 대한 정보를 저장하고 있습니다.

 

Controller

Controller는 위에서 말씀드렸던 Desired State를 유지하기 위해 지속적으로 변경사항이 있는지 확인하게 됩니다.

 

 

  1. Controller는 etcd에 저장되어있는 내용을 지속적으로 확인하고 있습니다.
  2. 위의 그림처럼 확인된 내용과 현재 상태가 다를 경우 위에서 설명한 Desired State를 유지하기 위한 조치를 취하게 됩니다.
Controller에는 각 워크로드들에 대한 컨트롤러가 존재하여 각각 모니터링을 하게 됩니다.
따라서 위의 그림에서처럼 Pod가 띄워져야 한다는 상태는 Pod Controller가 확인하여 현재 상태와 비교하게 되는 것입니다.

 

Scheduler

Scheduler는 위의 Controller에서 새로운 워크로드(Pod)를 띄워야 한다고 했을 때 어떤 Node에 띄워야 하는지를 결정하게 됩니다.

 

 

위 그림처럼 새로운 서비스를 띄위기에 가장 효율적인 Node에 띄워지도록 지정하게 됩니다.

 

 

여기까지 각 Api Server, Controller, Scheduler, etcd를 통해서 Master에서는 쿠버네티스의 설정 환경을 저장하고 전체 클러스터를 관리하는 역할을 수행하게 됩니다.

 

Node

그럼 다음으로는 실제 워크로드들을 실행하게 되는 Node에 대해서 알아보도록 하겠습니다.

 

 

각 Node들에는 기본적으로 Kube-Proxy와 Kubelet 그리고 컨테이너 런타임이 존재합니다. 

그리고 현재는 컨테이너 런타임으로 Docker를 사용하고 있는것을 그림을 통해 확인 할 수 있습니다.

 

Kubelet

Kubelet은 파드에서 컨테이너가 확실하게 동작하도록 관리합니다.

컨트롤 플레인(Master)에서 노드에 작업을 요청하는 경우 Kubelet이 이 작업을 실행합니다.

 

Kube-Proxy

노드로 들어오거는 네트워크 트래픽을 적절한 컨테이너로 라우팅하고, 로드밸런싱등 노드로 들어오고 나가는 네트워크 트래픽을 프록시하고, 노드와 마스터간의 네트워크 통신을 관리합니다.

 

 

위의 과정들을 다시한번 정리해 본다면 다음과 같습니다.

 

 

위의 그림을 통해서 Pod하나를 띄우는 과정에서도 쿠버네티스 내부의 여러개의 마이크로 서비스들이 각자의 역활을 수행하여 동작한다는것을 확인할 수 있습니다.

 

 

반응형
반응형

출처 : Multipass로 Ubuntu 가상환경을 쉽게 띄우자 (velog.io)

 

multipass 윈도우에서 이렇게  vm을 바로 사용할 수 있다니... 세상이 참... 멀티플 해지네요 ^^;;;

 

Multipass 사용

인스턴스 생성

multipass launch

launch 명령어로 새로운 우분투 인스턴스를 만들 수 있다.

multipass launch 16.04

사용할 버전을 명시해줄 수도 있다.

multipass launch --cpus <cpus> --disk <disk> --mem <mem> --name <name>

위와 같은 옵션 값을 통해 인스턴스의 스펙을 조절해줄 수 있다.

  • -c, --cpus <cpus>
    • 할당할 CPU의 개수
    • 최소값 : 1, 기본값 : 1
  • -d, --disk <disk>
    • 할당할 저장공간
    • 기본적으로 byte 단위이며, K, M, G 접미사를 붙여서 단위를 지정할 수 있다.
  • -m, --mem <mem>
    • 할당할 메모리
    • 기본적으로 byte 단위이며, K, M, G 접미사를 붙여서 단위를 지정할 수 있다.
  • -n, --name <name>
    • 인스턴스의 이름을 지정해준다.

인스턴스 목록 조회

multipass list

list 명령어로 존재하는 인스턴스들을 확인할 수 있다. ls로 줄여쓸 수도 있다.

인스턴스 Shell 접속

multipass shell <instance name>

shell 명령어를 통해 해당 인스턴스의 쉘에 접근할 수 있다.

명령 실행

multipass exec <instance name> -- <명령어>

어느 인스턴스가 특정한 명령을 수행하길 원한다면, exec 명령어를 사용하면 된다. -- 하이픈 두개 뒤에 수행할 명령어를 기입해주자.

인스턴스 정지

multipass stop <instance name>

stop 명령어를 통해 인스턴스를 정지시킬 수 있다. 정지된 인스턴스는 State가 Stopped가 된다.

인스턴스 정지

multipass start <instance name>

start 명령어를 통해 정지되어 있던(Stopped 상태) 인스턴스를 실행시킬 수 있다.

인스턴스 삭제

multipass delete <instance name>

delete 명령어를 통해 인스턴스를 삭제할 수 있다. 해당 명령어를 통해 인스턴스를 삭제할 경우, 완전히 없어지는 것이 아니다. ls 명령을 통해 인스턴스 목록을 조회할 시, State가 deleted인 상태로 남아있다.

인스턴스 복구

multipass recover <instance name>

recover 명령어를 통해 deleted 상태인 인스턴스를 복구할 수 있다. 복구된 인스턴스는 Stopped 상태가 된다.

인스턴스 영구 삭제

multipass purge

purge 명령어를 통해 deleted 상태인 인스턴스를 영구 삭제한다.

반응형
반응형
반응형
반응형
반응형
반응형

셀 크기 조정 (참고로 자동으로하는거 찾음) ㅠ.ㅠ

for (int i=0;i<temp;i++) //autuSizeColumn after setColumnWidth setting!!
{
sheet.autoSizeColumn(i);
sheet.setColumnWidth(i, (sheet.getColumnWidth(i))+512 ); //이건 자동으로 조절 하면 너무 딱딱해 보여서 자동조정한 사이즈에 (short)512를 추가해 주니 한결 보기 나아졌다.
}

셀 높이 조정

row.setHeight((short)512);

반응형

'Java기초' 카테고리의 다른 글

JPA(Java Persistent API)란  (0) 2021.10.21
Java Garbage Collection (펌)  (0) 2015.12.16
gc g1  (0) 2015.12.10
gc 방식  (0) 2015.12.10
gc 후 메모리 사용순서  (0) 2015.12.10
반응형

해야 할 일이 무지 많고,

집에서도 회사에서도 여유로운 시간이라고는 찾아볼 수 없지만...

왠지... 내 맘은 여유로워지고 있다.

마치 작용반작용 처럼... 분주할 수록 내 맘은 무언가...더 차분해 진다.

누가...불혹이라 하였는가... 

지금의 나는 그 어떤 유혹에도 흔들리지 않는것이 아니라,

파도에 몸을 맡긴채로 파도와 함께 흔들려서 내 몸이 위태롭지 않은 듯하다.

어찌 나이를 먹을 수록 ....이리도 더 알 수 없는 마음 상태가 되는 것인가....

반응형

'하고싶은말' 카테고리의 다른 글

삶에 주기적으로 찾아오는 병  (0) 2019.11.19
반응형
반응형

+ Recent posts