210630 TIL

쿠버네티스

컨테이너 -> 파드 -> 디플로이먼트

MSA(MicroService Architecture)

monolithic architecture

선언적인 시스템(명시된 상태에 맞추려고 시스템을 감시하고 상태를 변경하는 시스템)

1.2.코드로 쉽게 구성하는 쿠버네티스 랩 환경

특이사항은 wsl 안에서는 vagrant를 못씀.. 그렇구나 음..

버추얼박스도 설치하고 vagrant도 설치하고

git clone 해놓은 폴더 안에서

vagrant up 하면 쫙뜸

id:root/pw:vagrant

git clone http://github.com/sysnet4admin/_Lecture_k8s.starterkit

2.1.배포를 통해 확인하는 파드(Pod)

kubectl run nginx --image=nginx

kubectl get pod -o wide

2.2.파드를 외부에서도 접속하게 하는 서비스(Service)

kubectl get service

kubectl get nodes

kubectl expose pod nginx --type=NodePort --port=80

2.3.파드와 디플로이먼트(Deployment) 차이

예전 버전에서는 kubectl run으로 pod와 deployment를 모두 배포할 수 있지만 요새 버전(1.18 이상)은 pod만 가능하고 kubectl create 또는 kubectl apply를 통해 pod와 deployment를 모두 배포할 수 있다.

kubectl apply는 파일이 필요하다(manifest, YAML 파일 또는 json 파일)

kubectl create deployment deploy-nginx --image=nginx

kubectl scale deployment deploy-nginx --replicas=3

kubectl get pods를 하면

[내가정한이름]-[deployment이름]-[pod이름] 이렇게 자동으로 뒤에 구별되도록 이름이 뜬다.

2.4.외부로 노출하는 더 좋은 방법인 로드밸런서(LoadBalancer)

kubectl expose deployment deploy-nginx --type=NodePort --port=80

MetalLB 라는걸 이용해서 로드밸런서 형태로 배포 가능.

kubectl apply -f ~/_Lecture..../chr2/2.4/metallb.yaml

kubectl create deployment chk-hn --image=sysnet4admin/chk-hn

kubectl scale deployment chk-hn --replicas=3

kubectl expose deployment chk-hn --type=LoadBalancer --port=80

3.1.쿠버네티스 구성 요소 확인(+EKS,AKS,GKE 관리형 쿠버네티스)

default namespace와 kube-system namespace

metallb-system도 따로 나누어져있다

kubectl get pods -n kube-system

AWS - EKS(Elastic Kubernetes Service)

Azure - AKS(Azure Kubernetes Service)

GCP - GKE(Google Kubernetes Engine)

관리형 쿠버네티스

쿠버네티스가 돌아가게끔 만들어주는 주요한 시스템들은 네임스페이스가 따로 설정이 되어 있다.

4.3.쿠버네티스 마스터 노드의 구성 요소에 문제가 생겼다면

kubectl get pods -n kube-system -o wide

댓글을 작성해보세요.

채널톡 아이콘