Post

도커와 쿠버네티스 8: 쿠버네티스 실습 환경 구축

가상머신 복제

  • 쿠버네티스는 서버가 여러 대일 때 좀 더 효율적으로 운영할 수 있음 → 서버 세 대로 쿠버네티스 클러스터를 구축한 후 실습을 진행한다
    • 서버 대신에 노드라고 함
  • 노드 3대가 있게 ubuntu-server01를 두번 복제한다 photo 1
    • Include all network adapter MAC addresses를 선택하고 Full clone을 선택한다

호스트 이름 변경

  • 두 번째, 세 번째 가상머신의 호스트 이름을 바꿔준다 photo 2

IP 주소 변경

  • ifconfig을 통해서 server02의 IP 주소 확인 photo 3
    • server1과 똑같아서 바꿔야 된다
  • 아래와 같이 server02의 IP 주소를 바꿔준다 photo 4
  • sudo netplan apply 명령어를 실행해봤을 때 오류가 나와서 몇번까지 수정해봤는데 결국에는 포기해서 챗지피티한테 물어봐서 아래와 같이 받았다 photo 5
  • sudo netplan apply 실행하고 IP 주소 확인photo 6

    DNS 설정

  • /etc/hosts 파일을 수정한다 photo 7
  • ping 명령어를 이용하여 server01로 ping을 보내면 원활하게 작동하는 것 확인 photo 8
  • ssh server01 명령어를 이용하여 server01로 접속해봤을 때 잘 되긴 한다 photo 9
    • 이름 안 바꿔지만…

UFW 방화벽 설정

  • Uncomplicated FireWall: 리눅스 운영체제에서 작동하는 방화벽이다
  • ufw 상태 확인 photo 10
    • 상태는 inactive이라고 하면 방화벽 설정 과정은 생략해도 된다고 한다

네트워크 설정

  • IPv4를 포워딩하여 iptables가 연결된 트래픽을 볼 수 있게 한다 photo 11
    • tee: 출력을 두 곳으로 보낼 수 있는데, 한 곳은 tee 다음에 명시되어 있는 파일로 출력되고 다른 한 곳은 표준 출력(stdout)이다
      • tee 명령어를 활용하면 화면에 출력됨과 동시에 파일에 저장된다
    • overlay: 리눅스 커널의 네트워크 드라이버를 가리킨다
      • 서로 다른 호스트에 존재하는 파드 간의 네트워크 연결을 가능하게 하는 기술이다 → 여러 개의 독립적인 네트워크 레이어를 겹쳐서 하나로 연결된 네트워크를 생성한다
    • br_netfilter: 네트워크 패킥 처리 관련 모듈러로써 iptables/netfilter 규칙이 적용되게 한다
      • 컨테이너와 호스트 간의 인터페이스 등에서 발생하는 트래픽에 대해 규칙을 적용해 트래픽을 관리한다는 의미
    • EOF: 문서의 마지막이라는 뜻
  • 다음은 아래와 같은 명령어를 입력한다 photo 12
    • modprobe: 리눅스 커널 모듈 관리 도구 → 특정 모듈을 로드하거나 제거할 수 있는 도구
  • 그리고 sysctl 매개변수를 설정한다 photo 13
    • sysctl 매개변수를 설정하면 재부팅 후에도 값이 유지된다
    • 브릿지 네트워크 인터페이스에 대한 ipv4 트래픽이 iptables 규칙에 의해 처리되도록 만들어준다
    • 커널 처리하는 패킷에 대해 외부로 ipv4 포워딩이 가능하게 만들어 준다
  • 아래와 같이 입력하고 재부팅하지 않고 sysctl 매개변수를 적용할 수 있다 photo 14

containerd 설정

  • 아래 명령어를 입력한다
    1
    2
    
      sudo mkdir -p /etc/containerd
      containerd config default | sudo tee /etc/containerd/config.toml
    
    • 두번째 명령어를 입력해봤을 때 잘 안 되더라…
  • config.toml을 수정한다 photo 15
  • containerd 재시작하고 상태 확인 photo 16

swap 메모리 비활성화

  • 쿠버네티스 컨테이너를 원활하게 관리하려면 swap 메모리 영역을 비활성화해야 한다
  • swap 메모리가 할장되어 있는지 확인 photo 17
    • free -h 명령어를 통해 메모리 공간 확인
  • swap이 활성화 중인지 확인 photo 18
    • 존재해서 활성화되어 있대
  • swap 메모리를 비활성화한다 photo 19
  • 비활성화 중인지 다시 확인 photo 20
  • fstab 파일을 수정하여 /swap.img를 주석으로 처리한다 photo 21

쿠버네티스 설치

  • 쿠버네티스를 설치하기 전에 apt 패키지 목록을 업데이트하고 쿠버네티스에 한다 photo 22
    • 오류가 나오고 하루종일 고쳐보다보니 ubuntu-server01을 삭제하고 ubuntu-server02을 복제해봐야 겠다 photo 23
      • 성공쓰
  • signing 키 다운로드를 위해서는 필요한 디렉터리를 생성한 후 쿠버네티스 apt 리포지토리를 추가한다 photo 24
  • 구글 클라우드의 공개 signing 키를 다운로드한다 photo 25
  • 패키지를 업데이트해야 되는데 아래와 같은 오류가 나와서 이를 해결해야 겠다 photo 26
    • 지피티 쌤한테 물어보니까 kubernetes-xenial이 ubuntu 24랑 안 맞아서 대신에 kubernetes-jammy를 설치해야 되네 photo 27
      • 아직 안 된다. Kubernetes 사이트를 보니까 photo 28
      • Kubernetes 홈페이지를 참고해서 photo 29
        • 성공쓰
  • kubelet, kubeadm과 kubectl을 설치한다 photo 30
  • 아래와 명령어를 입력한다 photo 31
  • 버전 확인 photo 32

마스터 노드 설정

  • server01은 마스터 노드가 되고 server02은 워커노드가 되게 만든다
  • 쿠버네티스 인증서 상태 확인 photo 33
  • kubeadm이 사용할 수 있는 이미지 리스트 확인 photo 34
  • 이미지를 pull하겠다 photo 35
  • kubeadm을 사용해 초기화한다 photo 36
    • --apiserver-advertise-address: 쿠버네티스 마스터 노드의 IP 주소를 입력한다
    • --pod-network-cidr: 네트워크 대역을 설정할 수 있다
    • calico를 사용해서 192.168.0.0/16을 입력한다
    • 워커 노드와 마스터 노드를 연결하는 구문을 받는데 Notepad에 저장했다
  • 인증서 상태 다시 확인 photo 37
  • 사용자가 쿠버네티스를 활용할 수 있도록 쿠버네티스 설정을 저장할 새로운 디렉터리를 만든 후 기존 설정 파일을 새로운 디렉터리로 복사하고 설정 디렉터리의 소유자와 그룹을 변경해 현재 사용자가 사용할 수 있도록 변경한다 photo 38
  • calico로 네트워크를 설정해본다. 먼저 calico를 설치하기 위해 해당 URL에 존재하는 yaml 파일을 실행한다 photo 39
  • 필요한 커스텀 리소스를 설치한다 photo 40
  • 다운로드한 파일을 확인하고 이 파일을 활용하여 calico를 설치한다 photo 41
  • calico에 대한 파드가 실행 중인지 확인 photo 42
  • 구성되어 있는 노드 확인 photo 43

워커 노드 설정

  • server01에 있는 .kube/config을 server02로 복사한다 photo 44
  • 앞서 저장했던 구문을 활용하여 클러스에 노드를 추가한다 photo 45
  • 노드 확인 photo 46
  • server03도 추가하고 노드 확인 photo 47

쿠버네티스로 실행하는 Hello World!

  • 아래와 같이 입력한다photo 48

쿠버네티스 삭제 방법

  • 쿠버네티스를 삭제하는 방법이 아래와 같다 (실제로 안 했음)
    1
    2
    3
    
      sudo apt-get purge kubeadm kubectl kubelet
      sudo apt-get remove
      sudo rm -rf ~/.kube
    

    side note

  • 실습하다가 server01에서 server02나 server03로 잘 접속하지 않았는데 /etc/netplan에서 존재한 yaml 파일이 있어서 그거를 먼저 삭제하면 잘 되었고 puTTY에서도 잘 접속한다
This post is licensed under CC BY 4.0 by the author.

Trending Tags