개요
On-premise에서 kubernetes(= k8s) 환경을 직접 구성해보며 학습하는 Hands On 시리즈입니다.
목표
k8s 환경 내에 간단한 서비스를 배포하기
(배포 과정이 목적이기 때문에 기본 이미지를 사용한다!)
여정
컨테이너 이미지 작성(k8s Hello World)
# k8s에서 만든 hello world 컨테이너 이미지
kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1
# 결과 확인
curl http://<내부 IP>:<Port>
Deployment YAML 작성
어플리케이션의 컨테이너 이미지와 실행정보를 담은 YAML
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-world
spec:
replicas: 4
selector:
matchLabels:
app: hello-world
template:
metadata:
labels:
app: hello-world
spec:
containers:
- name: hello-world
image: gcr.io/google-samples/kubernetes-bootcamp:v1
ports:
- containerPort: 80
Service YAML 작성
Load Balancer와 App의 실행 정보를 담은 YAML 파일
apiVersion: v1
kind: Service
metadata:
name: hello-world-lb
spec:
selector:
app: hello-world
ports:
- name: http
port: 80
targetPort: 80
type: LoadBalancer
k8s 클러스터 내 배포
# Hello Wolrd App 배포
# -f : yaml 파일 설정 적용
# -n : 네임스페이스(패키지 개념) 적용
sudo kubectl apply -f deployment.yaml -n hello-world
# LoadBalancer 배포
sudo kubectl apply -f service.yaml -n hello-world
# 결과확인
# 마스터 노드에서
watch kubectl get deployment -n hello-world -A -o wide
# 배포된 워커노드에서
kubectl describe node ${nodeName} -n hello-world
k8s 클러스터 내 배포한 앱 삭제
배포한 순서대로 삭제해야 재실행(Recovery)되지 않는다.
(여기서는 deployment → service → pods 순)
sudo kubectl get deployment -n hello-world
sudo kubectl get service -n hello-world
sudo kubectl get pods -n hello-world
sudo kubectl delete deployment ${배포한 app 이름} -n hello-world
sudo kubectl delete service ${배포한 service 이름} -n hello-world
sudo kubectl delete pods ${실행중인 pod 이름} -n hello-world
마무리
이번 시간에는 k8s 클러스터 내에 hello-world 기본 이미지를 배포해보았다.
다음 시간에는 쿠버네티스를 시각화해서 볼 수 있는 편리한 대시보드를 설치해보도록 하자.
참고자료
[k8s/쿠버네티스] - Deployment로 애플리케이션 배포 — 천천히 올바르게 (tistory.com)
쿠버네티스 #6 - 실제 서비스 배포해보기 (tistory.com)
4) Kubernetes 로 Docker 배포하기 (tistory.com)
[NCLOUD] Naver CLoud에서 Kubernetes를 사용해보자 – NKS (manvscloud.com)
'DevOps' 카테고리의 다른 글
쿠버네티스 비긴즈 - 공유 디렉토리 설정(PV, PVC, NFS) (0) | 2023.02.08 |
---|---|
쿠버네티스 비긴즈 - 모니터링 대시보드 설치하기 (0) | 2023.02.06 |
쿠버네티스 비긴즈 - On-Premise 환경 구성 (0) | 2023.01.25 |
MSA Dockerizing (3) - 발전시키기 (0) | 2023.01.19 |
MSA Dockerizing (2) - 다듬기 (0) | 2023.01.19 |