이전까지 모든 노드들에게 공통 사항으로 적용될 작업을 해주어 템플릿을 만들고 해당 템플릿으로 마스터노드1개, 워커노드 2개로 노드들을 생성해 고정 아이피와 hostname을 지정해주는 작업까지 진행해주었습니다.
이번 시간에는 해당 노드들로 쿠버네티스 클러스터를 구성해보겠습니다.
마스터노드를 설정하다 다시 처음으로 리셋시키고 싶다면 모든 노드에 kubeadm reset
명령어를 수행하면 됩니다. 수행 전에 모든 노드에 $HOME/.kube
디렉토리를 전부 삭제해주고 진행해주세요.
(이 명령어는 CNI 설정까지 초기화해주지는 않습니다.)
sudo kubeadm init
이 명령어를 이용해 마스터노드를 세팅합니다. kubeadm init은 마스터노드에서만 해야합니다 !
만약 이와 같은 에러가 뜬다면 스왑off 설정이 제대로 이루어지지 않은 것이므로 확인해야합니다.
그럼에도 이와같은 에러가 뜬다면 다음 아래의 명령어를 차례대로 수행합니다.
sudo rm /etc/containerd/config.toml
sudo systemctl restart containerd
sudo kubeadm init
성공할경우 다음과 같이 뜨게 됩니다. 다음 작업을 수행해달라고 안내하고 있습니다.
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
또한 각각의 워커노드에서 다음을 실행해달라고 하네요. join 명령어로 클러스터에 합류하는 명령어입니다. 아래의 명령어는 마스터노드에서 하는 게 아니고 워커노드에서 실행해야합니다.
kubeadm join 192.168.2.128:6443 --token 0rn4ne.9kqi16tyu246vf6m \
--discovery-token-ca-cert-hash sha256:6adfe80c64d48b4da3f172dcdb0e772db77935fc3a2d044fadb936e499975fc3
sudo kubeadm join 192.168.2.128:6443 --token 0rn4ne.9kqi16tyu246vf6m \
--discovery-token-ca-cert-hash sha256:6adfe80c64d48b4da3f172dcdb0e772db77935fc3a2d044fadb936e499975fc3
마스터 노드에서 init 시 안내됐던 join 명령어를 복사해서 워커노드들에서 실행합니다.
이게 뜬다면 아래의 명령어를 수행 후 작업합니다.
sudo rm /etc/containerd/config.toml
sudo systemctl restart containerd
join에 성공하면 다음과 같은 메시지가 뜹니다. 마스터노드에서 해당 명령어를 쳐서 노드가 정상적으로 조인됐는지 확인해봅시다.
kubectl get nodes
마스터노드에서 다음과 같은 명령어를 쳤더니 아래와 같이 노드가 잘 확인되는 것을 알 수 있습니다.
하지만 STATUS가 NotReady입니다. 왜냐하면 Pod network 구성이 이루어지지 않았기 때문입니다.
마스터노드에서 init할 때 뜨는 메시지를 보니 클러스터에 링크로 제공된 사이트에서 리스트를 확인해서 알맞는 pod network를 deploy 해야한다고 떴었네요.
마스터노드 init 시 제공됐던 링크 https://kubernetes.io/docs/concepts/cluster-administration/addons/ 로 들어가서 여러 플러그인 중 weave net을 사용해보겠습니다.
클릭합니다.
복사해서 마스터노드에 붙여넣기해서 deploy합니다.
다음과 같이 모든 노드의 상태가 Ready로 바뀌며 정상적으로 클러스터 구성이 된 것을 확인할 수 있습니다.
nginx를 띄워보고 브라우저로 접속까지 확인하였습니다.
인프런 - 데브옵스(DevOps)를 위한 쿠버네티스 마스터
성공 할 경우 수행 하는 작업은 일반 계정으로 하면 되나요?