ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Kubespray 우분투 서버환경 구성 - 1
    DevOps/K8s 2023. 5. 13. 12:59
    GUI 환경에서 구성하는 경우 메모리 사용량이 높아지기때문에 서버버전으로 설치하였다.

     

     

    서버로 구성한 노트북 사양 

    CPU : i5 11세대

    MEMORY : 16GB

    SSD : 512GB

     

    i5는 4코어 4스레드로 구성되어 각 가상머신에 가상코어 포함 2코어씩 분배하도록 설정한다.

     

    우분투 서버는 설치는 부팅디스크하나를 만들어서 노트북에 설치하였다.

    (구글에 설치 관련 정보가 많아 어렵지않다.)

     

    현재 노트북에 설치한 버전은 Ubuntu 20.04.5 LTS으로 되어있다.

     

    Multipass 공식 문서

     

    https://multipass.run/docs/installing-on-linux

     

    How to install Multipass on Linux | Multipass documentation

     

    multipass.run

    1.  Multipass 설치

    // Multipass 설치
    snap install multipass
    
    // 설치된 정보 확인
    snap info multipass

     

    2.  VM instance 생성

    kubespray 기본 구성 3개 노드( master-node, worker-node1, worker-node2)

    // master-node
    // focal이라 적힌 부분이 우분투 20.04 버전을 의미한다.
    // 뒷부분은 차례대로 cpu, memory, disk 설정
    multipass launch focal --name master-node --cpus 2 --memory 2G --disk 30G
    
    // worker-node1
    multipass launch focal --name worker-node1 --cpus 2 --memory 2G --disk 30G
    
    // worker-node2
    multipass launch focal --name worker-node1 --cpus 2 --memory 2G --disk 30G
    
    // 생성 인스턴스 확인
    multipass ls
    목록 확인 시 다음과같이 VM instance가 3개 출력되면 정상적으로 설치된것이다.

     

     

    3. SSH 설정

    로컬 PC, master-node에 각각 ssh-keygen을 해준다. 

     

    /*

    각 master노드에서 kubespray를 설치하기때문에 master 노드에서  ssh-keygen 후에 각 노드간에 원격접속이 가능하도록 설정해야한다.

    또한 로컬 pc에서도 master VM에 접속할수있게 로컬 pc에도 ssh-keygen을 해줄필요가 있다.

    각 노드를 ansible을 통해서 설치할것이기때문에 원격접속에 패스워드로 허용하는경우 설치하기 어렵다.

    (서버간에 원격접속하기위한 방법으로는 key를 통한 접속과 패스워드가 존재한다.)

    */

     

    계정은 루트계정으로 진행한다.

    계정을 따로 생성하는경우 sudo 사용시 패스워드 입력을 생략하도록 설정하여야한다.

     

    // ssh-key를 생성한다.
    ssh-keygen
    
    // 1. 생성 경로, 파일명 지정
    // 2. 패스워드는 설정하지않고 엔터를 입력한다.

     

     

    비밀키와 공개키가 다음과 같이 생성된다. 

    masterNode - 비밀키

    masterNode.pub - 공개키

     

    비밀키는 노출해서 안된다.
    공개키를 접속하고자하는 서버에 이동시키면 인증을 받아 접속이 가능해진다.

    원격접속 프로세스
    예 ) 현재 내 PC에서 다른 컴퓨터에 접속하고자 한다
    1. 내 PC에서 ssh-key생성한다.
    2. 접속하고자하는 컴퓨터에 내 공개키를 미리 이동시켜 놓는다.
    3. 내가 가진 비밀키를 사용하여 접속한다. (단 sshd_config 설정에서 공개키 허용에 yes로 되어있어야한다.)

     

    // VM들에 패스워드, 원격접속 설정을 위해 다음과 같은 방법으로 VM에 접근한다.
    multipass exec master-node /bin/bash
    
    // 루트 계정으로 전환
    sudo su
    
    // 루트 계정 비번 설정 (ssh키 이동시 필요)
    passwd

     

    // 원격 접속 설정
    vi /etc/ssh/sshd_config
    
    // 루트 계정 로그인 허용
    #PermitRootLogin prohibit-password -> prohibit-password부분을 yes로 변경하고 앞에 #제거
    
    // 공개키 접속 허용
    #PubkeyAuthentication yes -> 앞에 #제거 
    
    // 패스워드 접속 허용
    PasswordAuthentication no -> yes로 변경
    
    // 설정 반영
    service sshd reload
    
    exit 두번

     

     

    // 10.199.74.151는 위에서 생성한 multipass master-node의 ip이다.
    // multipass ls로 확인
    // 아이피 @앞에는 계정을 의미하며 생략하는 경우 보통 현재 PC의 계정이름이 자동으로 적용된다.
    // 따라서 root@를 꼭 설정해야한다.
    ssh-copy-id -i ~/.ssh/masterNode.pub root@10.199.74.151
    
    다음으로 출력되는 질문에
    yes 
    위에서 설정한 root 비밀번호를 입력해준다.
    
    // 원격접속 설정
    vi ~/.ssh/config
    
    // 기존설정이 없는경우 신규파일이다.
    // Host 옆은 alias이다. 편한 별칭으로 지정하면된다.
    // HostName :  아이피
    // User : 접속하려는 계정
    // Port : 기본 원격접속 포트 22
    // IdentityFile : ssh-keygen에서 생성한 비밀키경로를 지정해준다.
    // 로컬에서는 master-node만 있어도 충분하다.
    // 마스터노드에서는 3가지 노드를 전부 설정에 넣어준다.
    Host master-node
        HostName 10.199.74.151
        User root
        Port 22
        IdentityFile ~/.ssh/masterNode
    ------------------------------------------------
    Host worker-node1
        HostName ip
        User root
        Port 22
        IdentityFile ~/.ssh/masterNode
        
    Host worker-node2
        HostName ip
        User root
        Port 22
        IdentityFile ~/.ssh/masterNode
    ------------------------------------------------
    
    그 다음으로 호스트 파일을 수정한다.
    vi /etc/hosts
    
    //적당한위치에 복사 붙여넣기 해준다. Ip는 multipass 인스턴스 생성된 아이피에 맞게 설정한다.
    # k8s hosts
    10.199.74.151 master-node
    10.199.74.142 worker-node1
    10.199.74.225 worker-node2

     

    위와같은 작업을 마스터 노드에 접속하여서도 진행해준다.

    대상은 마스터 노드 자신과 워커노드 2개를 대상으로 진행해준다.

    (ansible 원격접속 대상이 스스로도 해당됨)

    'DevOps > K8s' 카테고리의 다른 글

    K3S로 프로젝트 구성하기 - 3  (0) 2023.05.23
    K3S로 프로젝트 구성하기 - 2  (0) 2023.05.23
    K3S로 프로젝트 구성하기 - 1  (0) 2023.05.20
    Kubespray 우분투 서버환경 구성 - 2  (0) 2023.05.17

    댓글

Designed by Tistory.