Kubernetes 자습서-Kubernetes를위한 포괄적 인 가이드



Kubernetes Tutorial에 대한이 블로그는 실습을 통해 컨테이너 오케스트레이션 시스템의 모든 개념을 안내합니다.

Kubernetes는 컨테이너화 된 애플리케이션 배포와 관련된 수동 프로세스를 제거하는 플랫폼입니다. Kubernetes Tutorial에 대한이 블로그에서는이 다중 컨테이너 관리 솔루션과 관련된 모든 개념을 살펴볼 것입니다.

이 자습서에서는 다음 항목을 다룹니다.





이제이 블로그로 넘어 가기 전에 컨테이너화에 대해 간략하게 설명하겠습니다.

따라서 컨테이너가 존재하기 전에 개발자와 테스터는 항상 그들 사이에 뻣뻣함이있었습니다. 이것은 일반적으로 개발 측에서 작동하는 것이 테스트 측에서 작동하지 않기 때문에 발생합니다. 둘 다 서로 다른 환경에 존재했습니다. 이제 이러한 시나리오를 피하기 위해 개발자와 테스터가 모두 동일한 페이지에 있도록 컨테이너가 도입되었습니다.



많은 수의 컨테이너를 함께 처리하는 것도 문제였습니다. 때로는 컨테이너를 실행하는 동안 제품 측면에서 개발 단계에는 없었던 문제가 거의 발생하지 않았습니다. 이러한 종류의 시나리오는 컨테이너 오케스트레이션 시스템을 도입했습니다.

오케스트레이션 시스템에 대해 자세히 알아보기 전에이 시스템없이 직면 한 문제를 간단히 나열 해 보겠습니다.



Kubernetes 자습서 : 컨테이너 오케스트레이션이없는 문제

컨테이너 오케스트레이션이없는 문제-Kubernetes 자습서-Edureka

컨테이너 내에서 여러 서비스가 실행되는 경우 위 다이어그램에서 볼 수 있듯이 이러한 컨테이너를 확장 할 수 있습니다. 대규모 산업에서 이것은 정말 어려운 일입니다. 서비스를 유지하는 데 드는 비용과 함께 실행하는 데 따르는 복잡성이 증가하기 때문입니다.

이제 서비스를 수동으로 설정하는 것을 피하고 문제를 극복하려면 큰 것이 필요했습니다. 여기에서 Container Orchestration Engine이 등장합니다..

이 엔진을 사용하면 모든 기본 머신이 시작되고 컨테이너가 정상 상태이며 클러스터링 된 환경에 배포되는 방식으로 여러 컨테이너를 구성 할 수 있습니다. 오늘날 세계에는 주로 두 가지 엔진이 있습니다. 주지사 & 도커 스웜 .

Kubernetes 가이드 : Kubernetes와 Docker Swarm

주지사도커 스웜 오늘날 시장에서 선도적 인 컨테이너 오케스트레이션 도구입니다. 따라서 prod에서 사용하기 전에 정확히 무엇이고 어떻게 작동하는지 알아야합니다.

또한 블로그에서 Kubernetes에 대해 자세히 살펴볼 예정이지만 Docker에 대해 알아 보려면 .

기계 학습에 r 사용

위 이미지에서 볼 수 있듯이 Kubernetes는 Docker Swarm과 비교할 때 훌륭한 활성 커뮤니티를 소유하고 많은 조직에서 자동 확장을 지원합니다. 마찬가지로 Docker Swarm은 Kubernetes와 비교할 때 클러스터를 시작하기가 쉽지만 Docker API의 기능으로 제한됩니다.

글쎄, 여러분, 이것들이 이러한 최고의 도구들 사이의 유일한 차이점은 아닙니다. 두 컨테이너 오케스트레이션 도구의 자세한 차이점을 알고 싶다면

Kubernetes에 대해 더 알고 싶으십니까?

둘 중 하나를 선택할 수 있다면, 컨테이너를 관리하고 예약,로드 밸런싱 및 배포와 같은 작업을 위해 외부 세계에 연결해야하므로 Kubernetes가되어야합니다.

그러나 논리적으로 생각하면 Docker Swarm이 Docker 위에서 실행되므로 더 나은 옵션을 만들 것입니다. 내가 당신이라면 어떤 도구를 사용할지 혼란 스러웠을 것입니다. 그러나 Kubernetes는 시장에서 확실한 리더이며 더 나은 기능을 갖춘 Docker 컨테이너 위에서 실행됩니다.

이제 쿠 버네 티스의 필요성을 이해 하셨으니 지금이 좋습니다. Kubernetes 란 무엇입니까?

Kubernetes 가이드 : Kubernetes 란 무엇입니까?

오픈 소스입니다 컴퓨팅 클러스터에 대한 컨테이너 예약 작업을 처리하고 사용자가 의도 한대로 실행되도록 워크로드를 관리하는 시스템입니다. Google의 아이디어이기 때문에 우수한 커뮤니티를 제공하고 모든 클라우드 제공 업체와 훌륭하게 협력하여 다중 컨테이너 관리 솔루션.

Kubernetes 가이드 : Kubernetes 기능

Kubernetes의 기능은 다음과 같습니다.

  • 자동화 된 스케줄링 : Kubernetes는 리소스 요구 사항 및 기타 제약 조건에 따라 클러스터 노드에서 컨테이너를 시작하는 고급 스케줄러를 제공하는 동시에 가용성을 저하시키지 않습니다.
  • 자가 치유 기능 : Kubernetes를 사용하면 노드가 죽을 때 컨테이너를 교체하고 일정을 변경할 수 있습니다. 또한 사용자 정의 상태 확인에 응답하지 않고 제공 할 준비가 될 때까지 클라이언트에 광고하지 않는 컨테이너를 종료합니다.
  • 자동화 된 롤아웃 및 롤백 : Kubernetes는 모든 인스턴스를 동시에 종료하지 않도록 애플리케이션 상태를 모니터링하면서 애플리케이션 또는 해당 구성에 대한 변경 사항을 롤아웃합니다. 문제가 발생하면 Kubernetes를 사용하여 변경 사항을 롤백 할 수 있습니다.
  • 수평 확장 및로드 밸런싱 : Kubernetes는 간단한 명령, UI 사용 또는 CPU 사용량에 따라 자동으로 요구 사항에 따라 애플리케이션을 확장 및 축소 할 수 있습니다.

Kubernetes 가이드 : Kubernetes 아키텍처

Kubernetes 아키텍처에는 다음과 같은 주요 구성 요소가 있습니다.

  • 마스터 노드
  • 작업자 / 슬레이브 노드

나는 그들 각각에 대해 하나씩 논의 할 것입니다. 따라서 처음에는 마스터 노드 .

마스터 노드

마스터 노드는 Kubernetes 클러스터 관리를 담당합니다. 주로 모든 관리 작업의 진입 점입니다. 내결함성을 확인하기 위해 클러스터에 둘 이상의 마스터 노드가있을 수 있습니다.

위의 다이어그램에서 볼 수 있듯이 마스터 노드에는 API 서버, 컨트롤러 관리자, 스케줄러 및 ETCD와 같은 다양한 구성 요소가 있습니다.

  • API 서버 : API 서버는 클러스터를 제어하는 ​​데 사용되는 모든 REST 명령의 진입 점입니다.
  • 컨트롤러 관리자 : Kubernetes 클러스터를 규제하고 다양한 비 종료 제어 루프를 관리하는 데몬입니다.
  • 스케줄러 : 스케줄러는 작업을 슬레이브 노드로 예약합니다. 각 슬레이브 노드에 대한 자원 사용 정보를 저장합니다.
  • ETCD : ETCD는 단순하고 분산 된 일관된 키-값 저장소입니다. 주로 공유 구성 및 서비스 검색에 사용됩니다.

작업자 / 슬레이브 노드

작업자 노드에는 컨테이너 간의 네트워킹을 관리하고, 마스터 노드와 통신하고, 예약 된 컨테이너에 리소스를 할당하는 데 필요한 모든 서비스가 포함되어 있습니다.

위의 다이어그램에서 볼 수 있듯이 작업자 노드에는 Docker Container, Kubelet, Kube-proxy 및 Pod와 같은 다양한 구성 요소가 있습니다.

  • Docker 컨테이너 : Docker는 각 작업자 노드에서 실행되고 구성된 팟 (Pod)을 실행합니다.
  • Kubelet : Kubelet은 API 서버에서 Pod 구성을 가져와 설명 된 컨테이너가 실행되고 있는지 확인합니다.
  • 쿠바 프록시 : Kube-proxy는 단일 작업자 노드의 서비스에 대한 네트워크 프록시 및로드 밸런서 역할을합니다.
  • 포드 : 포드는 노드에서 논리적으로 함께 실행되는 하나 이상의 컨테이너입니다.

Kubernetes Architecture의 모든 구성 요소에 대한 자세한 설명이 필요하면 다음을 참조하십시오. 블로그

Kubernetes에서 인증을 받고 싶으십니까?

Kubernetes 가이드 : Kubernetes 사례 연구

와이 아후! 일본 캘리포니아 서니 베일에 본사를 둔 웹 서비스 제공 업체입니다. 회사가 하드웨어 가상화를 목표로하면서 회사는 OpenStack 그들의 내부 환경은 매우 빠르게 변했습니다. 그러나 클라우드 및 컨테이너 기술의 발전으로 인해 회사는 CAPA를 원했습니다.다양한 플랫폼에서 서비스를 시작하는 능력.

문제: 하나의 애플리케이션 코드에서 필요한 모든 플랫폼에 대한 이미지를 생성하고 해당 이미지를 각 플랫폼에 배포하는 방법은 무엇입니까?

더 나은 이해를 위해 아래 이미지를 참조하십시오. 코드 레지스트리에서 코드가 변경되면 베어 메탈 이미지, Docker 컨테이너 및 VM 이미지가 지속적 통합 도구에 의해 생성되고 이미지 레지스트리로 푸시 된 다음 각 인프라 플랫폼에 배포됩니다.


이제 컨테이너 워크 플로에 집중하여 Kubernetes를 배포 플랫폼으로 사용하는 방법을 이해하겠습니다. 플랫폼 아키텍처를 살짝 들여다 보려면 아래 이미지를 참조하십시오.

OpenStack 인스턴스는 Docker, Kubernetes, Calico 등과 함께 컨테이너 네트워킹, Container Registry 등과 같은 다양한 작업을 수행하는 데 사용됩니다.

클러스터가 많은 경우 제대로 관리하기가 어렵습니까?

따라서 그들은 Kubernetes에 필요한 기본 기능을 제공하고 OpenStack 환경을보다 쉽게 ​​관리 할 수 ​​있도록 간단한 기본 OpenStack 클러스터를 만들고 싶었습니다.

이미지 생성 워크 플로와 Kubernetes를 결합하여 코드 푸시에서 배포까지 쉽게 할 수있는 아래 도구 체인을 구축했습니다.


이러한 종류의 툴체인은 멀티 테넌시, 인증, 스토리지, 네트워킹, 서비스 검색과 같은 프로덕션 배포의 모든 요소를 ​​고려했습니다.

그게 여러분, 야후! 일본 OpenStack에서 실행되는 Kubernetes에 대한 '원 클릭'코드 배포를위한 자동화 도구 체인을 구축했습니다. 구글Solinea .

주지사 자습서 : 실습

이 실습에서는 배포 및 서비스를 만드는 방법을 보여줍니다. Kubernetes를 사용하기 위해 Amazon EC2 인스턴스를 사용하고 있습니다. 음, 아마존은 Amazon Elastic Container Service ...에 대한 거버너 (Amazon EKS) ,이를 통해 클라우드에서 매우 빠르고 쉽게 Kubernetes 클러스터를 만들 수 있습니다. 자세한 내용은 블로그를 참조하세요.

1 단계: 먼저 폴더 생성 그 안에 배포 및 서비스를 생성합니다. 그런 다음 편집기를 사용하고 배포 파일 열기 .

mkdir handsOn cd handsOn vi Deploy.yaml

2 단계: 배포 파일을 열면 배포하려는 응용 프로그램의 모든 사양을 언급합니다. 여기에 배포하려고 httpd 신청.

예제와 함께 초보자를위한 pl SQL 자습서
apiVersion : apps / v1 #API 버전을 정의합니다. 버전 종류 : 배포 #Kinds 매개 변수는 파일의 종류를 정의합니다. 여기에는 배포 메타 데이터 : name : dep1 # 배포 사양의 이름을 저장합니다. # 사양에서 모든 항목을 언급합니다. 배포 복제본에 대한 사양 : 3 # 복제본 수는 3 개 선택기 : matchLabels : app : httpd # 검색 할 레이블 이름은 httpd입니다. 템플릿 : 메타 데이터 : 레이블 : 앱 : httpd # 템플릿 이름은 httpd입니다. 사양 : # Under 사양, 컨테이너 컨테이너에 대한 모든 사양을 언급합니다.-이름 : httpd # 컨테이너의 이름은 httpd입니다. 이미지 : httpd : latest # 다운로드해야하는 이미지는 httpd : 최신 포트 :-containerPort : 80 # 애플리케이션 포트 80에서 노출됩니다.

3 단계 : 배포 파일을 작성한 후 다음 명령을 사용하여 배포를 적용합니다.

kubectl apply -f Deploy.yaml

여기서 -f는 다음에 사용되는 플래그 이름입니다.그는 파일이름.

4 단계 : 이제 배포가 적용되면 실행중인 포드 목록을 가져옵니다.

kubectl get pods -o wide

여기서 -o wide는 배포가 실행중인 노드를 파악하는 데 사용됩니다.

5 단계 : 배포를 생성 한 후 이제 서비스를 생성해야합니다. 이를 위해 다시 편집기를 사용하고 공백을 엽니 다. 서비스. yaml 파일 .

vi service.yaml

6 단계 : 서비스 파일을 열면 서비스에 대한 모든 사양을 언급합니다.

apiVersion : v1 #API 버전을 정의합니다. 종류 : Service #Kinds 매개 변수는 파일의 종류를 정의합니다. 여기에는 서비스 메타 데이터 : name : netsvc # 서비스 사양의 이름이 저장됩니다. # 사양에서 모든 사양을 언급합니다. 서비스 유형 : NodePort 선택기 : 앱 : httpd 포트 : -protocol : TCP 포트 : 80 targetPort : 8084 #Target Port number is 8084

7 단계 : 서비스 파일을 작성한 후 다음 명령을 사용하여 서비스 파일을 적용하십시오.

kubectl apply -f service.yaml

8 단계 : 이제 서비스가 적용되면 서비스 실행 여부를 확인하려면 다음 명령을 사용하십시오.

kubectl get svc

9 단계 : 이제 서비스 사양을 확인하고 어떤 Endpoint인지 확인바인딩하려면 다음 명령을 사용하십시오.

kubectl describe svc

10 단계 : 이제 amazon ec2 인스턴스를 사용하고 있으므로 웹 페이지를 가져오고 출력을 확인하려면 다음 명령을 사용하십시오.

컬 IP 주소

이 Kubernetes Tutorial 블로그가 관련이 있다고 생각되면 전 세계에 걸쳐 250,000 명 이상의 만족 한 학습자 네트워크를 보유한 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 작성했습니다.

질문이 있으십니까? ”의 댓글 섹션에 언급하십시오. Kubernetes 가이드 ”그러면 다시 연락 드리겠습니다.