쿠버네티스 테스트 환경구축

Joshua_s·2022년 8월 2일
0
post-thumbnail

쿠버네티스 환경

  1. ubuntu 20.04
  2. vmware workstation16

vm에 가상환경 세팅

세팅할때 기본적으로 ram 4GB이상 2코어 이상으로 세팅하는게 편합니다.

우분투 os를 설치 한 후 네트워크 세팅을 먼저 실시합니다.
네트워크 세팅은 설정으로 들어가서 고정 ip를 입력합니다.

고정 ip 설정이 완료되었다면 /etc/hosts와 /etc/hostname을 변경합니다.

sudo vi /etc/hosts

sudo vi /etc/hostname

이 두개를 변경하는데 기본적인 것은 node와 소통을 위한 부분입니다.

hosts

hostname

두가지의 설정이 완료되었다면 아래의 코드를 실행시킵니다.

sudo apt-get update
sudo apt-get install \
	openssh-server \
    vim \
    tree \
    ca-certificates \
    curl \
    gnupg \
    lsb-release -y
    
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  
sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

위에 코드들은 기본적인 설정에 필요한 파일이랑 docker를 설치하는 과정입니다. 자세한 사항은 docs를 확인하세요

sudo systemctl status docker
sudo docker run hello-world

설치가 완료되었다면 상기의 명령어로 도커를 실행이 되는지 확인하시고 docker rm 명령어로 테스트 파일를 지워줍니다.

이후에 vm의 클론 기능을 이용하여 node를 만들어줍니다. 이때 시스템을 종료하시고 클론을 하셔야합니다.

node를 만든 후에 각 노드에 맞게 네트워크 설정을 해줍니다.
저는 각각 130,131,132로 마스터, 노드1, 노드2를 만들었습니다.
위에서 진행한 대로 hosts와 hostname을 확인하시고 모든 설정이 끝났다면 메모리 절약을 위해 멀티유저 모드로 전환합니다.

sudo systemctl set-default multi-user.target

컴퓨터의 성능에 맞게 노드의 메모리도 줄여줍니다.

putty로 각각에 접근하여 ping test를 진행합니다.


정상적으로 수신하는 것을 확인할 수 있습니다.
이제 본격적으로 쿠버네티스를 설치할 시간입니다.
쿠버네티스는 기본적으로 공식 홈페이지에 설치 방법에 대한 가이드가 있습니다. 달라지는 경우도 있기 때문에 공식 홈페이지를 참조하는 것이 바람직합니다.
각 노드와 마스터에 아래의 코드를 실행시켜 쿠버네티스를 설치한다.

sudo swapoff -a && sudo sed -i '/swap/s/^/#/' /etc/fstab

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

sudo sysctl --system
sudo ufw disable

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

sudo systemctl daemon-reload
sudo systemctl restart kubelet

마스터 노드는 아래의 코드를 추가로 실행시킨다.

sudo rm /etc/containerd/config.toml
sudo systemctl restart containerd
sudo kubeadm init

최종적으로는 kubeadm join 192.168.146.130:6443 --token zx3x0p.prkjwuigxlva8jqj \
--discovery-token-ca-cert-hash sha256:ad2ee7cb9bf4378db184a79ed033711ddb9baf9e105142aaf3dfbcda9c08a81d
이것과 비슷하게 토큰이 생긴다.

아래의 코드를 실행시켜 모든 사용자가 kube 명령어를 사용할 수 있게 한다.

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

또한 pod간 네트워크 통신을 위해 weave net works 설치한다.

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

이제 노드로 이동하여서 아까 나온 토큰을 등록해주며 마스터와 연결한다.

sudo rm /etc/containerd/config.toml
sudo kubeadm join 192.168.146.130:6443 --token zx3x0p.prkjwuigxlva8jqj \
        --discovery-token-ca-cert-hash sha256:ad2ee7cb9bf4378db184a79ed033711ddb9baf9e105142aaf3dfbcda9c08a81d

마스터로 이동하여 노드들의 상태를 확인한다.

kubectl get nodes -o wide

또한 bash에서 kubectl 명령어를 더 쉽게 사용하기 위해 tab키로 자동완성기능을 추가한다.

source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc

이제 쿠버네티스의 기본적인 설정이 완료되었다

kubectl run nginx --image=nginx:1.14 --port=80
kubectl get pods -o wide

여러가지 실행 명령어를 이용하여 테스트를 진행해보면 됩니다.

마무리

k8s의 기본적인 부분과 명령어들을 익혀 후에 EKS를 활용 및 관리할 수 있도록!

profile
devops engineer가 되기 위해

0개의 댓글