Kubernetes 치트 시트: 아키텍처, 구성 요소, 명령 시트

게시 됨: 2020-12-15

Kubernetes는 산업의 필수 부분이 되었으며 기술 세계를 변화시키고 있습니다. KubeCon의 공동 의장인 Janet Kuo는 향후 Kubernetes 기능과 그 중요성에 대해 설명했습니다. 그녀는 세상을 변화시킬 Kubernetes 확장 및 솔루션에 대해 이야기합니다 .

이 치트 시트는 Kubernetes 구현에서 일하는 전문가에 대한 참조를 제공합니다. Kubernetes를 처음 접하는 초보자를 돕기 위해 필요한 모든 세부 정보가 포함되어 있습니다. Kubernetes 치트 시트는 Kubernetes의 모든 필수 개념과 명령을 참조할 수 있는 빠르고 편리한 매체입니다.

목차

쿠버네티스 정보

컨테이너 중심 인프라를 제공하기 위해 호스트 클러스터에서 컨테이너를 자동 배포 및 확장하는 오픈 소스 플랫폼을 Kubernetes("Kube" 또는 k8s라고도 함)라고 합니다. 클러스터링을 통해 Linux 컨테이너를 실행하는 다양한 호스트를 쉽고 효율적으로 관리할 수 있습니다.

Kubernetes는 컨테이너화된 애플리케이션 및 서비스의 수명 주기를 완전히 관리하도록 설계된 플랫폼입니다. Kubernetes 사용자는 애플리케이션이 다른 애플리케이션을 실행하고 상호 작용해야 하는 방식을 정의할 수 있습니다.

사용자는 Kubernetes를 사용하여 서로 다른 버전의 애플리케이션 간에 트래픽을 전환하고, 업데이트를 수행하고, 서비스를 확장 및 축소하는 등의 작업을 수행할 수 있습니다. 사용자에게 응용 프로그램 관리에 있어 높은 수준의 유연성, 안정성 및 기능을 제공합니다.

Kubernetes의 주요 기능 중 일부는 다음과 같습니다.

  • 하드웨어를 더 잘 활용하여 리소스를 최대화합니다.
  • 여러 호스트에 걸친 컨테이너 오케스트레이터.
  • 배포 프로세스 및 업데이트를 자동화합니다.
  • Linux 컨테이너를 실행할 수 있습니다.
  • 자동 크기 조정은 클러스터 노드에서 컨테이너를 시작하는 데 도움이 됩니다.
  • 필요에 따라 확장 및 축소.
  • 죽은 컨테이너를 교체, 일정 변경 및 다시 시작하여 자가 치유.
  • 자동화된 롤백 및 롤아웃.
  • 로드 밸런싱 및 서비스 검색.
  • 자동 재시작, 자동 배치 및 자동 복제 등

읽기: 딥 러닝 알고리즘

Kubernetes의 아키텍처

Kubernetes의 아키텍처는 상위 계층과 하위 계층으로 구성됩니다. 상위 계층 추상화의 복잡성은 하위 계층에서 찾을 수 있습니다. 개별 물리적 또는 가상 머신이 클러스터로 함께 제공됩니다. 각 서버 간의 통신에는 공유 네트워크가 사용됩니다. 따라서 다른 분산 플랫폼과 마찬가지로 Kubernetes에는 하나의 마스터(최소한)와 여러 컴퓨팅 노드가 있습니다.

  • Kubernetes의 마스터는 배포를 예약하고 API를 노출하며 전체 Kubernetes 클러스터를 관리합니다.
  • 노드는 컨테이너 런타임, 마스터와 통신하기 위한 에이전트 및 기타 모니터링 구성 요소, 로깅 등을 실행합니다.

Kubernetes 아키텍처의 구성요소

Kubernetes 아키텍처에서 마스터와 노드의 용도와 구성 요소를 살펴보겠습니다.

주인

마스터는 클러스터의 원하는 상태를 유지합니다. 클러스터 전체를 관리하므로 마스터라고 합니다. 여기에는 다음이 포함됩니다.

  • API 서버: Kubernetes API 서버
  • 스케줄러: 작업자 노드에서 팟(Pod) 스케줄링에 사용
  • 컨트롤러: 포드 복제를 관리합니다 .
  • 기타: 메타데이터 서비스

노드

Pod 실행에 중요한 필수 서비스가 포함되어 있습니다. 마스터는 노드를 관리합니다. 미니언이라고도 합니다. 여기에는 다음이 포함됩니다.

  • Pod: 컨테이너 그룹
  • Docker: 컨테이너 기반 기술, OS의 사용자 공간.
  • Kubelet: 포드 집합을 유지 관리하는 컨테이너 에이전트입니다.
  • Kube-proxy: 서비스에서 노드로 들어오는 트래픽을 라우팅합니다 .

이제 쿠버네티스의 중요한 명령어를 알아봅시다.

Kubectl 명령

Kubectl은 Kubernetes용 명령줄 도구입니다. 기본 Kubectl 명령은 다음과 같이 나눌 수 있습니다.

  • 파드와 컨테이너 인트로스펙션
  • 클러스터 인트로스펙션
  • 디버깅
  • 빠른 명령
  • 사물

파드와 컨테이너 인트로스펙션

기능 명령
포드 이름 설명 Kubectl 설명 pod<이름>
모든 현재 포드를 나열하려면 Kubectl 포드 가져오기
모든 복제 컨트롤러 나열용 Kubectl은 rc를 얻습니다.
복제 컨트롤러 이름 표시용 Kubectl 설명 rc <이름>
네임스페이스의 복제 컨트롤러 나열용 Kubectl get rc –namespace=”네임스페이스”
서비스 이름을 표시하기 위해 Kubectl 설명 svc<이름>
리스팅 서비스 Kubectl은 cvc를 얻습니다.
지속적으로 노드를 관찰하기 위해. Kubectl 노드 가져오기 -w
포드를 삭제하려면 Kubectl 삭제 포드<이름>

클러스터 인트로스펙션

기능 명령
버전 관련 정보를 얻으려면 Kubectl 버전
구성 세부 정보를 얻으려면 Kubectl 구성 보기
클러스터 관련 정보를 얻으려면 Kubectl 클러스터 정보
노드에 대한 정보를 얻으려면 Kubectl은 노드<노드>를 설명합니다.

디버깅 명령

기능 명령
포드에 대한 메트릭 표시용 Kubectl 상단 포드
노드에 대한 메트릭 표시용 Kubectl 최상위 노드
Kubelet 로그 보기 시계 -n 2 cat/var/log/kublet.log
컨테이너에 대한 서비스에서 로그 가져오기 Kubectl 로그 -f<이름>>[-c< $container>]
컨테이너를 선택하여 서비스에 대한 명령 실행 Kubectl exec<서비스><명령>[-c< $container>]

빠른 명령

아래의 빠른 명령은 자주 사용되므로 매우 유용합니다.

기능 명령
이름과 이미지가 있는 포드를 시작합니다. Kubectl run<이름> — 이미지=<이미지 이름>
<manifest.yaml>에 설명된 서비스 생성을 위해 Kubectl create -f <manifest.yaml>
복제 카운터를 조정하여 인스턴스 수를 계산합니다. Kubectl 규모 –replicas=<count>rc<name>
외부 포트를 내부 복제 포트에 매핑합니다. rc<name> –port=<external>–target-port=<internal> 노출
<n>의 모든 포드를 중지하려면 Kubectl drain<n>– delete-local-data–force–ignore-daemonset
네임스페이스 생성용. Kubectl 생성 네임스페이스 <네임스페이스>
마스터 노드가 포드를 실행할 수 있도록 합니다. Kubectltaintnodes –all-node-role.kuernetes.io/master-

사물

Kubernetes에서 사용되는 친숙한 객체는 다음과 같습니다.

공통 개체 목록
모두 컨트롤러 개정판
cm= conf gmaps 클러스터 역할 바인딩
크론잡 cs=구성요소 상태
배포=배포 제한 = 제한 범위
ev= 이벤트 hpa = 수평 포드 자동 크기 조정
직업 ds= 데몬 세트
아니오 = 노드 ns= 네임스페이스
포 = 포드 포드 사전 설정
Psp= 포드 보안 정책 Pv= 영구 볼륨
할당량 = 리소스 할당량 rs= 복제 세트
역할 rc= 복제 컨트롤러
sc= 스토리지 클래스 pdb= 포드 배포 예산
클러스터 역할 비밀
crd=사용자 지정 리소스 정의 포드 템플릿
csr= 인증서 서명 요청 sa= 서비스 계정
Netpol- 네트워크 정책 역할 바인딩
ing= 진입 pvc= 영구 볼륨 클레임
ep=종료점 sts= 상태 저장 세트

읽어보기: 딥 러닝의 정규화

Kubernetes 명령 치트 시트

Kubernetes에 대한 모든 기본 정보, 아키텍처 및 명령은 아래 Kubernetes 치트 시트에 나와 있습니다.

딥 러닝 기술, 머신 러닝에 대해 자세히 알아보려면 작업 전문가를 위해 설계되었으며 450시간 이상의 엄격한 교육, 30개 이상의 사례 연구 및 과제, IIIT-B 동문 자격, 5개 이상의 실질적인 실습 캡스톤 프로젝트 및 최고의 기업과의 취업 지원.

쿠버네티스란?

Kubernetes는 컨테이너의 배포, 확장 및 관리를 자동화하기 위한 오픈 소스 플랫폼입니다. 컨테이너는 코드, 런타임 환경, 애플리케이션, 시스템 라이브러리 등 애플리케이션을 실행하는 데 필요한 모든 것을 포함하는 바로 실행할 수 있는 소프트웨어 패키지입니다. 컨테이너는 애플리케이션의 논리적 단위와 같으며 Kubernetes에서 그룹화하면 컨테이너를 쉽게 관리하고 검색할 수 있습니다. 이러한 컨테이너는 호스트 전체에 배포 및 확장되어 컨테이너 중심 인프라를 제공합니다. 한마디로 컨테이너화된 애플리케이션의 전체 라이프사이클을 관리하는 플랫폼입니다.

Kubernetes 아키텍처의 주요 구성 요소는 무엇입니까?

Kubernetes 아키텍처에는 마스터 노드와 작업자 노드의 두 가지 주요 구성 요소가 있습니다. 노드는 포드라고 하는 클러스터 그룹을 실행하는 데 중요한 기본 작업자 시스템입니다. 전체 클러스터는 마스터 노드에서 관리하는 반면 작업자 노드는 마스터 노드에서 할당한 작업을 수행합니다. 이러한 노드에는 내부에 많은 내장 구성 요소가 있습니다. 마스터 노드에는 Kubernetes API 서버, Kubernetes 스케줄러, Kubernetes 컨트롤러 및 Etcd가 포함됩니다. 작업자 노드에는 pod, docker, kubelet 및 kube-proxy가 있습니다.

kubelet과 kube-proxy는 무엇을 하나요?

모든 노드에 있는 Kubelet은 컨테이너가 포드에서 잘 실행되도록 합니다. 주로 apiserver를 통해 제공되는 PodSpec 세트를 가져와서 해당 PodSpec에 있는 컨테이너를 확인하여 수행합니다. PodSpec은 포드를 설명하는 YAML 또는 JSON 객체입니다. kube-proxy라고도 하는 Kubernetes 네트워크 프록시는 노드에서 네트워크 규칙을 유지 관리합니다. 이러한 네트워크 규칙을 통해 클러스터 내부 또는 외부의 네트워크 세션에서 팟(Pod)으로의 통신이 가능합니다. Kube-proxy는 OS 패킷 필터링 계층을 사용할 수 없는 경우 트래픽을 전달합니다.