Version
- Ubuntu 20.04
- Docker 24.0.5
- kubernetes 1.28.0
※ Master 1대 Woker 2대
1. 전부 root 계정으로 시작한다.
sudo -i
2. 모든 서버 Hostname 변경
변경 안 할 시 node 등록할 때 에러 발생
# Master server 1
hostnamectl set-hostname Master
# Worker server 1
hostnamectl set-hostname Node1
# Worker server 2
hostnamectl set-hostname Node2
3. Docker 설치 (Master, Woker 전부 진행)
apt-get update
apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update
# 도커까지 설치
apt-get install docker-ce docker-ce-cli containerd.io
# containerd만 설치할경우
apt-get install containerd.io
모든 서버에 설치 후 Docker Version 확인
docker version
4. Kubernetes (k8s) 설치 (Master, Worker 전부 실행)
swapoff -a && sudo sed -i '/swap/s/^/#/' /etc/fstab
iptable 설정
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
kubectl, kubeadm, kubelet 설치
(2024.03.12 기준 https://kubernetes.io/blog/2023/08/15/pkgs-k8s-io-introduction/#how-to-migrate 해당URL을 보고 curl 과 deb 설정한다)
apt-get update
apt-get install -y apt-transport-https ca-certificates curl
curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg| gpg -o /usr/share/keyrings/kubernetes-archive-keyring.gpg --dearmor
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
apt-get update
apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl
systemctl daemon-reload
systemctl restart kubelet
5. kubeadm init (Master에만 진행)
kubeadm init 실행시 아래 에러 발생
unix:///var/run/containerd/containerd.sock\": rpc error: code = Unimplemented desc = unknown service runtime.v1.RuntimeService"
참고 : https://kubernetes.io/docs/setup/production-environment/container-runtimes/
(Configuring the systemd cgroup driver의 Note 부분 참고)
해당 작업만 모든 서버(Master, Worker에서 진행)
# 해당작업만 모든 서버(Master, Worker)에서 진행
containerd config default > /etc/containerd/config.toml
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml
systemctl restart containerd
작업 후 아래 명령어 진행
kubeadm init
정상적으로 성공할 경우 아래 값 반환 해당값 메모장에 임시 저장
kubeadm join 192.x.x.x:6443 --token c5l89v.9ao1r5texepx06d8 \
--discovery-token-ca-cert-hash sha256:50cb3eaxe334612e81c2342790130801afd70ddb9967a06bb0b202141748354f
모든 User를 위해 명령어 등록
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
6. Pod Network 설치 (Master에서만 진행)
https://cloud.weave.works 서버가 이상하므로 github에서 다운받는다. 현재 작성일 기준 2.8.1이 최신
kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s-1.11.yaml
7. Node 등록 (Woker에서만 진행)
5번에서 저장한 kubeadm join 입력
kubeadm join 192.x.x.x:6443 --token c5l89v.9ao1r5texepx06d8 \
--discovery-token-ca-cert-hash sha256:50cb3eaxe334612e81c2342790130801afd70ddb9967a06bb0b202141748354f
8. Master에서 확인
Master에서 아래 명령어 실행
kubectl get nodes -o wide
해당 가이드대로 진행하였으면 아래 사진에서 ubuntu -> master로 나와야함