어느 것을 사용하고 언제?
컨테이너화로 인해 소프트웨어 개발 및 배포 스크립트가 변경되어 효율성과 휴대 성이 크게 증가했습니다. 이것의 최전선에있는 두 기술은 Docker와 Kubernetes입니다.
Docker는 컨테이너 생성을 이끌고 있으며 Kubernetes는 오케스트레이션을 이끌며 컨테이너를 규모로 관리하는 데 사용됩니다. 개발자, DevOps Pros 및 Tech Leaders의 경우 올바른 도구를 선택하거나 조합을 선택하면 프로젝트를 만들거나 끊을 수 있습니다. 이 기사에서는 Docker와 Kubernetes의 세계를 깊이 생각하여 강점을 논의하고 각각을 배치 할시기를 결정하도록 도와줍니다.
Docker는 무엇에 관한 것입니까?
Docker는 경량 컨테이너 내부에서 응용 프로그램을 패키지, 배포 및 실행하는 데 사용되는 오픈 소스 기술입니다. 애플리케이션 및 라이브러리 및 구성을 포함한 종속성을 단일 일관된 단위로 번들로 제공하는 휴대용 도구 상자로 생각할 수 있습니다. Docker는 개발자의 랩톱이든 프로덕션 서버이든, 응용 프로그램이 비슷하게 동작을 보장합니다.
Docker의 특징
1. 가볍고 휴대용
컨테이너는 가상 머신보다 풋 프린트가 적어 빠르게 회전하고 모든 OS의 어느 곳에서나 실행할 수 있습니다.
2. 격리
각 Docker 컨테이너는 자체 샌드 박스에서 실행되며, 이는 다른 Docker 컨테이너와 의존성 충돌을 피합니다.
3. Docker Componse
간단한 YAML 파일로 멀티 컨테이너 응용 프로그램을 조정할 수 있습니다. 다음은 예입니다.
version: '3'
services:
web:
image: nginx:latest
ports:
- "80:80"
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: secret
4. CI/CD 통합
Docker는 Jenkins, Github 액션 또는 모든 파이프 라인과 협력하여 빌드 및 배포를 쉽게 자동화 할 수 있습니다.
Docker를 사용하는시기
Docker는 신뢰할 수있는 설정을 선호하는 개발자를위한 게임 체인저입니다. 문구의 시대는 지났습니다 ‘내 기계에서 작동합니다’; Docker는 모든 것에 균일 성을 허용합니다. 이상적입니다.
- 빠른 포장 및 배포가 필요한 중소 응용 프로그램
- 멋진 오케스트레이션이 필요없는 솔로 마이크로 서비스
- 자동화로부터 이익을 얻을 수있는 CI/CD 워크 플로
다음 예제는 Docker가 Node.js 응용 프로그램을 쉽게 돌릴 수있는 방법을 보여줍니다.
docker run -d -p 3000:3000 my-node-app
Kubernetes 소개 : 오케스트레이션 대 군주
Kubernetes (종종 K8S로 작성)는 컨테이너화 된 응용 프로그램의 배포, 스케일링 및 관리를 자동화하는 오픈 소스 애플리케이션입니다. Google이 개발 한이 제품은 현재 CNCF에 의해 관리되며 종종 컨테이너 관리를위한 최고의 선택입니다.
Kubernetes의 특징
1. 자동 오케스트레이션
Kubernetes는 노드에 컨테이너를 배포합니다. 그것은 그것들을 조정하고 네트워킹을 쉽게 처리합니다.
2. 고 가용성
Kubernetes는 단일 실패 지점을 피하고 응용 프로그램을 사용할 수 있도록 워크로드를 퍼뜨립니다.
3. 자기 치유
컨테이너가 실패하면 Kubernetes가 자동으로 다시 시작됩니다. 예를 들어 아래는 구성입니다.
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- name: my-app
image: my-app:1.0
livenessProbe:
httpGet:
path: /health
port: 8080
4.로드 밸런싱 및 스케일링
수요에 따라 Kubernetes는 트래픽 및 스케일을 배포합니다.
5. 롤링 업데이트
Kubernetes는 다운 타임없이 응용 프로그램을 업그레이드합니다. 업그레이드가 실패하면 롤백 할 수도 있습니다.
Kubernetes를 사용하는시기
Kubernetes는 다음을위한 이상적인 솔루션입니다.
- 클러스터를 가로 질러 오케스트레이션이 필요한 대규모 응용 프로그램
- 99.999% 가동 시간 및 자동 스케일링이 필요한 미션 크리티컬 서비스
- 구성 요소 간의 원활한 통신이 필요한 마이크로 서비스
- 멀티 클라우드 또는 하이브리드 설정에서 Kubernetes는 둘 다 처리 할 수 있습니다.
다음 예는 확장 가능한 응용 프로그램을 배포하는 것이 얼마나 쉬운 지 보여줍니다.
kubectl apply -f deployment.yaml
kubectl scale deployment my-app --replicas=5
Docker vs. Kubernetes : 대결
Docker와 Kubernetes는 라이벌이 아니며 서로 칭찬합니다. Docker는 컨테이너를 구축하고 실행하는 반면 Kubernetes는 컨테이너를 비늘어 내고 관리합니다. 여기에 고장이 있습니다.
1. 초점
Docker의 초점은 컨테이너 생성에만 초점을 맞추고 Kubernetes는 컨테이너 클러스터 관리에 집중합니다.
2. 스케일링
Docker는 수동 스케일링을 지원하는 반면 Kubernetes는 CPU, 메모리 또는 사용자 정의 메트릭을 기반으로 자동 스케일링을합니다.
3. 사용 케이스
Docker는 Dev 워크 플로 및 소규모 앱에 적합하지만 Kubernetes는 분산 및 교통 시스템을 관리하는 데 빛을 발합니다.
Docker + Kubernetes : 함께 함께?
Docker와 Kubernetes는 완벽한 기술 쌍입니다. Docker는 컨테이너를 만드는 데 중점을두고 Kubernetes는 컨테이너를 굴립니다. 팀 간의 일반적인 사용 사례는 개발 및 테스트를위한 Docker 및 실제 스케일링을위한 Kubernetes입니다. 다음은 작동 방식의 예입니다.
1. 도커 이미지 빌딩
docker build -t my-app:1.0 .
2. 이미지를 레지스트리로 밀어 넣습니다
예를 들어 Docker Hub.
3. Kubernetes를 사용하여 배포
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-app:1.0
Kubernetes는 여기에서 가져와 스케일링,로드 밸런싱을 관리하며 응용 프로그램의 가동 시간을 보장합니다.
치트 시트 : 무엇을 사용해야하는지 결정하는 방법
도커
DEVS, 소규모 응용 프로그램 또는 빠른 프로토 타입에 이상적입니다. 간단하고 빠르며 오버 헤드가 없습니다.
Kubernetes
자동화 및 탄력성이 필요한 대형 응용 프로그램, 마이크로 서비스 또는 클라우드 기본 응용 프로그램에 이상적입니다.
둘 다
궁극적 인 조합은 Docker를 사용하여 로컬로 건축하고 Kubernetes로 전 세계적으로 스케일링하는 데 좋습니다.
결론
Docker와 Kubernetes는 현대 발전의 음과 양입니다. Docker는 신뢰할 수있는 컨테이너 빌더이며 응용 프로그램을 빠르게 회전시키는 데 적합합니다. Kubernetes는 오케스트레이션에 적합하며 복잡한 시스템을 쉽게 처리합니다. 응용 프로그램에 작은 발자국이 있으면 Docker가 이상적인 선택입니다. 응용 프로그램이 엔터프라이즈 등급 인 경우 Kubernetes는 안정적으로 유지합니다.
둘 다 쌍을 이루면 쉽게 자라서 매끄럽게 작동하는 워크 플로가 있습니다. 그렇다면 다음 움직임은 무엇입니까? Docker, Kubernetes 또는 둘 다입니까?
Post Comment