[Kube] 설치 및 환경설정

1. 잡담

새로운 기술이 나온지 오랜 시간이 흐른것 같은데, 손도 안대보고 있어서 주변의 추천을 받아 공부를 해보기로 했다.
보안,개발 가리지 않고 신 기술이라고 하면 관심을 가져야 했는데 바쁘다는 핑계로 귀찮다는 핑계로 이리저리 넘기던 것을 한번 해 보기로 했다.

어차피 이 글을 읽는 사람들은 미래의 나 자신이거나 나처럼 뒤늦게 공부를 하려는 사람이기 때문에 본론으로 바로 들어가도록 하자. 우선 필요한 준비물은 다음과 같다.

- 준비물

  1. VM ware
  2. Ubuntu 18.04 ( 버전이 높아도 상관없지만, 이 버전을 기준으로 진행할 예정)
  3. 최소 4GB이상의 가상머신을 3개 할당할수 있는 사양의 컴퓨터

2. 설치

VMware로 Ubuntu이미지를 만들고 실행하는 것 까진 과감히 생략한다. 찾으면 많이 나오기도 하고.. 우선 쿠버네티스의  구성 단위인 클러스터를 개략적인 모습으로 보자.

그림을 대충 보면 알수 있듯이, Docker가 필수다. 그럼 우선 Docker부터 설치하자. Root계정이 필요하다

#WORK IN MASTER/WORKER NODE
apt-get update
apt-get upgrade
apt-get install docker.io containerd

이후 SSH를 설치해야 한다. 이는 Master, Worker 상관없이 해 주어야 하므로 N번의 작업이 필요할 수도 있다. 18.04 버전의 Ubuntu에는 ifconfig를 실행할 수 있는 바이너리가 없으므로, net-tools도 설치해주자.

#WORK IN MASTER/WORKER NODE
apt-get install openssh-server
apt-get install net-tools

SSH를 활용하기 위해 Key를 만들고 신뢰가능한 서버에 배포하는 작업도 진행한다. 이 작업을 하고 나면 ssh로 해당 IP에 접근할때 password를 묻지 않는다. 이는 추후 있을 설치과정에도 영향을 미치니 꼭 해주도록 하자.

#WORK IN MASTER NODE
ssh-keygen -t rsa
ssh-copy-id root@MASTER_NODE_IP
ssh-copy-id root@WORKER_NODE1_IP
..

기본적으로 root의 SSH사용은 막혀 있으니, 설정을 변경해서 접속가능하게 해 주면 좀 더 편하게 작업을 할 수 있다.

#WORK IN MASTER/WORKER NODE
vi /etc/ssh/sshd_config
#PermitRootLogin prohibit-password -> PermitRootLogin yes
service ssh restart

찾아보니 여러가지 설치도구들이 있지만, 여기서는 Kubespray를 사용해서 설치할 것이다. 공개된 github에서 최신버전을 받을 수 있다.

#WORK IN MASTER NODE
git clone https://github.com/kubernetes-sigs/kubespray

kubespray는 ansible을 기반으로 설치를 진행한다. 이에 관한 설정파일을 수정해주고 바이너리를 실행시키면 설치를 해준다. 설정파일은 kubespray/inventory/sample/inventory.ini을 참고하면 된다.

#ALL 에는 모든 노드에 대한 정보를 적어주면 된다. MASTER, WORKER 구분없이
[all]
masternode ansible_host=MASTERNODE_IP  ip=MASTERNODE_IP etcd_member_name=etcd1 #etcd는 MasterNode만!!
workernode1 ansible_host=WorkerNODE1_IP ip=WorkerNode1_IP 
workernode1 ansible_host=WorkerNODE2_IP ip=WorkerNode2_IP 
...

# ## configure a bastion host if your nodes are not directly reachable
# 배스쳔 호스트가 있으면 설정. 본 예제에는 없기때문에 주석
# [bastion]
# bastion ansible_host=x.x.x.x ansible_user=some_user

#kube_control_plane은 보통 masterNode만 적어주면 된다.
[kube_control_plane]
masternode

#etcd를 가진건 masterNode이므로, masterNode를 적어주면된다
[etcd]
masternode

#모든 WorkerNode를 나열해주면된다.
[kube-node]
workernode1
workernode2

#이하 아래 옵션들은 손대지 않아도 무방함.
[calico-rr]

[k8s-cluster:children]
kube_control_plane
kube-node
calico-rr

ansible을 실행하려면 pip를 사용하여 필요한 라이브러리를 설치해 주어야 한다. 이후 완료되었다면 ansible까지 실행하도록 하자

pip3 install -r requirements.txt
ansible-playbook -i inventory/sample/inventory.ini --timeout=120 cluster.yml

여기까지 해서 설치 끝

Posted by IzayoiSakuya
,