[Kube] 설치 및 환경설정
1. 잡담
새로운 기술이 나온지 오랜 시간이 흐른것 같은데, 손도 안대보고 있어서 주변의 추천을 받아 공부를 해보기로 했다.
보안,개발 가리지 않고 신 기술이라고 하면 관심을 가져야 했는데 바쁘다는 핑계로 귀찮다는 핑계로 이리저리 넘기던 것을 한번 해 보기로 했다.
어차피 이 글을 읽는 사람들은 미래의 나 자신이거나 나처럼 뒤늦게 공부를 하려는 사람이기 때문에 본론으로 바로 들어가도록 하자. 우선 필요한 준비물은 다음과 같다.
- 준비물
- VM ware
- Ubuntu 18.04 ( 버전이 높아도 상관없지만, 이 버전을 기준으로 진행할 예정)
- 최소 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
여기까지 해서 설치 끝