본문 바로가기

반응형

⭐ Kubernetes & EKS

(135)
쿠버네티스 애플리케이션 동작구조와 HTTP 서버 스케일링 테스트 # 쿠버네티스 애플리케이션과 서비스 동작 구조 - pod는 컨테이너를 패키징하고있는 컨테이너 바구니같은 개념이다. - pod은 ip를 할당받으며, pod 서로가 통신이 가능하다. # pod 정보확인 kubectl get pod # HTTP 서버 스케일링과 테스트 # replicas 수를 늘려 스케일 아웃 실행 kubectl scale deploy http-go --replicas=3 kubectl get pod - 해당 pod이 3개로 증가한것을 확인 할 수 있다. # 로드밸런싱 통신 확인하기 kubectl get svc # 내부ip인 CLUSTER-IP를 활용하여 요청 kubectl get pod 를 실행하여 NAME을 확인 kubectl exec http-go-587945f5c4-cgw5m -- cu..
Docker 컨테이너를 쿠버네티스에서 실행하기 # 생성된 컨테이너를 쿠버네티스에 업로드 및 실행 kubectl get nodes # 업로드한 도커 이미지를 쿠버네티스에서 실행하기 kubectl create deploy http-go --image=may9noy/http-go 변경됨 : --dry-run -> --dry-run=client # 실행한 deploy 확인 > deploy -> rs -> pod 의 계층구조로 실행됨 kubectl get deploy kubectl get rs kubectl get pod # 서비스 expose 하기 kubectl expose deployment http-go --name http-go-svc - port 정보 넣으라고 나오는 경우 kubectl expose deployment http-go --name ht..
쿠버네티스에서 실행할 go언어로 작성된 컨테이너 생성 # 쿠버네티스에서 실행한 Go언어로 구성된 컨테이너 작성 vim main.go # 코드 작성 package main import ( "fmt" "github.com/julienschmidt/httprouter" "net/http" "log" "os" ) func Index(w http.ResponseWriter, r *http.Request, _ httprouter.Params) { hostname, err := os.Hostname() if err == nil { fmt.Fprint(w, "Welcome! " + hostname +"\n") } else { fmt.Fprint(w, "Welcome! ERROR\n") } } func main() { router := httprouter.New() rou..
GCP에 쿠버네티스 설치 및 실행 # GCP에 쿠버네티스 설치 및 실행 1. GCP를 가입 2. may9noy-gke-test-20210904 라는 프로젝트를 생성 # 쿠버네티스 엔진 - 클릭을 하면 설치를 하는 방식이라 1분정도 기다리면 클러스터 만들기가 활성화가 된다. - 리전만 asia-northeast3-a 로 변경 후 만들기 # 생성된 클러스터에서 SSH 쉘 스크립트 실행 클러스터에서 연결을 클릭 후 CLOUD SHELL 실행 버튼을 클릭하면 바로 SSH 화면으로 접근 가능 # 쿠버네티스 노드 확인 kubectl get nodes - 노드들이 3개가 리스트업 되면 상태가 Ready 라면 정상적으로 생성 되었다. # 테스트용 nginx 설치하기 kubectl run nginx --image=nginx # nginx를 외부로 서비스..
master 노드와 work 노드 생성, 클러스터 구성 및 쿠버네티스 테스트 # master 노드와 work 노드 생성 # 버추어 박스에서 복제 실행 - 새 MAC 주소로 생성 - 호스트 이름이 고유해야함 - 스왑 오프 해줘야 함 # 복제 수행 1. 가상머신 우측클릭 복제 선택 2. 이름을 work1이라고 입력 > 모든 네트워크 어댑터 MAC 주소 포함 > 복제 3. 이전에 kubeamd을 생성한 가상 머신의 이름을 master로 지정 4. 2번째 가상머신도 위와같이 생성하고 이름을 work2 라고 설정 # 마스터 노드의 스냅샷 생성 스냅샷 찍기 > kubeadm 설치 입력 후 저장 > 복원하면 최초 상태로 돌아감 # NAT 네트워크 구성으로 3개의 머신이 서로 통신하게끔 하나의 네트워크로 구성하기 환경설정 > 네트워크 > Natnetwork 추가 > 각각 가상머신의 설정에서 네..
Docker와 kubeadm 설치 # docker와 kubeadm 설치 # 버추어 박스에 ubuntu 이미지를 불러온다. apt install curl sudo apt update E: /var/lib/apt/lists/lock 잠금 파일을 얻을 수 없습니다 - open (11: 자원이 일시적으로 사용 불가능함) 위의 오류 발생 시 reboot 으로 재시작 후 다시 update 수행 # 도커 설치 sudo apt install docker.io -y # kubeadm 설치 (우분투는 데비안 베이스) gedit kube_install.sh # 아래의 내용 입력 (한줄씩 실행하니 잘됨...흠...) # kube_install.sh sudo apt-get update sudo apt-get install -y apt-transport-http..
쿠버네티스 기초 (실행 개념) # 쿠버네티스의 핵심 기능 > DevOps 1. 개발자 돕기 : 핵심 애플리케이션 기능에 집중 2. 운영팀 돕기 : 효과적으로 리소스를 활용 마스터노드 : 시스템을 관리 통제, 컨트롤 플레인을 관장 워커 노드 : 실제 애플리케이션의 실행을 담당 # 쿠버네티스의 실행 순서 1. 개발자는 배포할 이미지를 이미지 레지스트리에 push 해놓음 2. 앱 디스크립터 라는 yaml 파일로 문서를 작성 3. kube api 서버(마스터 플레인)가 슬레이브 노드에게 yaml 파일로 작성된 내용에 대해 명령을 내림 4. 명령받은 이미지를 docker registry에서 받아와서 실행 # 스왑기능 - 스왑기능은 메모리의 데이터를 hdd로 보내서 실행을 하는것 - 메모리와 hdd의 속도차가 발생하므로, 스래싱 현상이 발생함 ..

728x90
반응형