-
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명 변경
# 3. 모든 노드의 hosts 파일 수정sudo hostnamectl set-hostname <host명> exit
- master node, worker node의 hosts 파일 마지막줄에 노드의 private ip, 호스트명, alias를 등록한다.sudo -i vi /etc/hosts
- 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
'Cloud > Kubernetes' 카테고리의 다른 글
Kubernetes) Kubernetes ReplicaSet (0) 2022.10.21 Kubernetes) AWS 기반 쿠버네티스 H.A 구축 프로젝트 2편 (1) 2022.10.18 Kubernetes) Kubernetes Volume (0) 2022.10.13 Kubernetes) Kubernetes Pod (0) 2022.10.13 Kubernetes) Kubernetes namespace 알아보기 (0) 2022.10.12