[Retry, k8s] 01. 복습할 겸 쿠버네티스 클러스터 구성 (v1.26+cri-docker, Ubuntu 22.04)

Date:     Updated:

카테고리:

태그:

[Retry, k8s] 01. 복습할 겸 쿠버네티스 클러스터 구성 (v1.26+cri-docker, Ubuntu 22.04)



ewewqewq


🔔 복습할 겸 …

예전에 구글링, 블로그 요약 정리글 등을 찾아가면서 공부했던건데 최근에 쿠버네티스 책이 생겨서 복습할겸 다시 시작.

https://github.com/revenge1005/Kubernetes-Study

[(ansible) k8s 클러스터 설치 Playbook] https://github.com/revenge1005/kubernetes_build_ansible_playbook


🔔 사전 준비

cat <<EOF >> /etc/hosts

192.168.219.10 k8s-master
192.168.219.101 k8s-node01
192.168.219.102 k8s-node02
EOF

# 방화벽 비활성화
{
  systemctl stop ufw.service; 
  systemctl disable ufw.service; 
  systemctl status ufw
}

# 스왑 메모리 비활성화
{
  swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab
  swapon -s
}

# br_netfilter 모듈을 로드
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

{ 
  modprobe overlay
  modprobe br_netfilter
}

# bridge taffic 보게 커널 파라메터 수정
# 필요한 sysctl 파라미터를 /etc/sysctl.d/conf 파일에 설정하면, 재부팅 후에도 값이 유지된다.
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

# 재부팅하지 않고 sysctl 파라미터 적용하기
sysctl --system


🔔 도커 설치

https://docs.docker.com/engine/install/

(1) Set up the repository

{
  apt-get update; apt-get -y install ca-certificates curl gnupg lsb-release
  mkdir -m 0755 -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
}

(2) Install Docker Engine

{
  apt-get update
  apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  systemctl enable docker
  systemctl start docker
}

# 설치 확인
docker run hello-world
docker version

(3) cri-docker

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

https://github.com/Mirantis/cri-dockerd

# 설치전에 최신버전인지 확인하셔서 최신버전으로 설치하세요.
#230301 에 확인한 버전은 0.3.1.3-0 입니다.
{
  wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.1/cri-dockerd_0.3.1.3-0.debian-bullseye_amd64.deb
  dpkg -i cri-dockerd_0.3.1.3-0.debian-bullseye_amd64.deb
  systemctl status cri-docker
}

ls -l  /var/run/cri-dockerd.sock
srw-rw---- 1 root docker 0 Mar  1 22:02 /var/run/cri-dockerd.sock


🔔 쿠버네티스 설치

(1) kubeadm 설치 - 모든 노드

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

{
  apt-get update; 
  apt-get install -y apt-transport-https ca-certificates curl
  curl -fsSLo /etc/apt/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
  echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
  apt-get update
  apt-get install -y kubelet kubeadm kubectl
  apt-mark hold kubelet kubeadm kubectl
  systemctl start kubelet
  systemctl enable kubelet
  systemctl status kubelet
}

(2) control-plan 설정 - k8s-master

# control-plaine(master) 컴포넌트 구성
kubeadm init --pod-network-cidr=192.168.0.0/16 --cri-socket unix:///var/run/cri-dockerd.sock

# Kubectl을 명령 실행 허용하려면 kubeadm init 명령의 실행결과 나온 내용을 동작해야 함
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

# kubeadm init 명령의 실행결과 나온 내용 별도 저장해둠. (root 권한으로 worker node join을 위한 명령어. 별도 저장해둠.)
vi token.join
kubeadm join 192.168.219.10:6443 --token 2whvdj...qbbib \
  --cri-socket unix:///var/run/cri-dockerd.sock \
  --discovery-token-ca-cert-hash sha256:7125...78570b57

(3) Installing a Pod network add-on - k8s-master

https://kubernetes.io/ko/docs/concepts/cluster-administration/addons/

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

kubectl get nodes

(4) Joining node - node01, node02

kubeadm join 192.168.219.10:6443 --token 2whv...bbib \
  --discovery-token-ca-cert-hash sha256:712538d8a5a...6a5078570b57 \
  --cri-socket unix:///var/run/cri-dockerd.sock


🔔 kubectl 명령어 자동 완성 설정

apt-get install bash-completion -y

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

source /usr/share/bash-completion/bash_completion


KUBERNETES 카테고리 내 다른 글 보러가기

댓글 남기기