[Retry, k8s] 01. 복습할 겸 쿠버네티스 클러스터 구성 (v1.26+cri-docker, Ubuntu 22.04)
카테고리: KUBERNETES
태그: kubernetes
[Retry, k8s] 01. 복습할 겸 쿠버네티스 클러스터 구성 (v1.26+cri-docker, Ubuntu 22.04)

🔔 복습할 겸 …
예전에 구글링, 블로그 요약 정리글 등을 찾아가면서 공부했던건데 최근에 쿠버네티스 책이 생겨서 복습할겸 다시 시작.
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
🔔 도커 설치
(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
댓글 남기기