3 min read

[k8s] Worker Node 추가 & 제거, pod 테스트

지난번 블로그에서 쿠버네티스를 설치 해봤고, Master Node 1개와 Worker Node 3개를 만들어 보았다. 이번에는 Worker Node를 한번 추가 해보고 Master Node와 연결 및 제거를 해보자. 쿠버네티스에서 Worker Node를 추가하는 이유는 클러스터의 확장성, 부하 분산, 고가용성 및 다양한 하드웨어 및 환경 지원을 위함이다. 이는 애플리케이션의 요구 사항에 따라 리소스를 효율적으로 확장하고 분산하여 안정적인 운영을 보장하는 쿠버네티스의 장점이라고 할 수 있다. 그리고 나서 Nginx로 테스트를 하면서 마무리를 해보려고 한다. 지난 블로그는 다음과 같다.

Worker Node 추가 & 제거

사전준비

GCE 추가 생성

Master Node를 추가 하기 위해 서버를 하나 만들어 두자. 지난 블로그를 보면 GCP에서 생성해둔 이미지가 있으니 그걸로 하나 만들면 된다. k8s-worker-3 까지 만들었으니 이번에는 k8s-worker-4로 생성하여 만들어 주자.

Master Node 세팅

k8s-worker-4라는 서버가 생성 되었으면 Master Node에서 다음의 커맨드를 입력하자.

kubeadm token create --print-join-command

그러면 다음과 같은 결과가 나오게 되는데 이를 복사해서 Worker Node로 넘어가자.

kubeadm join xx.xxx.x.xx:xxxx --token xxxxxx.xxxxxxxxxxxxxxxx --discovery-token-ca-cert-hash sha256:{토큰값}

Worker Node 세팅

이번엔 생성한 k8s-worker-4에서 해야 할일이다. 항상 중요한건 먼저 Root 권한과 메모리 스왑

su
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
swapoff -a

그리고 나서 이제 Master Node에서 생성된 값을 복사 해주면 된다.

kubeadm join xx.xxx.x.xx:xxxx --token xxxxxx.xxxxxxxxxxxxxxxx --discovery-token-ca-cert-hash sha256:{토큰값}

Master Node 에서 확인

그럼 이제 Master Node에서 k8s-worker-4가 잘 연결 되었는지 확인해보자. 다음의 커맨드를 입력한다.

kubectl get nodes

그러면 다음과 같이 k8s-worker-4가 추가 된것을 확인할 수 있다.

NAME           STATUS   ROLES           AGE    VERSION
k8s-master     Ready    control-plane   7d9h   v1.28.2
k8s-worker-1   Ready    <none>          7d8h   v1.28.2
k8s-worker-2   Ready    <none>          7d8h   v1.28.2
k8s-worker-3   Ready    <none>          7d8h   v1.28.2
k8s-worker-4   Ready    <none>          36m    v1.28.2

그리고 이제 워커 노드를 삭제하고 싶으면 다음의 커맨드를 입력하면 된다.

kubectl delete node k8s-worker-4

성공적으로 삭제 되었는지 확인해보자.

kubectl get nodes
NAME           STATUS   ROLES           AGE    VERSION
k8s-master     Ready    control-plane   7d9h   v1.28.2
k8s-worker-1   Ready    <none>          7d8h   v1.28.2
k8s-worker-2   Ready    <none>          7d8h   v1.28.2
k8s-worker-3   Ready    <none>          7d8h   v1.28.2

간단한 pod 추가

여기까지 간단하게 Worker Node를 추가 해봤으니 이제 Worker Node에 pod를 추가 해보자. Nginx를 추가 해서 확인해볼 예정이다. 우선 Master Node로 넘어가자.

Master Node 에서 다음의 커맨드를 입력해보자. 지금은 pod를 추가하는 간단한 테스트이고, 추후에 여러 kubectl 기본 명령어와 pod를 컨트롤 하는 내용을 조금씩 추가할 예정이다.

kubectl run pods-nginx --image=nginx:1.14

그러면 이제 nginx가 성공적으로 추가 되었는지 확인해보자. 다음의 커맨드를 입력한다. 여기서 ‘-o wide’ 를 뒤에 추가로 적어주면 더 자세하게 어떤 노드에서 nginx가 실행되는지 알 수 있다. 이는 물론 ’kubectl get nodes -o wide’에서도 사용가능 하다.

kubectl get pods -o wide

확인을 해보면 다음과 같이 ’k8s-worker-3’에 nginx가 추가 된것을 알 수 있다.

NAME         READY   STATUS    RESTARTS      AGE    IP          NODE           NOMINATED NODE   READINESS GATES
pods-nginx   1/1     Running   3 (47m ago)   7d8h   {내부 IP}   k8s-worker-3   <none>           <none>

간단하게 nginx가 잘 작동하는지 테스트 해볼 수 있는데 위 결과에서 {내부 IP}를 가지고 다음과 같이 커맨드를 입력하여 테스트 해보자.

curl {내부 IP}

다음과 같이 결과가 나오면 성공이다.

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

총평

지난번에는 쿠버네티스의 설치를 진행했고 이번에는 Worker Node를 컨트롤 하기 위해 추가 하고 삭제하는 방법을 알아 보았다. 또한 앞으로 pods도 컨트롤 하기 위해 간단하게 nginx도 pods에 추가 해보았다. 이렇게 하나씩 알아두었으니 다음에는 kubectl 의 기본 명령어와 k9s에 대해 알아보면 되겠다.