분류 전체보기 (70) 썸네일형 리스트형 쿠버네티스 레플리카셋(Replica Set) 레플리카셋 많은 사용자를 대상으로 웹 서비스를 하려면 다수의 파드가 필요한데, 이를 하나씩 생성한다면 매우 비효율 적이다. 그래서 쿠버네티스에서는 다수의 파드를 만드는 레플리카셋 오브젝트를 제공한다. 예를들어 파드를 3개 만들겠다고 레플리카셋에 선언하면 컨트롤러 매니저와 스케줄러가 워커노드에 파드 3개를 만들도록 선언한다. 그러나 레플리카셋은 파드수를 보장하는 기능만 제공하기 때문에 롤링 업데이트 기능등이 추가된 디플로이먼트를 사용해 파드수를 관리하기를 권장한다. 레플리카셋 작동 과정 1. 배포된 파드의 상태 확인 2. nginx-pod를 scale 명령으로 3개로 증가 리소스를 찾을 수 없다는 에러메세지 나옴, nginx는 파드로 생성되었기 때문에 디플로이 오브젝트에 속하지 않아서 리소스를 확인할 수 .. 쿠버네티스 디플로이먼트(Deployment) 디플로이먼트 기본 오브젝트만으로도 쿠버네티스를 사용할 수 있다. 하지만 한계가 있어서 이를 좀 더 효율적으로 작동하도록 기능들을 조합하고 추가해 구현한 것이 디플로이먼트(Deployment)이다. 이외에도 데몬셋(DaemonSet), 컨피그맵(Configmap), 레플리카셋(ReplecaSet), PV(PersistentVolume), PVC(PersistentVolumeClaim), 스테이트풀셋(StatefulSet) 등이 있으며, 앞으로도 요구사항에 따라 목적에 맞는 오브젝트들이 추가될 것이다. 쿠버네티스에서 가장 많이 쓰이는 디플로이먼트 오브젝트는 파드에 기반을 두고 있으며, 레플리카셋 오브젝트를 합쳐놓은 형태이다. API서버와 컨트롤러 매니저는 단순히 파드가 생성되는 것을 감시하는 것이 아니라 디.. 쿠버네티스 오브젝트(Object) 보호되어 있는 글입니다. 쿠버네티스 기본 사용법 # 파드를 생성하는 방법 파드 생성 # run 명령어 사용 $ kubectl run nginx-pod --image=nginx # create deployment 명령어 사용 $ kubectl create deployment dpy-nginx --image=nginx run으로 파드를 생성하면 단일 파드 한개만 생성되고 관리된다. create deployment로 파드를 생성하면 디플로이먼트라는 관리 그룹 내에서 파드가 생성된다. 비유를 하자면 run으로 생성한 파드는 초코파이 한개이고 create deployment로 생성한 파드는 초코파이 상자에 들어있는 초코파이 한개이다. 생성 된 파드 IP 확인 # 생성 된 파드 IP 확인 $ kubectl get pod -o wide 웹페이지 정보를 받아오는지 .. 파드의 생명주기 쿠버네티스의 가장 큰 장점은 쿠버네티스의 구성 요소마다 하는 일이 명확하게 구분돼 각자의 역할만 충실하게 수행하면 클러스터 시스템이 안정적으로 운영된다는 점이다. 이렇게 각자의 역할이 명확하게 나뉘어진 것은 마이크로서비스 아키텍처 (MSA) 구조와도 밀접하게 연관된다. 또한 역할이 나누어져 있어 문제가 발생했을 때 어느 부분에서 문제가 발생했는지 디버깅하기 쉽다. # 파드의 생명 주기 생명주기는 파드가 생성, 수정, 삭제되는 과정을 나타낸다. 1. kubectl을 통해 API서버에 파드 생성을 요청한다. 2. (업데이트가 있을 때마다 매번) API 서버에 전달된 내용이 있으면 API 서버는 etcd에 전달된 내용이 있으면 API서버는 etcd에 전달된 내용을 모두 기록해 클러스터의 상태 값을 최신으로 유.. 쿠버네티스 구성 요소 쿠버네티스 클러스터를 이루는 구성 요소 마스터 노드 kubectl : 쿠버네티스 클러스터에 명령을 내리는 역할을 한다. 다른 구성 요소들과 다르게 바로 실행되는 명령 형태인 바이너리(binary)로 배포되기 때문에 마스터 노드에 있을 필요는 없다. 하지만 통상적으로 API 서버와 주로 통신하므로 API서버가 위치한 마스터 노드에 구성한다. API 서버 : 쿠버네티스 클러스터의 중심역할을 하는 통로이다. 주로 상태값을 저장하는 etcd와 통신하지만, 그 밖의 요소들 또한 API 서버를 중심에 두고 통신하므로 API 서버의 역할이 중요하다. 회사에 비유하면 모든 직원과 상황을 관리하고 목표를 설정하는 관리자와 같다. etcd : 구성 요소들의 상태 값이 모두 저장되는 곳. 회사의 관리자가 모든 보고 내용을 .. MacOS에서 쿠버네티스 구축 (control-plane,node 설정/calico 애드온 ) control-plane 설정 k-control 에서 진행 # kubeadm init $ sudo kubeadm init --control-plane-endpoint 192.168.56.10 --pod-network-cidr 192.168.56.0/21 --apiservier-advertise-address 192.168.56.10 $ mkdir -p $HOME/.kube $ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config $ sudo chown $(id -u):$(id -g) $HOME/.kube/config # 칼리코 애드온 설치 $ kubectl apply -f → kubeadm init 오류 시 아래 트러블슈팅 참고 참고 문서: Creating.. MacOS에서 쿠버네티스 구축 (docker 설치/kubeadm 설치) Docker 설치 k-control, k-node1, k-node2, k-node3 동일하게 설치 # k-control, k-node1, k-node2, k-node3 동일하게 설치 $ ssh vagrant k-control # apt 업데이트 $ sudo apt-get update # docker 설치 $ sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release $ curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg $ echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-.. MacOS에서 쿠버네티스 구축 (Vagrant 가상머신 생성) Vagrant 가상머신을 생성하여 쿠버네티스 환경을 구축하자 hostname k-control k-node1 k-node2 k-node3 IP 192.168.56.10 192.168.56.11 192.168.56.12 192.168.56.13 Vagrantfile 작성 # vagrant 디렉토리 생성 $ mkdir vagrant/k8s $ cd vagrant/k8s # Vagrantfile 파일 생성 # -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.define "k-control" do |ubuntu| ubuntu.vm.box = "ubuntu/focal64" ubuntu.vm.hostname = ".. MacOS에서 쿠버네티스 구축 (Virtualbox 설치/ Vagrant 설치) Vagrant와 Virtualbox를 사용하여 MacOS에서 쿠버네티스를 구축해보자 brew를 이용해 virtualbox를 설치한다. brew를 이용해 vagrant를 설치한다. # virtualbox 설치 $ brew install --cask virtualbox $ virtualbox # vagrant 설치 $ brew install vagrant $ vagrant --version 이전 1 ··· 4 5 6 7 다음