본문 바로가기
보안 및 개발/Infra & Cloud

[k8s] GCP 환경에서 k8s 설치하기

by CH@3M 2022. 3. 18.

구글 클라우드 플랫폼의 무료 평가판을 이용하기 위한 계정을 만들었다.

구글 계정에 로그인 후 compute engine에 접속한다 (https://console.cloud.google.com/compute)

쿠버네티스 클러스터를 구성하기 위해 동일한 인스턴스 5개를 생성할 것이다. 다른 설정은 변경하지 않고, 부팅 디스크만 Ubuntu 환경으로 변경해 줄 예정이다.

나는 ubuntu 16.04 버전을 사용하였다. 

동일한 인스턴스를 총 5개 생성하였다.

마스터 노드인 instance-1 서버에서 다른 서버에 원격 접속(SSH)이 가능하도록 설정할 예정이다.

마스터 노드 #1에 접속한다. instance-1 오른쪽의 SSH를 눌러서 서버에 접속한다.

SSH 키를 생성하는 명령을 수행한다.  명령을 실행하면 키를 생성할 위치와 최초 생성할 비밀번호를 묻는데, 아무것도 입력하지 않고 엔터를 눌러서 기본 값으로 생성한다.

ssh-keygen -t rsa

키를 생성하면 ls -al .ssh/ 명령어로 확인할 수 있다.

cat .ssh/id_rsa.pub 명령어로 출력되는 키를 클립보드에 복사해 둔다. 

GCP에서 메타데이터 > ssh키 > 수정 > 복사해둔 키 추가 > 저장

이렇게 저장하면 등록한 공개 키를 생성한 모든 서버에 자동으로 배포한다. 다른 인스턴스에 들어가서 cat .ssh/authorized_key 명령어를 수행하면, 해당 파일 안에 이미 공개키가 배포되어 있는 것을 확인할 수 있다.

instance-1 에서 ssh instance-2 hostname 명령어를 쳐보면, 처음 접속할때는 핑거프린트를 남길 것인지 묻는다. 그러면 yes를 입력하고 엔터를 누른다. 결과로 호스트네임 응답이 출력되면 SSH 설정이 잘 이뤄진 것을 확인할 수 있다.

 

Kubespray 설치

마스터 노드 역할인 instance-1에서 수행한다. 

$sudo apt update
$sudo apt upgrade #우분투 패키지 매니저를 최신 상태로 업데이트

$sudo apt -y install python-pip  #pip 설치

$git clone https://github.com/kubernetes-sigs/kubespray.git

$cd kuberspray/
$git checkout -b v2.16.0
$git status
On branch v2.16.0
nothing to commit, working directory clean

$sudo pip install -r requirements.txt

requirements.txt를 설치해줄 때 에러가 발생해서 엄청 고생했다.

pip명령어 실행 시, syntax eroor 랑 /tmp/pip-build-n4bOh2/pip/가 없다는 에러같은게 많이 났었다.

나는 pip 버전을 아래 명령어로 업데이트 해주니 해결된 것 같다.

$curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py

$python get-pip.py

$sudo pip install --upgrade pip==20.3.4

해결 후 다시 requirements.txt를 설치해주면 ansible을 사용할 수 있게 된다.

$cp -rfp inventory/sample inventory/mycluster

$ls inventory/mycluster
group_vars	inventory.ini

$sudo apt install tree

$tree inventory/mycluster/group_vars/	#group_vars디렉터리 구조 확인 가능

$vi inventory/mycluster/inventory.ini

inventory.ini 환경 설정파일 수정 후 클러스터를 구성하는 명령 실행 (20분이상 소요)

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

 

 

반응형