Cloud/Kubernetes

Kubernetes) KubeAdm 으로 Kubernetes 구성해보기 2편

Adım Kim 2022. 10. 8. 01:01
실습 환경 : AWS console (2022/10), Visual Studio Code
실습 목적 : kubeadm을 이용하여 Kubernetes 환경을 구성해본다.

KubeAdm을 이용하여 Kubernetes 환경구성하기 (Docker)


kubeadm, kubectl, kubelet 설치


  # kubeadm : 클러스터를 부트스트랩 하는 명령
  # kubectl : 클러스터와 통신하기 위한 CLI
  # kubelet : 클러스터의 모든 머신에서 실행되는 Pod와 Container 시작과 같은 작업을 수행하는 component


1. 쿠버네티스 apt repository를 사용하는데 필요한 패키지 설치

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


2. 구글 클라우드의 공개 signing key를 다운로드

sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg \
https://packages.cloud.google.com/apt/doc/apt-key.gpg


3. 쿠버네티스 apt repository 추가

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


4. kubelet, kubeadm, kubectl 설치하고 해당 버전을 고정

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


5. 설치 확인

kubeadm version
kubelet --version
kubectl version


Worker Node 생성


1.  환경구성이 완료된 master node의 이미지 생성


2.  이미지로 master node와 동일한 구성으로 2개의 인스턴스 생성(worker node)



쿠버네티스 cluster 구성


(1)  master node에서 cluster 구성하기

sudo kubeadm init

 - sudo kubeadm init 명령에서 에러가 날경우 다음 명령어를 실행한다.

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

(2)  kubectl 명령 사용을 위한 환경 구성

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

    - 사진 아래쪽 kubeadm join 명령은 worker node에서 사용하기 위함으로 파일을 생성하여 저장,보관한다.


(3) cluster에 CNI 에드온 추가하기

kubectl apply -f \
https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml

  - weave net 플러그인 애드온 정보

https://www.weave.works/docs/net/latest/kubernetes/kube-addon/#install



worker node 연결


(1)  worker node에서 master node에 연결하기

sudo kubeadm join 10.0.1.110:6443 --token wm3u14.r6pmt0zwiqmgotrd \
        --discovery-token-ca-cert-hash sha256:efc1ec0692338ff768d7096b8aa73857eab397845bbd05f44d3bb0eec1509f56

  - kubeadm init 으로 확인한 토큰 정보를 worker node에 작성한다.
  - 나머지 하나의 worker node도 동일하게 명령어를 실행한다.


  - worker node 구성시 통신 오류가 발생한 경우
    1. 6443번 방화벽 확인
    2. master node kubeadm reset

# Master Node
sudo kubeadm reset
kubeadm init

# Worker Node (worker node에서 join에 대한 초기화가 필요한 경우)
sudo kubeadm reset

    - init 명령 후, 토큰내용을 확인 하고 worker node에 다시 join한다.


(2)  master node에서 두 worker node가 연결되었는지 확인

# Kubernetes 환경구성 확인
kubectl get nodes -o wide
kubectl get nodes
kubectl cluster-info
kubectl get pod --all-namespaces

  -  get nodes 명령에서 에러가 나는 경우 다음 명령어 실행 후, 다시실행

sudo systemctl daemon-reload
sudo systemctl restart kubelet



참고

    1. Kubernetes playground
      • docker에서 제공하며 docker hub 계정으로 로그인할 수 있다.
      • 하나의 세션에 대하여 4시간의 사용시간이 주어진다.
      • control-plane, work node를 직접 구성할 수 있다.
      • https://labs.play-with-k8s.com
    2. kubeadm
    3. kubectl 자동완성기능 적용
    4. kubeadm 자동완성기능 적용
      • source <(kubeadm completion bash)
      •  echo "source <(kubeadm completion bash)" >> ~/.bashrc
  1.  
 

[K8S] Kubernetes 설치시 오류 조치

[K8S] ## K8S 설치시 Trouble Shooting - kubeadm init 했는데 다음과 같이 나오는 경우 [wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory..

blusky10.tistory.com

 

[Kubernetes] 깔끔하게 kubeadm reset 하기

Prologue 클러스터를 잘못 구축했을 때, 이거 저거 생각할 필요 없이 클러스터를 날려버리고 싶었습니다. 단순히 kubeadm을 이용해 배포하는 단계부터 다시 시작하고 싶었기 때문입니다. 예전에 찾

wookiist.dev

 

 

kubeadm 설치하기 - on debian linux

설치환경 OS : Ubuntu 20.04.4 LTS(2 CPU, 4GB Memory) 시작하기 전에 호환되는 리눅스 머신. 쿠버네티스 프로젝트는 데비안 기반 배포판, 레드햇 기반 배포판, 그리고 패키지 매니저를 사용하지 않는 경우

yooloo.tistory.com