쿠버네티스 입문 : 설치 - 01
GCP 이용 / 보안상 캡처는 하지 않았음 - 제어 노드 3대, 워커 노드 2대 - OS : ubuntu 20.04 - pip version : 20.0.2 - kubespray version : 2.14.2 * 모든 노드에 마스터 1번 노드의 SSH 공개키 배포 마스터 1번..
moosvmware.tistory.com
금일은 설치된 쿠버네티스를 가지고 직접 컨테이너를 실행하고, kubectl 명령어에 대해서 알아보도록 하겠다.
그전에~ 우리 실습의 쿠버네티스 클러스터 구성도를 먼저 살펴보자
kube-scheduler : 노드가 배정되지 않은 Pod를 감지하여 어떤 노드에서 실행할지 선택하는 제어부 컴포넌트. 선언적 특성에서 중요한 역할을 하고 있는 것으로 보인다.
kube-controller-manager : 컨트롤러 프로세스를 실행하는 제어부 컴포넌트. 논리적으로는 분리되어 있지만, 복잡성을 낮추기 위해 모두 단일 바이너리로 컴파일되고 단일 프로세스 내에서 실행됨. 다음 컨트롤러를 포함한다.
- 컨트롤러 종류
- 노드 컨트롤러 : 노드 다운 시 통지 및 대응에 관한 책임을 가진다.
- 레플리케이션 컨트롤러 : 시스템의 모든 레플리케이션 컨트롤러 오브젝트에 대해 알맞은 수의 파드들을
유지시켜 주는 책임을 가진다.
- 엔트포인트 컨트롤러 : 엔트포인트 오브젝트를 채운다 - 서비스와 Pod를 연결시킨다.
- 서비스 어카운트 & 토큰 컨트롤러 : 새로운 네임스페이스에 대한 기본 계정과 API 접근 토큰을 생성한다.
kube-apiserver : 쿠버네티스 API를 노출하는 쿠버네티스 제어부 컴포넌트이다. 제어부의 앞단.
ectd : 쿠버네티스 클러스터의 모든 데이터를 담는 뒷단의 저장소 ( 일관성, 고가용성 키-값 저장 )
kubelet : 다양한 메커니즘을 통해 제공된 PodSpec의 집합을 받아서 컨테이너가 해당 PodSpec에 따라 정상적으로 작동할 수 있도록 보장해준다.
kube-proxy : 클러스터의 각 노드에서 실행되는 네트워크 프록시. 쿠버네티스 서비스 ( Pod 집합에서 실행중인 애플리케이션을 노출하는 방법 )의 구현부이다.
calico-agent : Kubespray가 지원하는 네트워크 플러그인 중 하나이며, 디폴트 설정이다. BGP를 지원하고, AWS, GCP 등 관리형 쿠버네티스 서비스를 제공하는 회사 대부분에서 칼리코를 기본 네트워크 플러그인으로 사용함.
Kubectl
* 기본 사용법
kubectl [command] [resource type : pod, service, ingress] [name] [flags]
* echoserver 이름의 Pod 생성
root@instance-1:~# kubectl run echoserver --image="k8s.gcr.io/echoserver:1.10" --port=8080
pod/echoserver created
* K8s의 Pod에 접근할 떄 필요한 echoserver라는 이름의 서비스를 생성
root@instance-1:~# kubectl expose po echoserver --type=NodePort
service/echoserver exposed
* 파드 생성 확인
root@instance-1:~# kubectl get pods
NAME READY STATUS RESTARTS AGE
echoserver 1/1 Running 0 2m43s
* 서비스 생성 확인
root@instance-1:~# kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
echoserver NodePort x.x.0.150 <none> 8080:30237/TCP 104s
kubernetes ClusterIP x.x.0.1 <none> 443/TCP 39
'VMware > Tanzu' 카테고리의 다른 글
Tanzu K8s 릴리즈용 Local Contents Library 생성 (0) | 2021.10.11 |
---|---|
vSphere with Tanzu & Bitfusion #1 - AVI (0) | 2021.09.15 |