• Kubernetes Cluster
  • Kubernetes 설치 (Minikube)
  • Kubernetes Cluster 배포
  • Ansibgle + Kubernetes 연동
  • CI/CD 프로세스

Kubernetes 소개

https://kubernetes.io/ko/docs/concepts/overview/what-is-kubernetes

  1. 원래의 전통적인 방식에서는 OS위에 APP을 구동하였음.
  2. 각각의 VM에 운영체제를 두어서 서버를 분할하였다.
  3. 컨테이너 가상화, 운영체제를 공유할 수 있도록.

Cloud Native Architecture

Micro Service Architecture

CI/CD

Devops

컨테이너 가상화 기술을 사용했다는 것이 큰 특징임.

CNCF라는 단체가 있음.

https://landscape.cncf.io

Cloud Native Computing Foundation

컨테이너 가상화를 사용하기 위한. 관리 플랫폼.

쿠버네티스에 관하여

장점

  • 컨테이너화 된 애플리케이션 구동
  • 서비스 디스커버리와 로드밸런싱
  • 스토리지 오케스트레이션
  • 자동화된 롤아웃 롤백
  • 자동화된 빈 패킹
  • 자동화된 복구
  • 시크릿과 구성관리

쿠버네티스 클러스터

Master 각각의 PC를 관리한 용도 스케줄, API 관리

Work Node 서버 각각

kubelet 이라는 걸 갖고 있음.

kube proxy라고 하는 노드가 네트워크 관리 유지를 해준다.

클라이언트가 요청했던 어떤 정보가 node 에 전달이 되면

Master가 Node 를 관리함

Node 안에는 Pod 의 단위로 관리가 됨.

Pod 이라는건 애플링케이션을 위해 서로 상호 작용하기 위한 컨테이너들의 패키징되어있는 형태

Service : PODS 그룹간에 로드밸런싱을 제공.

쿠버네티스 설치

VM을 이용해서 리눅스를 설치

Master => Worker Node 들을 구성한다.

https://github.com/joneconsulting/k8s/blob/master/install/kubernetes_install.md

쿠버네티스 설치 가이드

Master 한대, WorkerNode 2대

virtual box라는 프로그램을 이용해서 설치했음.

kubectl get nodes

쿠버네티스의 노드의 역할을 볼 수 있음. (master 와 none 2개를 볼 수 있음)

Vagrant 설치 : VM을 간단하게 설치하고 관리하게 해주는 tool이다.

MiniKube

간단하게 Kubernetes 를 사용할 수 있게 해줌.\

docker desktop 설치된 상태에서 Kubernetes 항목에서 Enable Kubernetes 를 체크해줌.

kubectl get nodes # 어떤 노드들이 어떤 역할을 하고 있는가.

kubectl get pods # 현재 가동중인 pod들을 볼 수 있음.

쿠버네티스 명령어

docker desktop 우측 상단 설정메뉴 kubernetes > enable kubernetes (윈도우, 맥 동일)

정상적으로 설치가 되면 좌측 하단에 kubernetes 모양도 보이게 될 것이다.

kubectl get nodes # 잘 작동되는 아이들 확인

kubectl get pods  # pod 가 잘 작동되는지 확임

kubectl get deployments # namespace : default 

kubectl get service # 사용중인 service 목록이 나옴

K8s 기본 명령어

# 노드 확인  
kubectl get nodes
# 파드 확인
kubectl get pos
# 디플로이먼트 확인
kubectl get deployments
# 서비스 확인 
kubectl get services
# Nginx 서버 실행 
kubectl run sample-nginx --image=nginx --port=80
# 컨테이너 정보 확인 
kubectl describe pod/sample-nginx
# 파드 삭제
kubectl delete pod/sample-nginx-XXXXX-XXXXX
# Scale 변경 (2개로 변경)
kubectl scale deployment sample-nginx --replicas=2
#Script 실행
kubectl apply -f sample1.yml

소스 코드 vi sample1.yml https://github.com/joneconsulting/jenkins_cicd_script/blob/master/k8s_script/sample1.yml