라벨이 kubernetes인 게시물 표시

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...

Kubernetes minikube, kubectl 설치

이미지
  다음은 kubectl을 설치하는 것입니다. 참고링크2 : https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/ $  curl -LO "https://dl.k8s.io/release/ $( curl -L -s https://dl.k8s.io/release/stable.txt ) /bin/linux/amd64/kubectl" 먼저 다운로드를 진행합니다. 위 방법은 최신방법으로 다운을 받는 것이고 특정버전을 받고싶을시 참고링크 2에서 확인하시기 바랍니다. checksum을 다운받는다. $  curl -LO "https://dl.k8s.io/ $( curl -L -s https://dl.k8s.io/release/stable.txt ) /bin/linux/amd64/kubectl.sha256" 다운받은 버전과 checksum을 확인한다. $  echo " $( cat kubectl.sha256 ) kubectl" | sha256sum --check 체크섬 파일을 받으시고 확인을 합니다. 성공이 나올시 정상적이고 실패가 나오면 해당 버전에 맞는 체크섬을 받고 다시 진행하면 됩니다. kubectl을 설치한다. $  sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl copy kubectl이 제대로 설치됬는지와 버전을 확인한다. $  kubectl version --client --output=yaml copy 쿠버네티스를 본격적으로 진행하기 전에 연습삼하 minikube를 설치하도록 하겠습니다.  참고링크1 : https://minikube.sigs.k8s.io/docs/start/ 저는 Ubuntu이기 때문에 Linux버전으로 설치하도록 하겠습니다. $ curl -LO https://storage.googleapis...