0. 설치 환경 (단일 master node 환경)
OS : ubuntu 20.04.6 Container runtime : containerd 1.4.4 Kubernetes : 1.20.7 Network plugin : calico 3.17 |
1. containerd 설치 (master node, worker node 공통 설치 사항)
apt 로 containerd 를 설치 한 뒤 설치하고자 하는 버전을 overwrite 한다
이렇게 하는 이유는 apt-cache madison containerd 로 검색 했을때 1.4.4 라는 원하는
버전이 apt 저장소에 없기 때문임
apt-get install -y containerd
mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
systemctl stop containerd
curl -LO https://github.com/containerd/containerd/releases/download/v1.4.4/containerd-1.4.4-linux-amd64.tar.gz
tar xvf containerd-1.4.4-linux-amd64.tar.gz
rm containerd-1.4.4-linux-amd64.tar.gz
sudo cp bin/* /usr/bin/
sudo systemctl start containerd
rm -rf bin
sudo systemctl status containerd
#containerd 상태가 active 임을 확인 함
2. k8s 설치 (master node, worker node 공통 설치 사항)
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add
sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
sudo apt-get autoremove -y --allow-change-held-packages kubeadm kubelet kubectl
#만약 설치 되어 있는 패키지가 있다면 전부 삭제 하고 다시 설치함
#아래 내용은 순서대로 실행 해 주세요 (의존성 때문에 순서대로 안하면 꼬입니다.)
sudo apt-get install -y kubeadm=1.20.15-00
sudo apt-get install -y --allow-downgrades kubelet=1.20.15-00
sudo apt-get install -y --allow-downgrades kubectl=1.20.15-00
sudo apt-get install -y --allow-downgrades cri-tools=1.23.0-00
* 참고 사항 apt 저장소 에서 설치할 수 있는 패키지 버전을 확인 할 때는 apt-cache madison [package명] 예) apt-cache madison kubeadm 와 같이 apt-get install 로 설치 할 수 있는 버전을 확인 해봐야 함 |
sudo apt-mark hold kubeadm kubelet kubectl containerd
#버전을 홀딩함
#echo 'net.bridge.bridge-nf-call-iptables = 1' | sudo tee -a /etc/sysctl.conf
SOURCE_FILE="/etc/sysctl.conf"
LINE_INPUT="net.bridge.bridge-nf-call-iptables = 1"
grep -qF "$LINE_INPUT" "$SOURCE_FILE" || echo "$LINE_INPUT" | sudo tee -a "$SOURCE_FILE"
sudo echo '1' | sudo tee /proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/ip_forward
#1 값이 잘 들어갔는지 확인
sudo modprobe overlay
sudo modprobe br_netfilter
#커널 모듈 등록 명령
# overlay : file system과 관련있는 linux kernel 모듈
# br_netfilter : network 관련 linux kernel 모듈
sudo sysctl --system
#재부팅 없이 systemctl 파라미터 적용
sudo swapoff -a
#swap 사용 중지
sudo ufw disable
sudo systemctl stop ufw.service
#방화벽 사용 중지
sudo sed -ri '/\sswap\s/s/^#?/#/' /etc/fstab
#OS 재기동시 swap 설정
cat /etc/fstab
#swap 쪽 라인이 주석 처리 되었는지 확인 함
* 위의 1, 2 번은 master node, worker node 모두 설치 해주어야 합니다.
3. k8s master node 초기화 설정 (master node 만 실행)
sudo kubeadm config images pull --kubernetes-version 1.20.15
IP_ADDR=`hostname -I | awk '{print $1}'`
sudo kubeadm init --pod-network-cidr=10.0.0.0/24 --apiserver-advertise-address=${IP_ADDR}
#apiserver-advertise-address 는 단일 master node 이기 때문에 설정합니다.
#이렇게 하면
kubeadm join 192.168.101.144:6443 --token mvqxd4.c4w591tk4148q36f \
--discovery-token-ca-cert-hash sha256:bacc60f50b58905f6de8cd8cee0c21977a09922d0568a109a46ef6fe0fdde685
와 같이 worker node 에서 join 할 수 있는 명령어가 나옵니다. 나중에 worker node 에서 해당 구문을
실행 해줘야 합니다.
#안내에 나온대로 아래 명령어들도 실행 해 줍니다.
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
echo 'export KUBECONFIG=$HOME/admin.conf' >> $HOME/.bashrc
echo 'KUBECONFIG=/etc/kubernetes/admin.conf' >> $HOME/.bashrc
4. CNI (network plugin) 인 Calico 를 master node 에 설치
kubectl create -f https://docs.projectcalico.org/archive/v3.17/manifests/tigera-operator.yaml
curl https://docs.projectcalico.org/archive/v3.17/manifests/custom-resources.yaml -O
#vi custom-resources.yaml 에서 cidr 을 init 할때 생성한 녀석으로 변경 (10.0.0.0/24)
kubectl create -f custom-resources.yaml
kubectl get pod -A 와 kubectl get node 명령등으로 node 나 calico pod 가 정상 기동 되는지 확인
5. worker node 에 containerd, kubelet등 설치 후 kubeadm join
위의 1,2 번을 반복 하여 containerd, kubelet, kubeadm 등을 설치 한다
master node 설치 할때 나왔던 kubeadm join worker node 에서 실행 한다.
kubeadm join 192.168.101.144:6443 --token mvqxd4.c4w591tk4148q36f \
--discovery-token-ca-cert-hash sha256:bacc60f50b58905f6de8cd8cee0c21977a09922d0568a109a46ef6fe0fdde685
#위의 join 명령은 master node 에서 kubeadm init 실행 할 때마다 달라짐
master node 에서 아래 명령을 실힝 하면 worker node 가 붙은 것을 알수 있다.
'Kubernetes' 카테고리의 다른 글
kubeadm init 시 /var/lib/etcd is not empty (2) | 2023.05.01 |
---|---|
kubeadm 시 bridge-nf-call-iptables does not exist (0) | 2023.05.01 |
Unable to locate package update (kubeadm 에서) 발생 시 해결책 (0) | 2023.04.16 |
kubespray 로 kubernetes 설치 (ubuntu) (0) | 2023.03.31 |
[ Kubernates ] 쿠버네티스 설치 (centos) (0) | 2022.10.03 |
댓글