(Week 9 - Day 2)

1. Kubectl

- 쿠버네티스 클러스터를 관리하는 동작은 대부분이 kubectl이라는 커맨드라인 인터페이스로 실행할 수 있다.

1.1. Kubectl 명령어

kubectl  [COMMAND]  [OBJECT_TYPE]  [OBJECT]  [OPTION]

[COMMAND] : 자원에 실행하려는 동작. ex. create, get, delete
[TYPE] : 자원 타입. ex. pod, service, ingress
[NAME] : 자원 이름
[FLAGS] : 부가적으로 설정할 옵션

1.2. 실습 1

- 에코 서버 동작

1.2.1. echoserver 파드 생성

kubectl run echoserver --image="k8s.gcr.io/echoserver:1.10" --port=8080

# return : pod/echoserver created

1.2.2. echoserver 서비스 생성

kubectl expose po echoserver --type=NodePort

# return : service/echoserver exposed

1.2.3. 확인

kubectl get pods
kubectl get services

- 실행 결과의 항목 정의

$ kubectl get pods

NAME         READY   STATUS    RESTARTS   AGE
echoserver   1/1     Running   0          21s

  NAME - 파드 이름
  READY - 파드 상태 (실행 중인 컨테이너 갯수 / 전체 컨테이너 갯수)
  STATUS - 파드의 현재 상태
  RESTARTS - 파드의 재시작 횟수
  AGE - 파드 생성 후 경과된 시간
$ kubectl get services

NAME		TYPE		CLUSTER-IP	EXTERNAL-IP	PORT(S)		AGE
echoserver	NodePort	10.103.171.41	<none>		8080:32002	31s
kubernetes	ClusterIP	10.96.0.1	<none>		443/TCP		22h

NAME : 서비스의 이름
TYPE : 서비스의 타입
CLUSTER-IP : 현재 클러스터 안에서 사용되는 IP
EXTERNAL-IP : 클러스터 외부에서 접속할 때 사용하는 IP(<none> = 별도로 설정 x)
PORT(S) : 해당 서비스에 접속하는 포트
AGE : 자원을 생성한 후 경과 시간

1.2.4. 포트포워딩

$ kubectl port-forward svc/echoserver 8080:8080
Forwarding from 127.0.0.1:8080 -> 8080
Forwarding from  [::1]:8080 -> 8080

- http://localhost:8080 입력시 접속 가능


1.2.5. 정리


2. 디플로이먼트를 활용한 컨테이너 실행

- 쿠버네티스를 이용해서 컨테이너를 실행할 때는 두 가지의 방법을 사용할 수 있다.

1. kubectl run 명령어 사용

2. YAML 형식의 템플릿 사용

2.1. kubectl run 실습

2.1.1. nginx 컨테이너 실행

$ kubectl create deployment nginx-app --image nginx --port=80


2.1.2. 파드 개수 증가

$ kubectl scale deploy nginx-app --replicas=2

deployment.apps/nginx-app scaled

 


2.2. YAML 템플릿 실습

2.2.1. vi editor 설정

- YAML 파일 작성을 위해 VI Editor 설정을 한다.

$ vim ~/.vimrc
----------
syntax on
autocmd FileType yaml setlocal ts=2 sts=2 expandtab autoindent
----------

2.2.2. nginx-app.yaml 편집

$ vim nginx-app.yaml

nginx-app.yaml 내용

※ 띄어쓰기나 오타에 유의하자


2.2.3. 적용

kubectl apply -f nginx-app.yaml

deployment.apps/nginx-app created

# 만약 에러 발생시, 오타나 띄어쓰기가 잘못되어 있는 부분이 있는 확인해보자

2.2.4. 확인

$ kubectl get pods
$ kubectl get deployments


2.2.5. 접속

$ kubectl get service

# PORT(S) 영역에 80:xxxxx 라고 표시가 되어있는데
# xxxxx를 기억해둔다.

웹브라우저에 주소 입력

http://localhost:xxxxx
# 원래는 이게 맞는데 접속이 제한된다.

192.168.56.11:xxxxx

※ 실습이 종료되면 컨테이너는 삭제해주자.

kubectl delete deployment

 

'Kubernetes' 카테고리의 다른 글

[Kubernetes] 1. 쿠버네티스 개요  (0) 2022.09.06
복사했습니다!