웹사이트 검색

kubeadm을 사용하여 Ubuntu로 AWS EC2 인스턴스에 Kubernetes 클러스터 설정


이 페이지에서

  1. 전제 조건
  2. 우리가 할 일\n
  3. kubeadm으로 Kubernetes 클러스터 설정
  4. 결론:

이 기사에서는 Ubuntu 18.04 LTS 서버에서 2개의 작업자 노드와 1개의 마스터 노드로 Kubernetes 클러스터를 설정하는 방법을 살펴봅니다. "kubeadm" 도구를 사용하여 클러스터를 설정하겠습니다. Kubeadm은 Kubernetes 클러스터를 만들기 위해 "kubeadm init" 및 "kubeadm join"을 제공하도록 빌드된 도구입니다. 클러스터 생성을 진행하기 전에 몇 가지 용어를 간단히 이해해 보겠습니다.

    1. Docker:
      Docker는 애플리케이션 개발, 배송 및 실행을 위한 개방형 플랫폼입니다. Docker를 사용하면 애플리케이션을 인프라에서 분리하여 소프트웨어를 신속하게 제공할 수 있습니다. Docker를 사용하면 애플리케이션을 관리하는 것과 동일한 방식으로 인프라를 관리할 수 있습니다.\n
    2. 이미지:
      이미지는 Docker 컨테이너 생성 지침이 포함된 읽기 전용 템플릿입니다. 종종 이미지는 일부 추가 사용자 정의와 함께 다른 이미지를 기반으로 합니다.\n
    3. 컨테이너:
      컨테이너는 실행 가능한 이미지 인스턴스입니다. Docker API 또는 CLI를 사용하여 컨테이너를 생성, 시작, 중지, 이동 또는 삭제할 수 있습니다. 컨테이너를 하나 이상의 네트워크에 연결하거나 스토리지를 연결하거나 현재 상태를 기반으로 새 이미지를 생성할 수도 있습니다.\n
    4. Kubernetes:
      Kubernetes는 애플리케이션 배포, 확장 및 관리 자동화를 위한 오픈 소스 컨테이너 오케스트레이션 시스템입니다.\n
    5. 노드:
      노드는 클러스터의 단일 머신을 나타냅니다.
    6. 포드:
      A는 동일한 호스트에 함께 배포되는 컨테이너 그룹입니다. Kubernetes 애플리케이션의 기본 실행 단위입니다.\n
    7. 배포:
      배포는 애플리케이션의 여러 복제본을 실행하고 실패하거나 응답하지 않는 모든 인스턴스를 자동으로 교체합니다. Pod 및 ReplicaSet에 대한 선언적 업데이트를 제공합니다.\n
    8. 복제 세트:
      실행해야 하는 Pod의 복제본 수를 확인합니다. 복제 컨트롤러를 대체하는 것으로 간주할 수 있습니다.\n

    • 복제 컨트롤러:
      장기 실행 포드의 감독자입니다. 복제본이라고 하는 지정된 수의 포드를 시작하고 항상 계속 실행되도록 합니다.\n

    1. 서비스:
      Pod의 논리적 집합과 이에 액세스하는 정책을 정의하는 추상화입니다.

      \n

    API 서버, etcd, 컨트롤러 관리자 및 스케줄러는 마스터의 구성 요소이고 Docker, Kubelet 서비스 및 Kubernetes 프록시 서비스는 작업자 노드의 구성 요소입니다. 이 문서에서는 이러한 구성 요소에 대해 논의하지 않습니다. 이러한 구성요소에 대해 알고 싶다면 여기에서 Kubernetes의 공식 페이지를 방문하세요.

    전제 조건

    1. 3개의 Ubuntu 18.04 서버(최소 2GB RAM 및 2개 CPU 포함).\n
    2. 각 서버에서 "sudo" 액세스 권한이 있는 시스템 사용자.\n

    우리가 할 일

    1. kubeadm으로 Kubernetes 클러스터 설정

    kubeadm으로 Kubernetes 클러스터 설정

    여기,

    3개의 Ubuntu 18.04 LTS 서버가 있습니다.

    서버 1= 노드1
    서버 2= 노드2
    서버 3= 마스터

    실제 설치를 진행하기 전에 서버의 호스트 이름을 변경해 보겠습니다.

    다음 명령을 사용하여 각 서버에서 호스트 이름을 설정할 수 있습니다. 각 서버에서 다음 명령을 실행한 후 서버에 다시 로그인하여 서버가 새 호스트 이름을 얻도록 합니다.

    sudo hostnamectl set-hostname "master"
    sudo hostnamectl set-hostname "node1"
    sudo hostnamectl set-hostname "node2"

    아래에 언급된 단계에 따라 작동하는 Kubernets 클러스터를 불러옵니다.

    Docker gpg 키를 가져옵니다. (모든 노드에서 다음 명령 실행):

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

    Docker 저장소 추가(모든 노드에서 다음 명령 실행):

    sudo add-apt-repository    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
       $(lsb_release -cs) \
      stable"

    Kubernetes gpg 키 가져오기(모든 노드에서 다음 명령 실행):

    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

    Kubernetes 저장소 추가(모든 노드에서 다음 명령 실행):

    cat << EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
    deb https://apt.kubernetes.io/ kubernetes-xenial main
    EOF

    패키지 업데이트(모든 노드에서 다음 명령 실행):

    sudo apt-get update

    Docker, kubelet, kubeadm 및 kubectl(모든 노드에서 다음 명령 실행)을 설치합니다.

    sudo apt-get install -y docker-ce=18.06.1~ce~3-0~ubuntu kubelet=1.15.7-00 kubeadm=1.15.7-00 kubectl=1.15.7-00

    현재 버전 유지(모든 노드에서 다음 명령 실행):

    sudo apt-mark hold docker-ce kubelet kubeadm kubectl

    iptables 규칙을 sysctl.conf (모든 노드에서 다음 명령 실행)에 추가합니다.

    echo "net.bridge.bridge-nf-call-iptables=1" | sudo tee -a /etc/sysctl.conf

    즉시 iptables 활성화(모든 노드에서 다음 명령 실행:

    sudo sysctl -p

    마스터에서:

    클러스터 초기화 (마스터 노드에서만 다음 명령 실행):

    sudo kubeadm init --pod-network-cidr=10.244.0.0/16

    로컬 kubeconfig 설정(마스터 노드에서만 다음 명령 실행):

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config

    Flannel CNI 네트워크 오버레이 적용(마스터 노드에서만 다음 명령 실행):

    sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

    노드 1 및 노드 2:

    작업자 노드를 클러스터 에 가입(다음 명령 실행 Node1 및 Node2에서만):

    sudo kubeadm join 172.31.4.161:6443 --token 0y52t6.ffsj8jkjfcl1sq8h \
       --discovery-token-ca-cert-hash sha256:7aa1825042d19d3e567f7e4b447634e942fe9ed7f18f78464a9c05f451551ed5

    작업자 노드가 클러스터에 성공적으로 조인되었는지 확인마스터 노드에서 다음 명령을 실행):

    kubectl get nodes

    결론:

    이 기사에서는 kubeadm 도구를 사용하여 Kubernetes 클러스터를 설정하는 방법을 배웠습니다. 단계를 놓치지 않고 올바르게 설치하면 얼마나 쉽게 클러스터를 생성할 수 있는지 살펴보았습니다.