본문 바로가기

Automation/kubernetes

kubespray 로 쿠버네티스 설치하기 #1-사전준비

쿠버네티스를 설치하는 방법은 여러가지가 있다. 그 중 내가 직접 구성해본 방법은 5가지다.

 

  • Rancher로 K8S 클러스터를 구성하는 방법
  • kubespray로 K8S 클러스터를 구성하는 방법
  • kubeadm으로 K8S 클러스터를 구성하는 방법
  • MiniKube를 설치하는 방법
  • Terraform 템플릿으로 K8S 클러스터를 구성하는 방법

각각의 장단점이 있지만, kubeadm은 K8S를 구성할때 수동으로 구성 모듈을 하나 하나 설치해야해서 어려움이 있으나, 전체적인 구성요소를 이해하는데 장점이 있고, kubespray, MiniKube, Terraform은 설치가 매우 간단하다는 장점이 있다. Rancher의 경우 K8S를 Wrapping 프레임워크로 K8S에 대한 이해가 적어도 설치 운영이 가능한 장점이 있는 반면, 실 서비스로 운영 시 클러스터를 만들기 어렵고, 장애 대응이 쉽지 않았다.

 

오래 전 경험이지만 지금이라도 잊지 않도록 kubespary 로 k8s를 설치하는 방법을 간단하게 정리해본다. (다른 설치 방법도 계속 정리할 예정)


kubespray는 Ansible Playbook, Inventory, Provisioning Tool과 일반적인 운영체제, 쿠버네티스 클러스터의 설정 관리 작업에 대한 도메인 지식의 결합으로 만들어졌다. kubespray능 다음과 같은 기능을 제공한다. (쿠버네티스 공식 사이트 참고)

  • 고가용성을 지닌 클러스터 생성
  • 대부분의 리눅스 배포판 지원
  • 지속적인 통합(CI) 테스트

 

1. 환경 구성 정보
  • 노드 : 4 개
  • 노드 OS : CentOS 7
  • 도커 버전 : 18.09
  • kubespray 버전 : 2.11.0
2. Node 정보
서버구분 역할구분 호스트명 IP
노드 #1 MASTER ks.master 192.168.56.109
노드 #2 WORKER ks.worker01 192.168.56.110
노드 #3 WORKER ks.worker02 192.168.56.111
노드 #4 WORKER ks.worker03 192.168.56.112

 

3. 공통으로 작업할 것(모든 노드)

1. 모든 노드의 hostname을 2번 Node 정보와 같이 설정

 

2. 모든 노드의 보안 설정 변경

    echo 1 > /proc/sys/net/ipv4/ip_forward

    systemctl stop firewalld && systemctl disable firewalld

    sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux && cat /etc/sysconfig/selinux

    setenforce 0

    swapoff -a

 

4. 노드간 통신 설정

# 아래 작업은 모두 마스터 노드에서 작업할 것.

 

1. 마스터 노드 인증서 생성

    ssh-kegen -t rsa

 

2. 마스터 노드의 공개키를 워커 노드로 배포

    ssh-copy-id root@ks.worker01

    ssh-copy-id root@ks.worker02

    ssh-copy-id root@ks.worker03

 

3. 마스터 노드로 부터 워커 노드로의 접속 초기화

    ssh root@ks.worker01

    ssh root@ks.worker02

    ssh root@ks.worker03

 

4. 마스터 노드에 kubespray 다운로드

    cd /opt

    wget https://github.com/kubernetes-incubator/kubespray/archive/v2.11.0.tar.gz

    tar zxvf v2.11.0.tar.gz

 

이제 마스터 노드에 ansible, python, pip 등을 추가로 설치하고, ansible-playbook 으로 kubespray를 Deploy하면 된다.


한 페이지에 설치까지 다 정리하려고 했는데... 오늘은 정리 못할 것 같다.

kubespary 설치방법과 k8s 설치는 추가로 정리해야겠다.