3.1.5 쿠버네티스 구성 요소의 기능 검증하기

estar987·2023년 9월 4일

Kubernetes

목록 보기
11/64

  • 쿠버네티스 클러스터의 정보를 kubectl이 알지 못해 명령을 실행해도 쿠버네티스의 노드들에 대한 정보가 표시되지 않습니다.
    Kubectl 은 API 서버를 통해 쿠버네티스에 명령을 내립니다.
    따라서 kubectl 이 어디에 있더라고 API 서버의 접속 정보만 있다면 어느 곳이든 쿠버네티스 클러스터에 명령을 내릴 수 있습니다.
  • [root@w3-k8s ~]# scp root@192.168.1.10:/etc/kubernetes/admin.conf .
  • [root@w3-k8s ~]# kubectl get nodes --kubeconfig admin.conf

    노드 정보가 정삭정으로 표시됩니다.
    kubectl 을 실행하려면 무엇이 필요한지 확인했습니다.

Kubelet

  • Kubelet은 쿠버네티스에서 파드의 생성과 상태 관리 및 복구 등을 담당하는 중요한 구성 요소입니다. 따라서 kubelet에 문제가 생기면 파드가 정상적으로 관리되지 않습니다.
  1. 파드 배포하기

    [root@m-k8s ~]# kubectl create -f ~/_Book_k8sInfra/ch3/3.1.6/nginx-pod.yaml

  2. 배포 상태 확인

    [root@m-k8s ~]# kubectl get pod

  3. 파드가 생성된 워커 노드 확인

    [root@m-k8s ~]# kubectl get pods -o wide

  4. 배포된 노드인 w2-k8s에 접속해 kubelet 서비스 멈추기

    [root@w2-k8s ~]# systemctl stop kubelet

  5. m-k8s에서 kubectl get pod로 상태를 확인하고 kubectl delete 명령어로 파드를 삭제합니다.

  1. 위의 delete 명령어를 ctrl c 로 종료 후 파드의 상태 확인

  2. w2-k8s에서 kubelet 재실행

  3. m-k8s에서 nginx-pod가 삭제됐는지 확인

kube-proxy

  • kubelet이 파드의 상태를 관리한다면 kube-proxy는 파드의 통신을 담당합니다.

파드 재배포
[root@m-k8s ~]# kubectl create -f ~/_Book_k8sInfra/ch3/3.1.6/nginx-pod.yaml

파드의 IP와 워커 노드 확인
[root@m-k8s ~]# kubectl get pod -o wide

확인한 파드의 ip를 이용하여 nginx 웹 서버 메인 페이지 내용을 확인


위의 워커 노드 확인 명령어에서 나온 w3-k8s 노드에 접속해 아래 명령어 입력
[root@w2-k8s ~]# modprobe -r br_netfilter

  • modprobe -r br_netfilter 명령으로 파드가 위치한 워커 노드에서 br_netfilter 모듈을 제거합니다.
    여기서 r은 remove를 의미합니다.

[root@w2-k8s ~]# systemctl restart network

  • 네트워크를 재시작해 변경된 내용을 적용합니다.
    이렇게 kube-proxy에 문제가 생기는 상황을 만듭니다.

w3-k8s 컨테이너에서 [root@w3-k8s ~]# modprobe br_netfilter 명령어를 다시 입력 후 재부팅합니다.
그 후 m-k8s에서 일정 시간이 지난 후 [root@m-k8s ~]# kubectl get pod -o wide 명령어로 다시 파드 상태를 확인합니다.

profile
System / Cloud / DevOps Engineer

0개의 댓글