initmumu / DevOpsStudy

DevOpsStudy
4 stars 1 forks source link

DevOps Study 1주차 #1

Open initmumu opened 1 year ago

initmumu commented 1 year ago
  1. 일시: 2023년 02월 16일 목요일
  2. 챕터:
    • 1장 쿠버네티스 소개
    • 2장 쿠버네티스 설치하기
DrawingProcess commented 1 year ago

1장. 쿠버네티스 소개

1.1 컨테이너

1.2 컨테이너 오케스트레이션 시스템

1.4 쿠버네티스의 특징

구글 클라우드 플랫폼, 마이크로소프트 애저, AWS에서 Kubernetes 지원.

1.4.1 선언적 API

1.4.2 워크로드 분리

1.4.3 어디서나 실행 가능

1.4.4 커뮤니티

2장. 쿠버네티스 설치하기

2.1 설치 없이 쿠버네티스 사용하기

2.1.1 카타코다 쿠버네티스 플레이그라운드: kubectl 관련 명령 실행 가능

2.1.2 Play with Kubernetes

2.2 도커 데스크톱을 이용한 쿠버네티스 설치

2.3 클라우드 서비스에서 제공하는 쿠버네티스 도구: 실제 상용 서비스에 쿠버네티스 클러스터를 구성하고 관리 가장 간단한 방법

2.3.1 구글 쿠버네티스 엔진(GKE)

2.3.2 아마존 쿠버네티스 일래스틱 컨테이너 서비스(Amazon EKS)

2.3.3 애저 쿠버네티스 서비스(AKS)

2.4 쿠버네티스 클러스터를 직접 구성하는 도구: 규칙준수 이슈를 해결할 때 활용

2.4.1 Kubeadm

2.4.2 Kubespray

csw1511 commented 1 year ago

https://velog.io/@csw1511/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4-%EC%9E%85%EB%AC%B8-1-2%EC%B1%95%ED%84%B0

initmumu commented 1 year ago

쿠버네티스 입문 1장

kbpark9898 commented 1 year ago

1.4 쿠버네티스의 특징

  1. 선언적 api 쿠버네티스는 선언적 api를 이용해 자신의 상태를 변경하고, 지속한다. 만약 사용자가 k8s api를 통해 특정 앱을 10개의 컨테이너를 사용하여 실행하겠다고 명령하면 k8s는 스스로 컨테이너의 개수를 10개로 유지한다. 물론, k8s가 직접적으로 관리하는 부분은 k8s controller의 기능으로써 encapsulation 되기때문에 개발자가 직접 신경쓸 필요가 없으며, 신경 쓸수도 없다. (이 과정에서 앱 재시작과 같은 일부 기능들은 필요에 의해 k8s object의 기능으로 추가되기도 한다.)

  2. 워크로드 분리 다양한 서버에 분산되어 있는 앱의 프로세스들을 k8s가 관리해주고, 개발자는 k8s controller에게 api로 특정 명령을 내리기만 하면 되므로 분산시스템 관리에 대한 개발자의 고민을 덜어준다.

2.1 설치 없이 쿠버네티스 사용하기

2.4 쿠버네티스 클러스터를 직접 구성하는 도구

k8s 클러스터의 구성을 위해 azure, aws eks, gcp 등의 서비스를 사용할수도 있지만, 다음의 도구들을 통해 직접 커스텀 할수도 있다.


여기서 잠깐!!

etcd란, cp node가 가지고 있는 control plane components 중 하나이다. 쿠버네티스 클러스터에서 노드는 두가지 분류로 구분되는데, worker node와 control plane (master) node가 그것이다. Worker node는 실제 앱을 실행시키는 역할이며, control plane 노드는 클러스터의 상태를 관리해주는 역할을 수행한다. 그리고 control plane node는 control plane object로 구성되는데, 그 종류는 다음과 같다.

  1. Kube-apiserver
    • 쿠버네티스 클러스터의 api를 사용할 수 있도록 해주는 컴포넌트. Kube-api를 통해 특정 자원의 조회 명령을 받으면 해당 작업을 수행하고 돌려주는 역할이다.
  2. Etcd
    • 클러스터 데이터를 저장하는 고가용성 key-value 스토어이다.
  3. Kube-scheduler
    • 새롭게 실행할 파드에 알맞는 노드를 탐색하고, 파드를 할당하는 역할을 수행한다.
  4. Kube-controller-manager
    • 쿠버네티스에서 파드들을 관리하는 컨트롤러 프로세스를 실행하는 컨트롤 플레인 컴포넌트
    • ref) https://kubernetes.io/ko/docs/concepts/overview/components/ 즉, 앞서 말한 etcd 영역을 분리한다는 것은 클러스터의 정보를 저장할 수 있는 클러스터를 따로 분리한다는 의미가 된다.

    • Kubespray
    • ansible 기반으로 개발되었으며 사용자의 입맛에 따라 다양한 클러스터 커스텀이 가능하므로 온 프레미스 환경의 k8s 클러스터 구성에 유용하다.
    • kubeadam과는 다른 방식으로 고가용성을 보장한다. 각 worker node가 nginx 리버스 프록시를 보유하고, 이 리버스 프록시를 통해 모든 master node를 바라본다. 마스터 (cp)노드의 active 여부는 nginx가 알아서 처리한다.
    • 다양한 cluster network interface를 지원한다.
    • calico interface는 실제로 모 회사의 k8s 플랫폼에도 사용된다. 이는 kubespray의 기본 설정이기도 하다.