ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Kubernetes) AWS 기반 쿠버네티스 H.A 구축 프로젝트 1편
    Cloud/Kubernetes 2022. 10. 18. 00:34
    실습 환경 : AWS console (2022/10), Visual Studio Code
    실습 목적 : stacked etcd 방식의 고가용성(HA) 쿠버네티스 클러스터를 구성해본다.

     

    1. 템플릿 생성과 Node 생성


    (1) 템플릿 생성하기
        - 
    AWS Ec2메뉴 인스턴스 > 시작 템플릿, 시작 템플릭 생성 버튼 클릭
        #  1. 시작 템플릿 이름/설명 설정하기

        #  2. 애플리케이션 및 OS 이미지에서 Ubuntu, Ubuntu Server 20.04LTS 선택

        #  3. 인스턴스 유형은 t3.large, 키페어는 기존 키페어를 사용

        #  4. 서브넷은 기존 서브넷 사용, 연습용으로 모든 트래픽을 허용하는 보안그룹 생성

        #  5. 리소스 태그에 Name 태그 추가


    (2)  Masternode 생성하기
        -  인스턴스 > 인스턴스, 인스턴스 시작 에서 템플릿으로 인스턴스 시작 실행
        #  1. 시작 템플릿 선택에서 새로 생성한 템플릿 선택

        #  2. 추가 설정없이 인스턴스 시작

        #  3. Name 을 master node로 구분할 수 있게 변경

        #  4. master node에 EIP 연결

        #  5. master node의 호스트명 변경

    sudo hostnamectl set-hostname master1
    exit



    2. k8s 기본구성과 AMI 생성


    (1)  k8s 환경 구성 - containerd 설치
    sudo -i  (root shell)
    apt-get update && apt-get upgrade -y
    sudo modprobe overlay
    sudo modprobe br_netfilter
    
    sudo sh -c 'echo "br_netfilter" > /etc/modules-load.d/br_netfilter.conf'
    sudo sh -c 'echo "overlay" > /etc/modules-load.d/overlay.conf'
    
    cat << EOF | tee /etc/sysctl.d/kubernetes.conf
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    net.ipv4.ip_forward = 1
    EOF
    
    sudo sysctl --system
     
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
     
    apt install containerd -y


    (2)  k8s 환경 구성 - containerd 설정

    mkdir /etc/containerd
    containerd config default > /etc/containerd/config.toml
    vi /etc/containerd/config.toml

        -  config.toml 파일에서 disabled_plugins 앞에 # 추가

    (3)  k8s 환경 구성 - kubeadm, kubelet, kubectl 설치

    sudo sh -c "echo 'deb http://apt.kubernetes.io/ kubernetes-xenial main' >> /etc/apt/sources.list.d/kubernetes.list"
     
    sudo sh -c "curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -"
    
    sudo apt-get update 
     
    sudo apt-get install -y kubeadm=1.24.1-00 kubelet=1.24.1-00 kubectl=1.24.1-00

    (4)  AMI 생성
        -  인스턴스 > 인스턴스에서 master node 선택후, 작업 -> 이미지 및 템플릿 -> 이미지 생성




    3. master/worker node 생성


    (1)  AMI로 인스턴스 생성
        -  이미지> AMI에서 새로 생성한 AMI 선택 후, AMI로 인스턴스 시작 클릭
        #  1. 이름 및 태그 설정

        #  2. 인스턴스 유형, 키페어 설정 - t3.large, 기존 키페어

        #  3. 네트워크 설정 - 기존 VPC 선택, 퍼블릭 IP 자동할당, 모든 트래픽 허용 보안그룹 선택

        #  4. 요약 - 인스턴스 개수 3개 설정 후, 인스턴스 시작 클릭


    (2) master node와 worker node 설정
        #  1. 새로 생성된 3개의 인스턴스의 이름설정 - k8s-masterND2, k8s-masterND3, k8s-workerND1
        #  2. 각 노드의 host명 변경
    sudo hostnamectl set-hostname <host명>
    exit
       #  3. 모든 노드의 hosts 파일 수정
    sudo -i
    vi /etc/hosts
        -  master node, worker node의 hosts 파일 마지막줄에 노드의 private ip, 호스트명, alias를 등록한다.
        -  master node1은 private ip와 호스트명 사이에 k8s를 추가로 입력한다.




    4. cluster 구성하기


       #  1. cluster 구성 - kubeadm init

    kubeadm config images pull
    kubeadm init --kubernetes-version=1.24.1 --control-plane-endpoint="k8s:6443" \
    --pod-network-cidr=192.168.0.0/16 --upload-certs|tee /tmp/kubeadm.out


       #  2. cluster 구성 - CLI 설정 (calico Manifest 파일 다운로드)

    apt install -y wget
    wget https://docs.projectcalico.org/manifests/calico.yaml


       #  3. cluster 구성 - kubectl 권한 부여

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


       #  4. cluster 구성 - calico Manifest 파일 적용

    kubectl apply -f calico.yaml
    kubectl get po -A

       #  5. cluster 구성 - master node join
        -  cat /tmp/kubeadm.out 에서 join에 필요한 명령어를 찾을 수 있다.

    sudo -i
    kubeadm join k8s:6443 --token bix91i.tywzwfo5v6f934ds \
            --discovery-token-ca-cert-hash sha256:ba634fda72d4024a904ffde5a0ce536a04a5c225223e2f08a9ce36d1a9a8d886 \
            --control-plane --certificate-key e0cd99fe0b8325e5e8ff03499d61d1ebfd3584bf9434951c70bd52911345fbf1

       #  6. cluster 구성 - worker node join

    sudo -i
    kubeadm join k8s:6443 --token bix91i.tywzwfo5v6f934ds \
            --discovery-token-ca-cert-hash sha256:ba634fda72d4024a904ffde5a0ce536a04a5c225223e2f08a9ce36d1a9a8d886

       #  7. cluster 구성 - node 구성 확인

    kubectl get nodes



    댓글

Designed by Tistory.