(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

※ 띄어쓰기나 오타에 유의하자
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 |
---|