본문 바로가기

Web/Infra15

직접 쿠버네티스 클러스터를 구성해보자 With NCP 쿠버네티스 기반 서비스를 구성하기 위해서 AWS, GCP, NCP 등의 플랫폼을 사용할 때에는 두 가지 선택지가 있습니다. 1. 클라우드에서 제공해주는 쿠버네티스 서비스 이용하기 2. 직접 머신을 발급받아 쿠버네티스 구성하기 대부분의 상황에서는 클라우드 서비스에서 구성해주는 쿠버네티스 서비스를 이용하는 편이 손쉽고 간편하게 관리받을 수 있습니다. 하지만 쿠버네티스를 학습하고 있고, 어떻게 클러스터를 구성해야 할지 직접 핸즈온을 해보고 싶다면 2번 방법을 통해 간접적으로 간단하게 쿠버네티스 클러스터를 구성해볼 수 있습니다. 방화벽 포트 열기 쿠버네티스 설치를 위해서는 필수로 열려있어야 하는 포트가 있습니다. 공통 TCP 22번 포트를 열어주셔야 합니다. [SSH를 하기 위함] 마스터 노드 TCP Inbou.. 2021. 11. 17.
Kubernetes CKA 합격 후기 [2021-10-20] 작년 쿠버네티스를 도입하며 '이왕 공부하는 거 자격증이라도 따 보자!'라고 공부하던 CKA 자격증을 1년이 지난 이제야 응시하였고 취득하였습니다. CKA자격증은 외워서 따는 자격증이 아닌, 정말 쿠버네티스의 개념을 알고 있는지와 검색을 통해 문제를 해결할 수 있는지 검증하는 자격증이기 때문에 쿠버네티스를 공부할 예정이라면 CKA취득을 목표로 공부하는 걸 추천드립니다. 실제로 쿠버네티스 클러스터를 운영할 때에도 큰 도움이 되었으며 공부했으면 뭐라도 남는 게 있어야지(?)라고 생각하는 저에게 자격증은 공부할 수 있는 동력이 되었습니다 :) 시험 응시 방법 CKA자격증은 CNCF에서 발급해주며, 신청은 Linux Foundation에서 가능합니다. 시험은 2021년 기준 375$로 만만치 않은 가격이지만 상시.. 2021. 10. 21.
[Kubernetes] Replica Set, 파드의 개수을 항상 유지 Replica Set의 개념 쿠버네티스에서의 가장 작은 단위인 Pod는, 장애가 발생하거나 삭제되었을 때 자동으로 복구되지 않습니다. 즉, 관리자가 직접 파드가 죽은 것을 확인하고, 파드를 재생성하여 교체하여 주어야 정상적인 서비스를 받을 수 있습니다. 이렇게 관리자가 계속해서 파드를 재생성하는 것은 효율적이지 못합니다. 쿠버네티스는 이를 해결하기 위해 중간에서 파드의 개수를 실시간으로 확인하며 죽은 파드가 생긴다면 교체해주고, 재생성하여 언제나 지속적인 서비스를 제공할 수 있도록 만들어주는 파드의 관리자 성격인 레플리카셋(Replica Set)을 제공합니다. 레플리카셋은 복수의 파드를 생성하여 관리할 때 유효합니다. 자기 자신이 가지고 있는 파드의 템플릿을 사용하여 항상 일정 개수의 파드를 유지합니다... 2020. 10. 4.
[Kubernetes] Pod, 쿠버네티스의 가작 작은 단위 Pod의 개념 도커에서의 가장 작은 단위가 컨테이너라면 쿠버네티스의 가장 작은 단위는 Pod입니다. Pod는 도커에서 말하는 컨테이너를 하나 이상 묶은 단위입니다. 즉, Pod는 컨테이너의 그룹입니다. 그리고 이 Pod는 컨테이너 애플리케이션을 배포하기 위한 기본 단위가 됩니다. Pod라는 이름의 유래를 살펴본다면 고래 떼(pod of whales)나 콩꼬투리(pea pod)를 이름의 유래로 가지고 있습니다. 이렇게 묶인 컨테이너 그룹인 Pod는 다음과 같은 특징을 가지고 있습니다. 스토리지와 네트워크를 공유합니다 컨테이너 구동에 대한 명세를 가지고 있습니다 내부 콘텐츠를 함께 배치하고 실행하며 스케줄합니다 공유 콘텍스트에서 실행합니다 파드는 그 자체로 어느 정도의 격리된 환경을 제공합니다. 파드 내부의.. 2020. 10. 4.
도커 컨테이너의 로그 조회 및 저장 도커의 로깅 도커 컨테이너 내부에서 발생하는 로그는 다양한 형태로 조회하고 저장할 수 있습니다. StdIn, StdOut, StdErr 등의 표준 입출력을 Json File로 저장할 수 있으며 다른 서버에 로그 파일을 저장하기도 합니다. 또한 파일로 저장하지 않고 데이터베이스인 ElasticSearch 또는 MongoDB와 같은 데이터베이스에 저장할 수도 있습니다. 도커에서는 로깅 드라이버를 사용하여 로그를 남기도록 설정하고, 이 로깅 드라이버를 교체함으로써 다양한 로그 저장기법을 지원합니다. docker logs 도커에서 기본으로 사용하는 json-file 로깅 드라이버와 journald 로깅 드라이버를 사용한다면 도커의 명령어중 docker logs 명령어를 사용할 수 있습니다. docker logs.. 2020. 9. 13.
도커 네트워크의 구조 도커 컨테이너는 호스트 내부에 격리된 어플리케이션 환경을 생성합니다. 각각의 어플리케이션은 네트워크를통해 내/외부와 통신합니다. 도커 엔진은 이 컨테이너들이 호스트의 네트워크를 사용할 수 있도록 컨테이너를 생성할 때 내부IP를 할당합니다. 내부 IP는 도커 내부에서만 사용하는 IP이므로 도커 엔진은 컨테이너가 외부와 통신하기 위해 호스트에 컨테이너를 위한 가상 네트워크 인터페이스를 생성합니다. veth, eth0 도커 엔진이 호스트에 생성한 가상 네트워크 인터페이스는 실제로 외부와 통신할 수 있으며, veth로 시작하는 이름을 가지고 있습니다. 컨테이너별로 생성된 veth 인터페이스는 컨테이너 내부 eth0 인터페이스와 연결됩니다. 컨테이너에 eth0 인터페이스가 생성되는 것은 아래와 같이 확인할 수 있.. 2020. 9. 6.
도커 볼륨의 종류 도커 볼륨을 왜 사용해야 할까? 도커 컨테이너는 컨테이너마다 기본적으로 독자적인 저장소를 가지고 있습니다. 하나의 이미지로 여러 컨테이너를 만든다면 해당 컨테이너마다 독립적인 볼륨이 할당되고, 컨테이너가 삭제되면 해당 볼륨 또한 삭제됩니다. 이러한 구조에서 오는 이슈가 하나 있는데, 컨테이너 내부에 저장되는 데이터는 컨테이너가 삭제되었을 경우 같이 삭제된다는 점입니다. 예를 들어 제가 도커 컨테이너 내부에 제 블로그 글을 txt 파일 형식으로 저장해두었다고 가정해보겠습니다. 열심히 만든 제 글이 이 컨테이너에 존재하고 있습니다. 컨테이너 내부 볼륨에 제가 작성한 파일이 저장되어 있습니다. 컨테이너가 삭제되는 순간 제 파일도 함께 삭제될 것입니다. 이처럼 컨테이너 내부에 중요한 데이터를 두는 것은 그다지 .. 2020. 9. 6.
도커와 가상머신, 그리고 OS 개요 도커와 가상 머신이란? 도커 컨테이너와 가상 머신은 애플리케이션에 독립적인 리소스를 할당하고, 격리된 프로세스를 실행할 수 있다는 장점이 있어서 널리 쓰이는 기술입니다. 가상머신과 컨테이너 모두 어떤 서버 환경에서 구동하더라도 독립적인 리소스로 구동되기 때문에 서버에 대한 모든 종속성을 제거할 수 있다는 장점이 있습니다. 한번 구성해놓은 환경으로 다른 서버에서 구동시키더라도 이동한 서버에서 다시 환경 세팅을 해주지 않아도 된다는 편리함을 가지고 있습니다. 가상머신 가상 머신은 Host OS위에 하이퍼바이저를 이용하여 물리적인 장치를 가상화합니다. 가상화된 머신에는 그에 맞는 OS를 설치해주어야 하며 이때문에 아주 작은 애플리케이션을 가상화하더라도 OS로 인해 큰 용량을 가지고 있는 무거운 가상 머신.. 2020. 8. 29.
CI/CD 의 개념, 적용해본 후기 개요 얼마 전, SNS를 보다가 재미있는 글을 읽은 적이 있습니다. 이 글은 이상적인 프로그래머의 삶이 어떤 것인지를 그린듯한 글이었습니다. 출근과 퇴근이 자유롭고 소스코드 관리가 잘 되어있어서 버그는 간단하게 3줄 정도를 고치면 된다는 등 꽤나 흥미로운 내용이니 궁금하신 분은 여기서 읽어보시길 바랍니다. 캡처본이 여기저기 돌아다니니 한 번쯤 읽어 보신 분들도 꽤 많을 거 같네요. CI/CD는 위에 있는 글에서 한마디로 정의하고 있습니다. 개발 - 빌드 - 테스트 - 배포까지의 전 과정을 자동화하는 것이 바로 CI/CD의 핵심 개념입니다. CI, CD의 개념 짧게 개념잡기 CI (Continuous Integration)란 여러 개발자가 작성하거나 수정한 소스를 지속적으로 통합하고 테스트하는 것을 뜻합니.. 2020. 6. 21.