[데이터 플랫폼 운영 / 개발] - kubespray 활용 k8s cluster 구성하기

Chan hae OH·2024년 1월 2일
0

Kubernetes

목록 보기
2/3



1. 시작말


안녕하세요.

데이터 엔지니어링 & 운영 업무를 하는 중 알게 된 지식이나 의문점들을 시리즈 형식으로 계속해서 작성해나가며

새로 알게 된 점이나 잘 못 알고 있었던 점을 더욱 기억에 남기기 위해 글을 꾸준히 작성 할려고 합니다.

Kubernetes 의 경우 공식 문서와 구글링을 하여 작성하고 있습니다.
Kubernetes 를 활용하여 Trino, Spark, Airflow, Application(Gitlab, FastAPI 등) 들을 올려보고 해당 어플리케이션들을 최종적으로 운영할 수 있게 목표하고 있습니다.

반드시 글을 읽어 주실 때 잘 못 말하고 있는 부분은 정정 요청 드립니다.

저의 지식에 큰 도움이 됩니다. :)



2. Setup-tools


kubernetes 는 몇가지 setup-tool 을 제공하고 있습니다.
아직까지 공식적으로 내놓은 setup-tool 은 없으며 공식 doc 에서는 아래와 같이 소개하고 있습니다.

  • kubeadm

  • kops

  • kubespray

참고 : kubernetes 공식 Doc - Setup-tools

저는 해당 setup tool 들 중 아래 블로그 글을 읽어 본 후 kubespray 를 선택하였습니다.

참고 : kubernetes setup-tool 비교

우선 kops 의 경우 stack overflow 의 글과 같이 bare metal 에 지원하지는 않는 듯 합니다.

참고 : stack overflow - Installing K8s using kOps on local machine

그렇기 때문에 저는 kubeadm 과 kubespray 중 어떤 setup tool 을 활용할 지 고민 했습니다.

그 중 kubespray 가 ansible 과의 연동을 잘 지원한다고 적혀 있어 kubespray 를 통해 cluster 를 구성해볼 계획 입니다.

참고 : kubeadm vs kubespray



3. kubespray


참고 : kubespray 공식 Doc

Kubespray를 이용하여 GCE, Azure, OpenStack, AWS, vSphere, Equinix Metal(전 Packet), Oracle Cloud infrastructure 또는 베어메탈 등에서 운영되는 쿠버네티스 클러스터를 설치할 수 있습니다.

Kubespray는 Ansible 플레이북, 인벤토리, 프로비저닝 도구와 일반적인 운영체제, 쿠버네티스 클러스터의 설정 관리 작업에 대한 도메인 지식의 결합으로 만들어졌습니다. Kubespray는 아래와 같은 기능을 제공합니다.

Kubespray 지원 사항

  • 고가용성을 지닌 클러스터
  • 구성 가능 (인스턴스를 위한 네트워크 플러그인 선택)
  • 대부분의 인기있는 리눅스 배포판들에 대한 지원
    • Flatcar Container Linux by Kinvolk
    • Debian Bullseye, Buster, Jessie, Stretch
    • Ubuntu 16.04, 18.04, 20.04, 22.04
    • CentOS/RHEL 7, 8, 9
    • Fedora 35, 36
    • Fedora CoreOS
    • openSUSE Leap 15.x/Tumbleweed
    • Oracle Linux 7, 8, 9
    • Alma Linux 8, 9
    • Rocky Linux 8, 9
    • Kylin Linux Advanced Server V10
    • Amazon Linux 2
  • 지속적인 통합 (CI) 테스트



4. kubespray 준비 사항


  • 쿠버네티스는 최소한 v1.22 이상의 버전이 필요합니다.
  • Ansible의 명령어를 실행하기 위해 Ansible v2.11+, Jinja 2.11+와 Python netaddr 라이브러리가 머신에 설치되어 있어야 합니다.
  • 타겟 서버들은 docker 이미지를 풀(pull) 하기 위해 반드시 인터넷에 접속할 수 있어야 합니다. 아니라면, 추가적인 설정을 해야 합니다 (오프라인 환경 확인하기)
  • 타겟 서버들의 IPv4 포워딩이 활성화되어야 합니다.
  • 파드와 서비스에서 IPv6를 이용한다면, 대상 서버도 IPv6 포워딩이 활성화되어야 합니다.
  • 방화벽은 kubespray가 관리하지 않습니다. 사용자는 기존 방식으로 자신의 규칙을 구현해야 합니다. 배포 중에 만날 문제를 예방하려면 방화벽을 비활성화해야 합니다.
  • 만약 kubespray가 루트가 아닌 사용자 계정에서 실행되었다면, 타겟 서버에서 알맞은 권한 상승 방법이 설정되어야 합니다. 그 후에 ansible_become 플래그나 커맨드 파라미터들, --become 또는 -b 가 명시되어야 합니다



5. Ansible 설정


참고 : Ansible 설명 및 세팅

참고 : kubespray & ansible 활용 k8s 구성




profile
Data Engineer

0개의 댓글