쿠버네티스 클러스터를 관리하는 동작의 대부분은 kubectl이라는 커맨드라인 인터페이스로 실행할 수 있습니다.
kubectl에서 지원하는 명령은 다음처럼 구분될 수 있습니다.
- 쿠버네티스 자원들의 생성, 업데이트, 삭제(create, update, delete)
- 디버그, 모니터링, 트러블 슈팅(log, exec, cp, top, attach, ...)
- 클러스터 관리(cordon, top, drain, taint, ...)
3.1.1 설치
는 각자의 환경에 맞춰서 알잘딱하게...
3.1.2 기본 사용법
kubectl [command] [TYPE] [NAME] [flags]
- command: 자원에 실행하려는 동작 (create, get, delete)
- TYPE: 자원 타입 (pod, service, ingress)
- NAME: 자원 이름
- FLAG: 부가적으로 설정할 옵션
3.1.4 플래그
모든 명령에서 사용할 수 있는 전역 플래그와 개별 명령에서만 사용할 수 있는 개별 플래그로 구분
- -h(--help): 개별 명령의 도움말을 출력
- -v: 명령을 실행하는 과정의 로그를 출력
3.2 디플로이먼트를 이용해 컨테이너 실행하기
디플로이먼트로 컨테이너를 실행하는 방법에는 두 가지가 있습니다.
- kubectl run으로 컨테이너 실행하기
- 템플릿으로 컨테이너 실행하기
3.2.1 kubectl run으로 컨테이너 실행하기
책에 있는 내용을 따라가면 대부분 잘 실행되나 한 가지는 다르게 해야 합니다.
책에서 디플로이먼트를 생성하는 명령어라고 소개된 명령문입니다.
kubectl run nginx-app --image nginx --port=80
하지만, 해당 명령문은 pod를 생성하여 run 명령을 수행하게 되므로 deployment를 생성하지 않습니다.
고로 다음과 같이 입력하여야 합니다.
kubectl create deployment nginx-app --image=nginx --port=80
위와 같이 입력하여야 정상적으로 디플로이먼트가 생성됩니다.
3.2.2 템플릿으로 컨테이너 실행하기
디렉터리에 nginx-app.yaml 파일을 생성한 후 아래와 같이 입력해봅시다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-app
labels:
app: nginx-app
spec:
replicas: 1
selector:
matchLabels:
app: nginx-app
template:
metadata:
labels:
app: nginx-app
spec:
containers:
- name: nginx-app
image: nginx
ports:
- containerPort: 80
파일을 수정한 후 저장한 다음 명령문을 실행해봅시다.
kubectl apply -f nginx-app.yaml
여기서 -f 인자는 filename 인자로 적용할 file의 이름을 뜻합니다.
3.3 클러스터 외부에서 클러스터 안 앱에 접근하기
지금까지 작업한 내용은 쿠버네티스 클러스터 내부에서 통신이 가능한 앱인데 이 것을 클러스터 외부로 도출 시키는 작업을 수행해야 합니다.
다음과 같은 명령문을 실행해봅시다.
kubectl expose deployment nginx-app --type=NodePort
해당 명령어를 수행하면 서비스가 생성됩니다. 이제 아래 명령문을 통해 서비스를 확인해봅시다.
kubectl get service
결과
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 16m
nginx-app NodePort 10.108.168.246 <none> 80:31572/TCP 26s
nginx-app 서비스의 포트를 보면 80:31572라고 표기되어 있는데, 이는 클러스터 내부의 80포트가 외부의 31572포트와 연결되었다는 뜻입니다.
웹브라우저에서 http://localhost:31572로 접속하면 nginx 기본 페이지를 확인할 수 있습니다.
'Study > DevOps' 카테고리의 다른 글
4. 쿠버네티스 아키텍처 (0) | 2023.03.09 |
---|---|
1. 쿠버네티스 소개 (1) | 2023.02.16 |