관리 메뉴

Sysops Notepad

rancher , k8s 메모 본문

업무/etc

rancher , k8s 메모

sysops 2018. 11. 30. 14:02

rancher


https://rancher.com/docs/rancher/v2.x/en/installation/ha/create-nodes-lb/nginx/


docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher



# k8s master

인증,권한 관리

API entry point(API Server : HTTP를 통해 내부 및 외부 인터페이스를 제공합니다. 이를 통해 Pod, Service, Replication Controller 등의 설정)

컨테이너 할당 스케줄링

스케일링, 복제 컨트롤러 (Controller Manager : DaemonSet Controller, Replication Controller등의 개체를 모니터링하고 변경 사항이 발생할 때 Pod의 증가 또는 감소를 수행)

설정 정보 관리

커맨드 라인 인터페이스(kubectl)


# k8s nodes

kubelet agent로 동작, master와 통신하며 노드를 관리

pod : 클러스터에서 실행중인 하나 이상의 컨테이너 그룹입니다. Pod 안에서의 모든 컨테이너는 IP 주소, IPC, 호스트 이름 및 기타 리소스를 공유)

node : Pod들이 실행되는 머신 

Kubelet : 노드에서 실행되는 서비스로, Pod Spec에 정의된 상태로 컨테이너가 실행 중인지 확인하고 유지하도록 합니다.

Kube-proxy : 각 컨테이너에 대해 네트워크 프록시와 로드 밸런서 기능을 제공합니다.

컨테이너간 TCP/UDF패킷을 통제하여 linux iptable의 규칙을 변환 한다.


# etcd

분산 키-밸류 스토어이다. RESTful API로 접근 가능하며 CRUD를 담당한다. 

k8s관련 메타정보를 관리한다고 보면 된다.


# overlay network

컨테이너간 네트워크 연결을 지원한다. 호스트 노드에는 docker0라는 가상 네트워크 인터페이스를 생성하게 되는데 이때 private으로 할당되게 된다. 

서로 다른 호스트에서 docker container 간의 네트워킹을 가능하게 하는 방식이다. CoreOS의 flannel , calico을 이용하여 구축이 가능하다.



Helm: Kubernetes 패키지 관리

Kube-dns: Kubernetes: 어플리케이션의 서비스 디스커버리 역할



주요기능


Automatic binpacking : 서비스의 리소스 요구 사항 및 기타 제약 조건에 따라 컨테이너를 자동으로 배치합니다

Self-healing : 서비스하고 있는 container가 종료되거나, 사용자가 정의한 health-check가 실패하는 경우 컨테이너는 자동으로 복구됩니다.

Horizontal scaling : 수동 또는 CPU 사용량에 따라 자동으로 컨테이너 확장이 가능합니다.

Service discovery and load balancing : Kubernetes는 컨테이너에 고유한 IP 주소와 단일 DNS 이름을 제공하고 이를 통해 로드밸런싱을 지원합니다.

Automated rollouts and rollbacks : Kubernetes는 응용 프로그램 상태를 모니터링 하면서 동시에 모든 인스턴스를 종료하지 않도록 응용 프로그램이나 해당 구성의 변경 사항을 점진적으로 배치합니다. 또한 잘못된 배치의 경우 롤백을 즉시 수행할 수 있습니다.



Object에는 Pod, Service, Volume, Namespace등이 포함되고

Controller에는 ReplicaSet(구 ReplicationController), Deployment, StatefulSets, DaemonSet, CronJob 


동일 작업을 수행하는 Pod은 ReplicaSet이라는 컨트롤러에 의해 정의된 룰에 따라 복제생성된다. 

이때 복수의 Pod이 Master의 Scheduler에 의해 여러개의 Node에 걸쳐 실행될 수 있다



pause 컨테이너가 먼저 실행, namespace를 Pod 내부의 모든 컨테이너들이 공유해서 사용


cgroups는 호스트의 자원을 제한해서 각 컨테이너에 할당

namespace는 각 컨테이너가 컨테이너 외부와 격리된 IPC, Network, PID, File System을 가질 수 있게 독립적인 공간을 논리적으로 형성


SIGINT나 SIGTERM 시그널을 받기 전까지 아무런 동작도 하지 않고 sleep 상태


Pod 실행 시 shared-pid 옵션 enable :좀비 프로세스가 되지 않도록 pause 컨테이너는 PID 1로 설정되어 모든 컨테이너 프로세스의 부모 프로세스됨




참고: 

http://www.mantech.co.kr/kubernetes/

https://blog.2dal.com/2018/03/28/kubernetes-01-pod/


coreos

https://www.slideshare.net/subicura/coreos-38279596


'업무 > etc' 카테고리의 다른 글

L4 Load Balancing Mode  (0) 2018.12.03
[Linux] harbor install  (0) 2018.11.30
[Linux] setcap/getcap 명령어를 사용한 capabilities 설정  (0) 2018.11.28
[Linux] 계정별 crontab 설정 보기  (0) 2018.11.26
[Linux] screen 사용 방법  (0) 2018.11.26
Comments