⭐ Kubernetes & EKS/Kubernetes (쿠버네티스) (28) 썸네일형 리스트형 쿠버네티스 - pod - 라이브니스 프로브, 레디니스 프로브 구성 # 라이브니스, 레디네스, 스타트업 프로브 구성 Liveness, Readiness and Startup Probes # Liveness Probe 컨테이너 살았는지 판단하고 다시 시작하는 기능 컨테이너의 상태를 스스로 판단하여 교착 상태에 빠진 컨테이너를 재시작 버그가 생겨도 높은 가용성을 보임 # Readiness Probe 포드가 준비된 상태에 있는지 확인하고 정상 서비스를 시작하는 기능 포드가 적절하게 준비되지 않은 경우 로드밸런싱을 하지 않음 # Startup Probe 애플리케이션의 시작 시기 확인하여 가용성을 높이는 기능 Liveness와 Readiness의 기능을 비활성화 # 쿠버네티스 - pod - 라이브니스, 레디니스 프로브 구성 - 라이브니스 프로브 : 컨터이너 상태를 파악하고 문제가.. jenkins를 yaml파일로 작성하여 실행하기 # 연습문제 # jenkins 를 실행하기 cp go-http-pod.yaml jenkins-manual-pod.yaml gedit jenkins-manual-pod.yaml # 파일 내용 입력 apiVersion: v1 kind: Pod metadata: name: jenkins-manual spec: containers: - name: jenkins image: jenkins/jenkins:lts ports: - containerPort: 8080 # jenkins pod 생성 및 실행 kubectl create -f jenkins-manual-pod.yaml kubectl get pod kubectl exec jenkins-manual -- curl 127.0.0.1:8000 kubectl exec.. 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_.. 젠킨스 앱을 쿠버네티스에서 실행하기 # 연습문제 : 젠킨스 앱을 쿠버네티스에서 실행하기 # 모든 서비스 삭제 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.. 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.. 이전 1 2 3 4 다음