mingming

Kubernetes 설치하기 (Ubuntu 20.04) 본문

kubernetes

Kubernetes 설치하기 (Ubuntu 20.04)

mingming_96 2023. 8. 8. 03:47

우분투에 쿠버네티스 설치하기

OS : Ubuntu 20.04

Master Node 1대 , Worker Node 1대

 

1. 기본설정 

설치 편의를 위해 root 계정으로 전환하기 

sudo su -

우분투 22번 포트 허용 (원격접속)

ufw allow 22/tcp

 

2. 도커엔진 설치하기 

패키지 업데이트 및 도커 설치

# docker 설치를 위한 GPG 키 추가
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg


# 우분투 패키지에 Docker 저장소 추가 
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
  
 # docker 설치
 apt-get update
 apt-get install docker-ce docker-ce-cli containerd.io

 

도커 설치 확인 

systemctl status docker

 

 

3. Kubernetes 설치하기 

스왑 메모리 비활성화 (메모리 최적화)

# 스왑 메모리 비활성화
swapoff -a

# 스왑 공간 마운트 해제
sed -i '/swap/s/^/#/' /etc/fstab

 

k8s,conf 파일 iptable 설정

# ipv4, ipv6 네트워크 트래픽이 iptables를 통해 브릿지로 전달되도록 설정 

echo "net.bridge.bridge-nf-call-ip6tables = 1" | sudo tee /etc/sysctl.d/k8s.conf
echo "net.bridge.bridge-nf-call-iptables = 1" | sudo tee -a /etc/sysctl.d/k8s.conf
sudo sysctl --system

 

kubernetes 저장소 업데이트 

apt-get install -y apt-transport-https ca-certificates

# 쿠버네티스 패키지 저장소 추가 및 GPG 키 추가 
sudo curl -s /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF

# GPG 키 에러시 
sudo curl -s https://dl.k8s.io/apt/doc/apt-key.gpg | sudo apt-key add -

 

 

쿠버네티스 설치

apt-get update
apt-get install -y kubelet kubeadm kubectl 

systemctl daemon-reload
systemctl restart kubelet

 

Master Node

# Cluster 마스터 노드 초기화
kubeadm init

# config 파일 업데이트 
mkdir -p ~/.kube
cp -i /etc/kubernetes/admin.conf ~/.kube/config
chown $(id -u):$(id -u) ~/.kube/config

# kubeadm init 시 container 충돌오류시 해결방법
rm /etc/containerd/config.toml
systemctl restart containerd

 

kubeadm init 시 생성되는 토큰 값 기록해놓기!! 

kubeadm join 192.168.45.200:6443 --token 93bz2r.rq0873828nx50bcy \
        --discovery-token-ca-cert-hash sha256:

 

Worker Node

kubeadm join 192.168.45.200:6443 --token 93bz2r.rq0873828nx50bcy \
        --discovery-token-ca-cert-hash sha256:
        
# Container 충돌 오류시 
rm /etc/containerd/config.toml
systemctl restart containerd

 

클러스터 조인이 성공적으로 됐는지 확인 

 

4. CNI 연결하기

 

 

kubectl get nodes 

kubectl get pods -A

CNI 연결을 하기 전엔 이런상태인 것을 확인할 수 있습니다. 

 

Weavenet 연결 

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

정상가동되는걸 확인할 수 있습니다. 

 

테스트 pod 배포하기 

kubectl create deployment nginx --image=nginx --port=80 --replicas=2

nginx 웹서버가 정상적으로 작동중인 것을 확인할 수 있습니다. 

 

글을 마치며 

쿠버네티스 설치과정에서 CNI 연결 과정이 가장 힘들었는데  

coreos 

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

flannel

kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

 

처음 이 두개의 CNI로 연결을 시도해봤는데 정상작동하지 않았다. 대충 로그를 확인해 봤을 때 에러 원인은 

cidr 블록을 지정해주지 않아서 그렇다는데 

kubeadm init --pod-network-cidr=10.244.0.0/16

init 할 때 cidr 블록을 지정해주면 해결되긴 했지만, 파드가 정상적으로 배포되지는 않는 에러가 있었다 

대략 세달전의 기억이라 가물가물하지만 기회가 된다면 다시한번 시도해보려고 한다. 

'kubernetes' 카테고리의 다른 글

Kubernetes 컴포넌트  (0) 2023.08.14
kubernetes 동작원리  (1) 2023.08.13
kubernetes 연습장  (0) 2023.08.13
EKS 클러스터 배포하기 (Terraform)  (0) 2023.08.11
EKS 클러스터 배포하기 (eksctl 명령어)  (0) 2023.08.09