9. Core Concepts Section Introduction

Core Concept 에서 

Cluster Architecture, API Primitives , Services & Other Network Primitives 에 대해 배워볼 것이다.

 

10. 자료 다운

 

11. Cluster Architecture 

이번 챕터에서 위와 같이 배울거다. 

 

쿠버네티스의 목적은 어플리케이션을 다양한 컨테이너에 자동적으로 적재하는 것이다. 

 

화물선과 관제선? 이 있는 것처럼 쿠버네티스에서는 컨테이너를 나르는 Worker Nodes 와 상황을 모니터링 하는 Master Node가 존재한다.

ETCD Cluster. 

키-값 형식의 데이터 베이스

다양한 컨테이너에 대한 정보를 가지고 있다.

kube-scheduler 

컨테이너에 적재하는 역할

as scheduler identifies the right note to place a container on based on the containers.

Resource requirements the worker nodes capacity or any other policies or constraints such as tents and

여러가지 컨테어너 제약조건에 맞게 적재한다~

Controller-Manager

그외 문제들을 해결한다,. 

kude-apiserver 가 각 클러스터들의 통신을 담당한다.

kubelet 은 각 컨테이너의 선장이라고 보면된다. 

컨테이너를 관리하고 kube-apiserver에 통신한다.

 

kube-proxy service

컨테이너 끼리의 통신은 kube-proxy 서버가 담당한다.

이 구조를 계속 의식하자

 

we have the ETCD cluster which stores information about the cluster

\we have the Kube scheduler that is responsible for scheduling applications or containers on Nodes

We have different controllers that take care of different functions like the node control, replication,

controller etc..

we have the Kube api server that is responsible for orchestrating all operations within the cluster.

on the worker node.

we have the kubelet that listens for instructions from the Kube-apiserver and manages containers and

the kube-proxy

That helps in enabling communication between services within the cluster.

 

12. ETCD For Beginners

ETCD 에 대해 알아보자! 

It is a distributed, reliable, key value store that is simple, secure and fast.

 

Key-value store

관계형 데이터베이스와 다르게 키 값 메소드를 사용하여 데이터를 저장하는 비관계형 데이터베이스 유형

put Name "John Doe" 

Get Name  => "John Doe" 

 

처럼 키를 주면 값이 나온다. 

 

적은 데이터를 값거나 빠른 읽기 빠른 쓰기에 적합하다.

Install ETCD

ETCD 설치하기 

 

2379 포트를 기본으로 사용한다.

 

기본적은 ETCD control client를 사용한다. 

set key1 value1

으로 키 - 값 데이터 하나를 만들고

get key1 

으로 value1 을 얻을 수 있다. 

 

13. ETCD in Kubernetes

ETCD 가 쿠버네티스에서 어떻게 돌아가는지 알아보자

 

ETCD 클러스터에서는 

nodes, pods, configs, secrets , accounts, roles, bindings, others 를 포함한다.

Every information you see when you run the kubectl get command is from the ETCD server.

모든 변화를 ETCD serever가 알고 있다.  ETCD server가 업데이트 되면 변경사항이 완전히 적용된 것이다. 

 

클러스터를 어떻게 구성하느냐에 따라 ETCD를 다르게 배포된다. 

 

두가지 배포 방식이 존재한다.

about two types of kubernetes deployment. One deployed from scratch and other using kubeadm tool.

 

Setup - Manual

클러스터를 직접 구축하는 경우 etcd를 수동으로 설치해야한다. 

 

Setup - kubeadm

kubeadm 으로 설치

 

kubectl get pods -n kube-system

If you setup your cluster using kubeadm then kubeadm deploys the ETCD server for you as a POD in

the kube-system namespace.

registry는 루트 경로

 

각 마스터 노드는 다 ETCD cluster를 갖고 있다.  ETCD를 구분할 수 있게해야한다

(? 자료에서는 포트 번호를 다르게 하라고 하는것 같은데...)

 

14. ETCD - Commands(optional) 

(Optional) Additional information about ETCDCTL Utility

ETCDCTL is the CLI tool used to interact with ETCD.

ETCDCTL can interact with ETCD Server using 2 API versions - Version 2 and Version 3.  By default its set to use Version 2. Each version has different sets of commands.

For example ETCDCTL version 2 supports the following commands:

  1. etcdctl backup
  2. etcdctl cluster-health
  3. etcdctl mk
  4. etcdctl mkdir
  5. etcdctl set

 

Whereas the commands are different in version 3

  1. etcdctl snapshot save
  2. etcdctl endpoint health
  3. etcdctl get
  4. etcdctl put


To set the right version of API set the environment variable ETCDCTL_API command

export ETCDCTL_API=3

 

When API version is not set, it is assumed to be set to version 2. And version 3 commands listed above don't work. When API version is set to version 3, version 2 commands listed above don't work.

 

Apart from that, you must also specify path to certificate files so that ETCDCTL can authenticate to the ETCD API Server. The certificate files are available in the etcd-master at the following path. We discuss more about certificates in the security section of this course. So don't worry if this looks complex:

  1. --cacert /etc/kubernetes/pki/etcd/ca.crt
  2. --cert /etc/kubernetes/pki/etcd/server.crt
  3. --key /etc/kubernetes/pki/etcd/server.key

 

So for the commands I showed in the previous video to work you must specify the ETCDCTL API version and path to certificate files. Below is the final form:

 

  1. kubectl exec etcd-master -n kube-system -- sh -c "ETCDCTL_API=3 etcdctl get / --prefix --keys-only --limit=10 --cacert /etc/kubernetes/pki/etcd/ca.crt --cert /etc/kubernetes/pki/etcd/server.crt --key /etc/kubernetes/pki/etcd/server.key"

ETCD api 버전을 확인하자! 

 

15. Kube-API Server

 

만약 

kubectl get nodes 명령어를 입력하면 

kube-apiserver로 갔다가 ETCD 에 접근해서 nodes 정보를 응답받는다. 

 

 

이게 더 복잡해 보이지만....

In this case, the API server creates a POD object without assigning it to a node, updates the information

in the ETCD server updates the user that the POD has been created.

1~3 번까지 API Server 가 pod를 node 없이 생성한다. -> node 정보니까 ETCD 정보가 업데이트 됨. 

The scheduler continuously monitors the API server and realizes that there is a new pod with no node

assigned the scheduler identifies the right node to place the new POD on and communicates that back

to the kube-apiserver.

스케줄러는 계속 API Server를 모니터링하는데 새로는 pod가 생성된것을 확인하 고  노드 적재를 요청한다.

kube api는 노드의 kublet 과 통신한다.  pod에 node를 생성하고  끝나면 kubelet은 api server 와 통신하고 ETCD 정보를 수정한다. 

 

 

kube-api server 가 모든 과정에 관여한다. 

 

kube-api server의 기능

If you bootstrapped your cluster using kubeadm tool then you don't need to know this but if you are

setting up the hard way, then kube-apiserver is available as a binary in the kubernetes release

page. Download it and configure it to run as a service on your kubernetes master node.

 

kube-apiserver 만 etcd data store과 상호작용한다. 

 

 

수동으로 한다면 일일히 다 알아야한다. 

수동으로 조작하기 kube api server 가 통신하는 원리

 

쿠버네티스 아키텍처는 다양한 컴포넌트로 구성되어있다.

 

 

So how do you view the kube-api server options in an existing cluster

 

It depends on how you set up your cluster.

 

kube api server 확인하기

 

여러가지 옵션들이 존재한다 .

16. Kube Controller Manager

쿠브 컨트롤러 매니저에 대해 배워보자 

 

kube controller manager 에 대해 알아보자 

 

가장 큰 역할은 상태 확인, 상태 복구 이 두가지로 볼 수 있다. 

노드 컨트롤러가 5초 간격으로 kube api를 통해서 노드를 모니터한다. 

만약 노드가 맛가면 40초후에 unreachable 상태로 마킹한다. 

5분동안 수정 안하면 새 pod 로 갈아낀다. 

 

replication controller는 정해놓은 노드 만큼 돌아가도 유지한다.

컨트롤러안에 다양한 컨트롤러가 존재한다 .

이 모든 걸 kube controller manager 라고 한다. 

설치하고 실행하는 방법

 

사용가능한 컨트롤러 확인하기 

kubeadm 으로 확인하기 

 

위 경로에서 여러 설정들 확인가능

non-kubeadm 으로 설치했을때, 위의 옵션으로 보기 

 

You can also see the running process and the effective options by listing the process on the master

node and searching for kube-controller-manager.

 

위에서 확인가능. 

+ Recent posts