Docker Swarm
- Contanier : docker container
- Scaling: manual
- Load Balancing : primitive(원초적인)
- Installation: easy & fast
- Scalability : limited
- Storage Volume : Shrarable over any container
- GUI : NO
K8s(Kubernetes)
- Container: 다른 container도 가능
- Scaling: fully automatic
- Load Balancing: configurable(변경가능한)
- Installation : more time consuming
- Scalability: string
- Storage Volume : within a pod
- GUI : YES
K8s
- Pods, groups of container : group together container images developed by different teams into a single deployable unit(logical host of container, containers in a pod are always co-located and co-scheduled and run in a shared context)
- Services : provide load balancing , naming, and discovery to isolate one microservice from another
- Namespaces : provide isloation and access control, so that each microservice can control the degree to which other services interact with it (각각 상호작용하는거 통제 가능)
- Ingress Objects : provide an easy-to-use frontend that can combine multiple microservices into single externalized API surface area
K8s cluster = master node(s) + worker nodes
allow to mount a storage (local, cloud , network storage) for each pod
K8s 특징
- Automatic bin packing (RAM-aware performance based)
- Service discovery & load balancing (DNS name for each service)
- Storage orchestration(저장 조직화)
- Self healing (restart failed containers에 대하여)
- Automated rollouts and rollbacks
- Secret and configuration management (secret and config map in ETCD)
- Batch 실행 (run to completion)
- Horizontal scaling(CLI, UI, automatic based on CPU usage)
2020년 4월 기준
하나의 클러스터에 최대 5000개 node, 최대 150000개 pod , 최대 300000개 container
node당 최대 100개 까지의 pod
- master components : API server, scheduler, control manager, etcd
- worker components : kubelet -> Container running을 책임 , Kube-proxy -> 각 node의 network proxy, Pod -> 1개 이상의 docker container 포함
K8s implementations
- K8s labs via browser
- Installing Kubernetes on a Public Cloud Provider
- Installing Kubernetes Locally
- Running Kubernetes in Docker
- Running Kubernetes on Raspberry Pi
Kubernetes
- Official def : Container orchestration tool
- 분산 운영체제 with no distributed file system, no cache management, no system calls, no per process control
- Job control system on global scale of CDN/Service delivery network
- RAM-aware throughput oriented
- no down time service via load balancing & auto scaling
Pods in K8s
- 인터넷 상에서 서비스를 제공하는 프로세스는 고유한 port번호가 부여되서 하나의 호스트에 동일한 서비스를 제공하는 컨테이너가 두개 이상 공존할 수 없음
- K8s의 존재 이유는 같은 서비스를 제공하는 컨테이너를 여럿 운용하고자 하기 위해서다
- POD를 통해서 서비스 제공 입장에서 virtual host 역할을 수행
- Docker swarm 또는 전통적인 분산환경에서의 동일한 종류의 서비스 제공은 서로 다른 호스트에 같은 서비스를 제공하며, 외부로부터의 서비스 요구를 여러 호스트에 나누어 할당하는 reverse proxy를 이용
728x90
'CS(Computer Science) > 소프트웨어공학' 카테고리의 다른 글
9. Selenium - Automated Testing (0) | 2023.02.06 |
---|---|
8. Ansible - Configuration Management (0) | 2023.02.06 |
6. Network Virtualization (0) | 2023.02.06 |
5. Docker3 (4) | 2023.02.06 |
4. Docker2 (0) | 2023.02.06 |