kubernetes CKA study (32) - Introduction to Deployment with Kubeadm

이동명·2024년 1월 3일
0

kubernetes CKA study

목록 보기
32/37
post-thumbnail

Introduction to Deployment with Kubeadm

kubeadm

전에 얘기한 바와 같이, 쿠버네티스 클러스터는 kubeAPI서버, etcd, controller 등 다양한 컴포넌트로 구성됩니다. 그리고 우리는 이러한 컴포넌트 간의 통신을 가능하게 하기 위한 보안과 인증서 관련한 몇 가지 요구사항도 보았습니다. 이러한 다양한 컴포넌트를 각각의 노드에서 개별적으로 모두 설치하고 configuration file들을 수정하여 컴포넌트가 서로를 가리키는지 확인하고 인증서가 잘 작동하는지 확인하는 것은 지루한 작업입니다. kubeadm 툴은 이러한 모든 작업을 처리함으로써 우리에게 도움을 줍니다.

Steps

kubeadm 툴을 사용해서 쿠버네티스 클러스터를 설정하는 단계를 대략적으로 살펴보겠습니다.

첫째, 클러스터를 구성하기 위한 여러 시스템 또는 프로비저닝된 가상머신이 있어야 합니다. 우리는 랩탑에서 설정하는 방법을 볼 것입니다. 익숙하지는 않은 경우입니다. 시스템이 생성되면 하나의 노드를 마스터로 지정하고 다른 노드는 워커노드로 둡니다.

다음 단계는 호스트에서 컨테이너 런타임을 설치하는 것입니다. 우리는 도커를 사용할 것입니다. 따라서 모든 노드에 도커를 설치해야 합니다.

다음 단계는 kubeadm 툴을 모든 노드에 설치하는 것입니다. kubeadm 툴은 필요한 모든 컴포넌트를 올바른 노드에 올바른 순서로 설치하고 구성하는 쿠버네티스 솔루션 부트스트랩을 지원합니다.

다음 단계는 마스터를 초기화하는 것입니다.

이 과정을 통해 마스터 서버에 필요한 모든 컴포넌트가 설치되고 구성되었습니다. 마스터가 초기화되면, 워커 노드를 마스터에 결합하기 전에 네트워크 전제조건이 충족되었는지 확인해야 합니다. 시스템 간의 정상적인 네트워크 연결로는 충분하지 않습니다. 쿠버네티스에는 마스터 노드와 워커 노드 사이의 특별한 네트워킹 솔루션이 필요합니다. 이를 파드 네트워크라고 합니다.

마지막 단계는 워커 노드를 마스터 노드에 조인시키는 것입니다.

이렇게 쿠버네티스에서 우리의 애플리케이션을 시작하기 위한 준비가 완료되었습니다.

이후 강의는 kubeadm 의 설치내용이 담겨 있기에 테스트 문제로 기록 하도록 하겠습니다.


테스트 문제 기록

Install the kubeadm and kubelet packages on the controlplane and node01 nodes.(Use the exact version of 1.27.0-2.1 for both.)

컨트롤플레인과 node01 노드에 kubeadm 및 kubelet 패키지를 설치합니다.

https://kubernetes.io/docs/setup/production-environment/container-runtimes/

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

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

sudo modprobe overlay
sudo modprobe br_netfilter

# sysctl params required by setup, params persist across reboots
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

# Apply sysctl params without reboot
sudo sysctl --system

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl

sudo mkdir -m 755 /etc/apt/keyrings

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.27/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.27/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

sudo apt-get update

sudo apt-get install -y kubelet=1.27.0-2.1 kubeadm=1.27.0-2.1 kubectl=1.27.0-2.1

sudo apt-mark hold kubelet kubeadm kubectl


What is the version of kubelet installed?

kubelet --version

Initialize Control Plane Node (Master Node)

노드 초기화

kubeadm init --apiserver-cert-extra-sans=controlplane --apiserver-advertise-address $IP_ADDR --pod-network-cidr=10.244.0.0/16

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

Join node01 to the cluster using the join token

node01 join

kubeadm join 192.36.139.12:6443 --token ashkhk.fzmeyn2kgjg678xi \
        --discovery-token-ca-cert-hash sha256:7d9fb0202950a948280b89861a5fa9590706f10edd72d359d5c517c172fa8367

테스트 통과 완료


profile
Web Developer

0개의 댓글