본문 바로가기

⭐ Kubernetes & EKS

(140)
pod의 기본설명과 디스크럽터 작성 # pod란 무엇인가? - pod를 통해 컨테너가 관리되는 이유는 무엇일까? 컨테이너 집합은 때때로 함께 스케줄링되고, 동일노드에서 실행되며, 로컬로 통신을 하거나 저장 공간을 공유해야 하기 때문이다. 예를 들어보면, 블로그 애플리케이션은 컨테이너를 동기화하는 컨테이너와 블로그 콘텐츠를 사용자에게 제공하는 웹서버 컨테이너로 구성이 될 것이다. 두 컨테이너는 데이터를 공유 해야 하기 때문에 pod 하나에 함께 스케줄링 되어야 한다. 그리고 대부분의 애플리케이션은 하나의 pod에서 위의 과정을 수행하게 된다. - 중요한것은 kubectl run 명령어가 실제로 pod를 직접 생성하지는 않는다. 디플로이먼트가 생성이 되고, 디플로이먼트가 pod를 생성한다. # yaml 파일을 사용하여 작성 # pod 디스크립..
큐브시스템 컴포넌트와 etcd 데이터베이스 살펴보기 # 쿠버네티스 컴포넌트 살펴보기 kubectl get pod -n kube-system # 쿠버네티스 설정 (버추어 박스에서만 확인가능) cd /etc/kubernetes/manifests - 설정 파일들은 yaml 파일로 작성되어 있다. # etcd 데이터베이스 살펴보기 - etcd는 키벨류 기반에 오픈소스 데이터베이스, 쿠버네티스는 기본적으로 etcd를 사용하고 있음. # etcd를 다운받기 구글에서 etcd github 검색 > 릴리즈 클릭하여 페이지 하단으로 이동 > 리눅스 버전 선택하여 마우스 우클릭 링크주소 복사 > 마스터 서버로 이동 # etcd를 다운로드 wget https://github.com/etcd-io/etcd/releases/download/v3.5.0/etcd-v3.5.0-li..
Minikube 설치 # 미니큐브 설치 관련정보 URL : https://blog.naver.com/isc0304/221879359568 # 가상파일 시스템 가져오기 (docker)ubuntu-18.04.2-desktop-amd64.ova 파일 불러오기 # 도커 설치하기 sudo apt install docker.io -y # 미니큐브는 관리자 권한으로 실행을 할수 업게 되어 있으므로 권한을 조정 해야함 sudo usermod -aG docker $USER && newgrp docker docker ps -a # 미니큐브 다운로드 및 설치하기 sudo apt install curl curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_..
쿠버네티스 AutoComplete 기능 활성화 # kubectl Auto Complete 기능 활성화 하기 https://kubernetes.io/ cheat sheet 검색 Auto Complete 내용 확인 # 단축키 활용 source > ~/.bashrc # add autocomplete permanently to your bash shell. alias k=kubectl complete -F __start_kubectl k 기존 : kubectl get pod 변경 : k get pod # cka 시험 정보 시험관련 정보 : https://esevan.tistory.com/12 udemy url : https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tes..
젠킨스 앱을 쿠버네티스에서 실행하기 # 연습문제 : 젠킨스 앱을 쿠버네티스에서 실행하기 # 모든 서비스 삭제 kubectl delete all --all # jenkins 실행 docker pull jenkins/jenkins:lts-jdk11 kubectl create deploy jenkins --image=jenkins/jenkins:lts-jdk11 kubectl get pod kubectl get pod -w # expose하여 외부에서 서비스 접근 허용하도록 설정 kubectl expose deploy jenkins --type=LoadBalancer --name jenkins-svc --port 8080 kubectl get svc -w # jenkins 초기 해시 코드값을 찾기위해 쿠버네티스 컨테이너?로 접근하여 확인 kub..
쿠버네티스 애플리케이션 동작구조와 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..