데브옵스(DevOps)를 위한 쿠버네티스 마스터/쿠버네티스 들어가기

우분투 환경에 클러스터 설치

webmaster 2022. 6. 4. 13:14
728x90

쿠버네티스 우분투에 설치

 

Installing kubeadm

This page shows how to install the kubeadm toolbox. For information on how to create a cluster with kubeadm once you have performed this installation process, see the Using kubeadm to Create a Cluster page. Before you begin A compatible Linux host. The Kub

kubernetes.io

kubernetes를 관리하는 명령어 

  • kubeadm: 클러스터를 부트스트랩 하는 명령 
  • kubelet: 클러스터의 모든 시스템에서 실행되는 구성 요소로, 창 및 컨테이너 시작과 같은 작업을 수행 
  • kubectl: 커맨드 라인 util은 당신의 클러스터와 대화

Master 노드 초기화 (마스터 노드에서만 할 것!)

  • Master 노드를 초기화를 가장 먼저 수행 (사용할 파드 네트워크 대역을 설정) 
    • sudo kubeadm init 
  • 스왑 에러 발생 시 스왑 기능 제거
    • sudo swapoff -a // 현재 커널에서 스왑 기능 끄기 
    • sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab // 리붓 후에도 스왑 기능 유지 
  • Kubernetes에서 스왑을 비활성화하는 이유 
    • Kubernetes 1.8 이후, 노드에서 스왑을 비활성화해야 함(또는 --fail-swap-on을 false로 설정) 
    • kubernetes의 아이디어는 인스턴스를 최대한 100%에 가깝게 성능을 발휘하는 것 
    • 모든 배포는 CPU/메모리 제한을 고정하는 것이 필요 
    • 따라서 스케줄러가 파드를 머신에 보내면 스왑을 사용하지 않는 것이 필요 
    • 스왑 발생시 속도가 느려지는 이슈 발생 
    • 성능을 위한 것

클러스터를 사용 초기 세팅(마스터 노드에서만 할 것!) 

다음을 일반 사용자 계정으로 실행 (콘솔에 출력된 메시지를 복붙) : kubectl 명령어 사용 가능

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

 Pod Network 추가

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

이것을 잘해야 노드 추가 명령어가 잘 실행됩니다!

워커 노드 추가 (워커 노드에서만 할 것!)

  • 앞서 설치한 대로 쿠버네티스 설치
  • init 명령어 전까지만 수행(init 명령어 실행하지 마세요) 
  • 이후 각 노드에서 관리자 권한으로 워커 노드를 참가 시킴 (콘솔에 출력된 메시지를 복붙) 
sudo kubeadm join 10.0.2.15:6443 --token xwvbff.5xc67j8qc6ohl2it \ 
--discovery-token-ca-cert-hash sha256:e19e9263aeb2340a602c2057966b71551e01a5e287d3f23b05073c7b248932e1

연결된 노드들의 상태 확인

kubectl get nodes
  • STATUS 값이 NotReady 상태인 경우, Pod Network가 아직 deploy 되기 전일 수 있음 
  • 장시간 기다려도 변경되지 않으면 앞에서 설정한 “Pod Network 추가” 과정이 잘못됐을 수 있음

클러스터 구성도 

쿠버네티스 클러스터 구성도

실습하기

1. VMware workstation 다운로드

https://www.vmware.com/kr/products/workstation-pro/workstation-pro-evaluation.html

2. 고정 IP 변경(netplan)

2-1. sudo vim /etc/netplan/00-installer-config.yaml로 파일 열기

2-2. 설정 변경

dhcp, gateway, addresses,nameservers 속성 변경

2-3 addresses 는 할당된 VMware의 IP주소의 뒷자리 변경

window의 cmd 창을 열어 ipconfig 검색 후 할당된 VM 주소의 address로 적용

cmd 창을 IPConfig 명령어를 통해 VM에 할당된 값 사용

gateway 같은 경우 VMworkstation 접속 후, Edit -> VirtualNetworkEditor 접속 후,

VirtualNetworkEditor

Nat settings -> gatewayIp 확인 후 적용

gateway 확인

2-4 sudo netplan apply로 적용

2-5 shutdown -h now , ssh 접속

ID : user01

PW : test1234 

로 접속

3. docker 설치

sudo -i #root 접근
apt update & apt install docker.io -y #도커 설치

4. Kubeadm 설치하기

4-1. 구글에 kubenetes install 검색 후 해당 페이지 접속

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

 

kubeadm 설치하기

이 페이지에서는 kubeadm 툴박스 설치 방법을 보여준다. 이 설치 프로세스를 수행한 후 kubeadm으로 클러스터를 만드는 방법에 대한 자세한 내용은 kubeadm을 사용하여 클러스터 생성하기 페이지를 참

kubernetes.io

4-2. 런타임 설치의 명령어 shell에 작성

데비안 기반 베포판의 순서대로 복사 하여 저장

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

4-3 shell 작성 후 실행(문제 발생시 curl 문제가 큼으로, apt install curl 명령어 실행)

vim kube_install.sh
#붙혀넣기
bash kube_install.sh #작성한 셸 실행

5. swap 을 비활성화 

공식 문서의 swap 사용하지 않도록 설정하라고 한다.

5-1. 구글에 ubuntu swap disable 검색

https://askubuntu.com/questions/214805/how-do-i-disable-swap

 

How do I disable swap?

I have some sensitive data in RAM that I prefer not to be on disk. How do I disable swap? I have more than enough RAM. If RAM consumption gets too high I have no problems with processes being term...

askubuntu.com

5-2 명령어 실행

sudo swapoff -a  #일시적인 swap 기능 정지, reboot시 swap이 다시 동작
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab #reboot시에도 swap 동작 X

6. kubenetes 1.2 이상 버전부터 쿠버네티스에서 사용하는 컨테이너의 그룹명과 도커의 그룹명이 일치하지 않아 발생하는 문제 해결

6-1. 구글에 docker cgroup name change 검색

https://stackoverflow.com/questions/43794169/docker-change-cgroup-driver-to-systemd

 

docker change cgroup driver to systemd

I want Docker to start with systemd cgroup driver. For some reason it is using only cgroupfs on my CentOS 7 server. Here is startup config file. # systemctl cat docker # /usr/lib/systemd/system/doc...

stackoverflow.com

6-2. 명령어 실행

docker info | grep -i group #cgroupfs 로 설정이 되어 있고, 이걸 systemd로 변경하여 쿠버네티스와 맞춰야한다.
vim /etc/docker/daemon.json
######## 붙여넣기######
{
  "exec-opts": ["native.cgroupdriver=systemd"]
}
########################
service docker restart #도커 재실행
docker info | grep -i group #systemd로 변경된 것을 확인하면 된다.
728x90