전공영역 공부 기록

kubespray로 쿠버네티스 설치

악분 2021. 7. 5. 06:52
반응형

목차


    안녕하세요. 이번 글은 on-premise환경에서 kubespray로 쿠버네티스를 설치하는 과정을 다룹니다.



    https://youtu.be/12vNy4IvF14


    1. 인프라 구성

    virtualbox로 인프라를 구성해보겠습니다. vagrant로 쉽게 인프라를 자동으로 구축할 수 있습니다. vagrantfile은 github에서 다운로드 하실 수 있습니다.

    github: https://github.com/choisungwook-vagrant/kubespray-onpremise

     그림1: 인프라 구축과정

    1.1 VM 구성

    vagrant는 총 6개의 서버를 생성합니다. 각 서버는 ubuntu18.04 운영체제를 사용합니다.

    • bootstrap(kubespray 컨트롤러 서버)
    • 쿠버네티스 클러스터 노드: controlplane3대, worker 2대

    그림2 vagrant VM 구성

    1.2 VM 사양, IP 설정

    각 서버는 brdige IP를 할당받습니다. IP할당은 config.yml파일에 설정할 수 있는데요. 각 서버는 사용하지 않는 IP를 설정해줘야 합니다. 그 이외에 CPU, memory를 설정하실 수 있습니다.

    그림3 vagrant IP, CPU, memory 설정

    1.3 vagrant 실행

    vagrantfile이 있는 위치에서 vagrant up명령어를 입력하면 virtualbox에서 vm이 생성됩니다.

    vagrant up

    1.4 원격접속

    putty같은 ssh원격접속 도구를 이용하여 [그림3]에서 설정한 IP로 접속하실 수 있습니다.

    • 계정: vagrant
    • 비밀번호: vagrant


    2. 서버 설정

    이 챕터에서는 kubespray를 실행하기 위한 설정과정을 다룹니다.

    2.1 공통설정

    bootstrap서버를 제외한 모든 서버에 아래 명령어를 실행합니다. swap메모리 비활성화, ubuntu방화벽을 비활성화 합니다.

    sudo swapoff -a sudo sed -i '/swap/d' /etc/fstab sudo systemctl stop ufw sudo systemctl disable ufw 

    2.2 bootstrap서버 설정

    2.2.1 kubespray 설치

    kubespray는 ansible을 이용하여 쿠버네티스를 설치합니다. ansible을 사용하기 위해 python3이 필요합니다.

    python3을 설치하고 python 가상환경을 활성화 합니다.

    # python3 설치 sudo apt install python3-pip python3-setuptools virtualenv -y # python 가상환경 활성화 virtualenv --python=python3 venv . venv/bin/activate 


    git clone을 사용하여 kubespray git프로젝트르 다운로드 받습니다.

    (venv)git clone https://github.com/kubernetes-sigs/kubespray 


    kubespray실행에 필요한 python 패키지를 설치합니다.

    (venv) cd kubespray (venv) pip install -r requirements.txt 

    2.2.2 ssh키 복사

    ansible은 각 서버가 실행할 스크립트를 ssh통신으로 전송합니다. 그러므로 ssh통신을 위한 키 등록과정이 필요합니다.

    bootstrap서버에서 ssh키를 생성합니다.

    ssh-keygen -t rsa 


    생성한 키를 ssh-copy-id명령어로 쿠버네티스 클러스터 서버에 복사합니다.

    영상참고: https://youtu.be/12vNy4IvF14?t=849
    ssh-copy-id vagrant@[controlplane, worker IP] 

    2.2.3 ansible 인벤토리파일 설정

    ansible 인벤토리 파일을 수정합니다. 인벤토리 파일은 ansible이 스크립트를 실행할 대상을 설정하는 곳입니다. 인벤토리 파일은 샘플파일을 복사한 후에 편집할 수 있습니다.

    cp -rfp inventory/sample inventory/mycluster vi inventory/mycluster/inventory.ini 


    [그림4]와 같이 인벤토리 파일을 설정합니다. node1,2,3은 controlplane노드이고 node4,5는 worker노드입니다.

    그림4 인벤토리 파일

    2.2.4 쿠버네티스 클러스터 설치 설정

    다음 쿠버네티스 major버전에서는 CRI에서 도커가 제외됩니다. 그러므로 설치할때부터 CRI를 containerd로 변경하겠습니다.

    총 2파일을 설정하면 됩니다.

    영상참고: https://youtu.be/12vNy4IvF14?t=1035
    vi inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml container_manager: containerd 

    vi inventory/mycluster/group_vars/etcd.yml etcd_deployment_type: host 


    3. 설치

    모든 설정이 끝났습니다. 단 한줄의 명령어로 kubepray를 실행하실 수 있습니다. ansible-playbook명령어를 실행하면 되는데요. 이 때, root권한으로 실행됩니다.

    ansible-playbook -i inventory/mycluster/inventory.ini --become --become-user=root cluster.yml 


    설치가 성공하면 오류메세지가 표시되지 않고 모두 OK메세지가 출력됩니다.

    [그림5] kubespray 설치 성공


    4. kubectl 사용

    kubectl명령어는 controlplane노드에서 실행할 수 있습니다. vagrant계정에서는 kubeconfig파일이 없어 kubectl명령어를 이용하실 수 없습니다. root계정으로 스위칭한 후 kubectl명령어를 사용해야 합니다.

    sudo su kubectl 

    반응형