라벨이 cluster인 게시물 표시

Kbernetes kubectl을 이용하여 Pods를 업데이트 하기

이미지
  해당 pods에 사용되는 이미지를 다른 이미지로 바꿔야 하는 경우가 있습니다. 이때도 변경된 이미지를 Pull받아야 합니다. 해당 글은 아래 gitHub repository를 이용하여 작성했습니다. gitHubLink : https://github.com/Alex-Choi0/kubernetes_create_one_pod.git 기존 코드와 다르게 '<h2>Update ver 1</h2>'를 추가하였습니다. 이는 배포된 pod에 없는 테그 이므로 같은 이미지를 사용하는 컨테이너를 다시 배포를 해야 합니다.  const express = require ( 'express' ); const app = express (); app . get ( '/' , ( req , res ) => { res . send ( ` <h1>Test for minikube</h1> <h2>Update ver 1</h2> <p>/ : Open the site</p> <p>/err : process top (get error)</p> ` ); }); app . get ( '/err' , ( req , res ) => { process . exit ( 1 ); }); app . listen ( 8080 ); 1. 이미지 Create하고 Push 하기(경로는 도커파일이 존재하는곳) $ docker build -t [image name]:[tag] . copy 이제 해당 이미지를 컨테이너에 다시 배포해야 한다. minikube dashboard를 확인하면 컨테이너의 이름을 확인할수 있다. 아래 사진으로는 'first-pods' 이다. 이미지는 'alexchoi1/first-pods:latest'를 사용하지만 위의...

Kbernetes kubectl을 이용하여 Pods를 외부 IP로 노출 및 스켈링(scaling)하기

이미지
  하나의 클러스터를 구동시킵니다. 해당 노드는 8080 port로 접속이 가능합니다. 따라서 해당 deployment의 8080포트를 노출해 줍니다. $ kubectl expose deployment [deployment name] --port=8080 --type=[set type] copy 위 사진에서는 8080 port로 해당 서비스에 노출을 하였습니다. type에 대한 자세한 내용은 아래 링크를 참고해 주시기 바랍니다. 링크1 : https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/ 위 사진에서 'EXTERNAL-IP'가 '<pending>'인것을 알수 있습니다. 이는 접속할수 있는 ip가 할당되지 않았다는 것입니다. minikube는 현재 로컬에서 돌아가기 때문에 충분한 IP를 가지고 있지 않습니다.  minikube로 'EXTERNAL-IP' 할당하기 $  minikube service [service name] copy 위의 사진을 보면 확일할수 있든시 외부포트인 31455포트를 통해서 해당 pod의 8080포트로 접근할수 있다.  소스코드를 보면 알겠지만 임의로 node를 멈추는 기능(/err)이 있다. 임의적으로 pod가 멈췄을때는 kubernetes가 자동으로 재시작을 한다. 위 사진을 봤을때 'RESTARTS'가 0에서 1로 올라가는 것을 확인할수 있습니다. 이는 pod가 노드가 멈춘것을 알고 다시 container를 생성해서 실행한 것입니다. 해당 deployment도 제대로 동작되는것을 확인할수 있다. 이는 dash board에서도 확인할수 있습니다. $ minikube dashboard dashboard를 이용하여 이벤트를 시간순으로 확인할수 있습니다. 여기서 필요하면 scaling도 할수 있습니다. 현재 1개의 p...

Kbernetes minikube, kubectl을 이용하여 Cluster 및 Pods 셋팅하기

이미지
해당 포스트를 진행하기 전에 로컬에 docker, minikube, kubectl에 셋팅되어 있어야 합니다. 아래 해당링크를 참고해 주시기 바랍니다. 링크1(Kubernetes minikube, kubectl 설치) : https://engineeringshw.blogspot.com/2023/01/kubernetes-minikube-kubectl.html 먼저 minikube가 동작되고 있는지를 확인해야 합니다. $ minikube status 만약 위 사진처럼 나오지 않는다면 링크1을 참고해 주시기 바랍니다. 이제 도커 이미지를 생성해야 합니다. 링크2 : https://github.com/Alex-Choi0/kubernetes_create_one_pod.git 위의 레파지토리에서 코드를 클론한 다음 이미지를 생성합니다. 아래 명령어를 사용할려면 해당 경로에서 실행해야 합니다. $ docker build -t first-kub . 이제 해당 이미지로 deployment 및 pod를 만들겠습니다. $ kubectl create deployment first-pods --image=first-kub 이제 pod의 상태를 확인해 봅니다. $ kubectl get pods pod의 상태가 'ImagePullBackOff'인것을 알수 있습니다. 즉 이미지를 pull 할수 없다는 뜻입니다. 이는 docker login이 안됬거나, pull 할 이미지가 없는 것입니다.   실제 이미지를 만들었지만 로컬에 만든것이기 때문에 kubectl은 docker hub에서 찾지 못하는 것입니다. 따라서 해당 이미지를 받을려면 docker hub(또는 다른 서비스)에 이미지를 올리고 kubectl로 받아야 합니다. docker hub에 대한 자세한 내용은 아래 링크를 참고해 주시기 바랍니다. 링크3(docker 도커허브(docker hub)에 이미지 올리기(Push) : https://engineeri...

Lesson 16_2 클러스터 특성(쓰기)

이미지
안녕하세요. 저번에 클러스터의 특징 및 읽는 방법에 대해서 알려 드렸습니다. 이번에는 클러스터에 쓰는 방법에 대해서 알려드리겠습니다. 그림1) 16_1과 마찬가지로 클러스터 만들기 그림2) 컨트롤을 인디게이터로 변경 저번과 다른점은 컨트롤을 그림2와 같이 인디게이터로 변경하는 것입니다. 그림3) 인디게이터를 클러스터 안에 넣기 그림4) 클러스터 상수 생성 그림5) 클러스터 상수(2가지 모양)  클러스터를 쓸때 상수 또는 동일한 컨트롤이 필요합니다. 위의 경우는 상수를 이용합니다.  그림5는 상수의 2가지 모습을 보여줍니다. 클러스터 내에 변수가 많으면 길어질수 있기 때문에 마우스 좌클릭 연속 2번을 하면 오른쪽 처럼 변경이 됩니다. 그림6) 이름으로 묶기 생성 그림7) 이름으로 묶기로 블록다이어그램 코딩 이름 묶기를 이용해서 그림7처럼 코딩을 하면 클러스터 쓰기는 마무리 된것입니다. 필요한 정보를 입력후 프로그램을 실행하면 클러스터에 기록이 됩니다. 그림8) 프런트패널 디자인 그림9) 프로그램 실행결과 Lesson 16은 간단한 클러스터의 쓰기와 읽기에 대해서 설명했지만 사실 클러스터의 용도는 훨씬 다양합니다. 배열을 이용한 클러스터도 있고 심지어 클러스터로 레포트를 만드는 경우도 있습니다.  따라서 상황에 맞게 클러스터를 사용하시면 프로그래밍 하는데 훨씬 수월하실 것입니다.

Lesson 16_1 클러스터 특성(읽기)

이미지
안녕하세요. 알렉스 입니다. 이번 글은 클러스터의 특성에 대해서 알려드리겠습니다. 보통 클러스터는 일반과 에러 클러스터로 나뉘어 지는데 이번 주제는 일반 클러스터에 대해서 알려드리겠습니다. 보통 변수들을 말할때 문자열, 숫자, 소수형 숫자, 불리언 등등으로 나뉘어져 있습니다. 하지만 각각의 변수를 이용해서 프로그래밍 할 뿐만 아니라 서로 다른 변수들이 섞여 있는 경우도 있습니다. 이때 한번에 묶어서 사용하는 방법이 클러스터 입니다. 책을 예로 들도록 하겠습니다. 그림1) 책의 구성요소 여기서 책의 구성요소를 4가지로 생각했습니다. 저자, 금액, 출판된 날짜 그리고 출판사 입니다. 그러면 이 구송요소의 변수를 알아보도록 하겠습니다. 저자, 출판사 저자는 문자열로 분류할수 있습니다. 사람 이름이기 때문에 숫자가 들어가지 않습니다. 또한 참 or 거짓이 아닙니다. 그러므로 문자열로 분류해야 합니다. 이는 출판사 또한 마찬가지 입니다. 금액 금액은 숫자로 표연합니다. 따라서 숫자로 표연합니다. 출판된 날짜 마지막으로 출판된 날짜는 숫자 또는 문자열로 구분할수 있습니다. 예를 들어 20191209와 2019년12월09일은 같다고 보실수가 있습니다. 따라서 개발자의 입맛에 맞게 맞추시면 됩니다. 그림2) 프로트 패널 화면 그림3) 클러스터 추가 프런트 패널에 1개의 클러스터를 만들도록 하겠습니다. 클러스트는 처음에 빈 공간에서 시작됩니다. 그림4) 클러스터 구성요소 이제 그림4와 같이 책의 구성요소 4가지를 만듭니다. 나중에 말하겠지만 넣는 순서에 따라 클러스터 내에서 각각의 구성요소들이 클러스터 순서가 나누어지게 됩니다. 따라서 순서를 유의하면서 넣어주시기 바랍니다. 그림5) 책(클러스터) 완성 그림6) 블록다이어그램 그림7) 블록다이어그램에서 클러스터 함수 그림8) 풀기를 이용한 클러스터 정보 읽기 이제 책에 있는 정보를 읽기 위해서는 그림8과...