컨테이너를 다루는 표준 아키텍처, 쿠버네티스

2023. 9. 4. 22:05쿠버네티스/쿠버네티스

728x90
반응형

컨테이너 인프라 환경

리눅스 운영 체제의 커널 하나에 여러 개의 컨테이너가 격리된 상태로 실행되는 인프라 환경을 의미

출처

쿠버네티스 이해하기

오케스트레이션

복잡한 단계를 관리하고 요소들의 유기적인 관계를 미리 정의해 손쉽게 사용하도록 서비스를 제공하는 것을 의미합니다. 다수의 컨테이너를 유기적으로 연결, 실행, 종료할 뿐만 아니라 상태를 추적하고 보존하는 등 컨테이너를 안정적으로 사용할 수 있게 만들어주는 것이 컨테이너 오케스트레이션이다.

 

컨테이너 오케스트레이션 제공 대표적 솔루션 종류

  • docker Swarm
  • MESOS
  • Nomad
  • kubernets

쿠버네티스 구성방법

  1. 관리형 쿠버네티스 : EKS, AKS, GKE
  2. 설치형 쿠버네티스 : 오픈쉬프트
  3. 구성형 쿠버네티스 : kubeadm, kubespray 등

쿠버네티스 구성하기

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  N = 3 # max number of worker nodes
  Ver = '1.18.4' # Kubernetes Version to install

  #=============#
  # Master Node #
  #=============#

    config.vm.define "m-k8s" do |cfg|
      cfg.vm.box = "sysnet4admin/CentOS-k8s"
      cfg.vm.provider "virtualbox" do |vb|
        vb.name = "m-k8s(github_SysNet4Admin)"
        vb.cpus = 2
        vb.memory = 3072
        vb.customize ["modifyvm", :id, "--groups", "/k8s-SgMST-1.13.1(github_SysNet4Admin)"]
      end
      cfg.vm.host_name = "m-k8s"
      cfg.vm.network "private_network", ip: "192.168.1.10"
      cfg.vm.network "forwarded_port", guest: 22, host: 60010, auto_correct: true, id: "ssh"
      cfg.vm.synced_folder "../data", "/vagrant", disabled: true 
      cfg.vm.provision "shell", path: "config.sh", args: N
      cfg.vm.provision "shell", path: "install_pkg.sh", args: [ Ver, "Main" ]
      cfg.vm.provision "shell", path: "master_node.sh"
    end

  #==============#
  # Worker Nodes #
  #==============#

  (1..N).each do |i|
    config.vm.define "w#{i}-k8s" do |cfg|
      cfg.vm.box = "sysnet4admin/CentOS-k8s"
      cfg.vm.provider "virtualbox" do |vb|
        vb.name = "w#{i}-k8s(github_SysNet4Admin)"
        vb.cpus = 1
        vb.memory = 2560
        vb.customize ["modifyvm", :id, "--groups", "/k8s-SgMST-1.13.1(github_SysNet4Admin)"]
      end
      cfg.vm.host_name = "w#{i}-k8s"
      cfg.vm.network "private_network", ip: "192.168.1.10#{i}"
      cfg.vm.network "forwarded_port", guest: 22, host: "6010#{i}", auto_correct: true, id: "ssh"
      cfg.vm.synced_folder "../data", "/vagrant", disabled: true
      cfg.vm.provision "shell", path: "config.sh", args: N
      cfg.vm.provision "shell", path: "install_pkg.sh", args: Ver
      cfg.vm.provision "shell", path: "work_nodes.sh"
    end
  end

end

5번째 줄: 워커 노드의 수를 변수 N에3을 넘김, 24번째 줄과 46번째 줄에서 config.sh로 넘김

6번째 줄: 쿠버네티스 버전을 사용자가 선택할 수 있도록 변수 (Ver = '1.18.4')로 지정함. 다른 쿠버네티스 버전을 사용하고 싶을 경우 해당 값을 변경하면 됨.

25번째 줄 : args : [ Ver, "Main"] 코드를 추가해 쿠버네티스 버전 정보(Ver)와 Main이라는 문자를 install_pkg.sh로 넘김.

Ver 변수는 각 노드에 해당 버전의 쿠버네티스 버전을 설치하게 함. 두 번째 인자인 Main 문자는 install_pkg.sh에서 조건문으로 처리해 마스터 노드에만 이 책의 전체 실행 코드를 내려받게 함.

26번째 /48번째 줄 : 쿠버네티스 마스터 노드를 위한 master_node.sh와 워커 노드를 위한 work_nodes.sh 코드를 추가 함.

 

config.sh는 kubeadm으로 쿠버네티스를 설치하기 위한 사전 조건을 설정하는 스크립트 파일 임

 

반응형

'쿠버네티스 > 쿠버네티스' 카테고리의 다른 글

kubectl 실습  (1) 2023.09.10
마스터 노드  (0) 2023.09.04
putty와 슈퍼 putty  (0) 2023.09.04
베이그런트로 테스트 환경 구축하기  (0) 2023.09.04
vagrant와 virtual box  (0) 2023.09.04