쿠버네티스

mingg·2024년 1월 24일

쿠버네티스

목록 보기
1/9
post-thumbnail

Master/ Woker node 구축

1. 도커 설치

1. 도커 설치

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

2. 쿠버네티스 설치

kubeadm, kubectl, kubelet 설치

Installing kubeadm

#모든 노드에 다 해주세요!
systemctl start kubelet
systemctl enable kubelet

3. control plane

!! 마스터에서만 실행!!

kubeadm init <args>

위 명령어 실행전에 아래 명령어를 실행한 후 진행하세요.

  • swapoff -a
  • systemctl stop firewalld
  • systemctl disable firewalld

그러면
etcd뭐 이런거 다 생성된다!!!

후에 토큰이 나오는데 이건 저장해놔야함!!

cat > token.txt
복사 붙여넣기 해준다!
kubectl get nodes
#kubectl 사용허가
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

저장 해 둔 토큰은 워커로 사용할 노드에 복사 붙여놓기 해주면 마스터에서 노드 확인이 가능하다!

cni- installing a pod network add-on

cni?
컨테이너 간의 네트워킹을 제어할 수 있는 플러그인을 만들기위한 표준.

쿠버네티스에서 Pod간의 통신을 위해 CNI사용한다.
CNI는 calico, weavenet등 여러 플러그인이 있으니깐 그중 원하는 걸 사용하면 된다!
Integrating Kubernetes via the Addon

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

kubectl get nodes

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

이걸 해주면 원래 kubectl get nodes하면 not ready였는데 ready상태로 바뀐다!

그럼 마스터 노드 완료!
위엔 weavenet을 사용한거고 calico 사용하고 싶으면 아래 코드 사용하면 된다.

kubectl delete -f https://docs.projectcalico.org/manifests/calico.yaml
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
sudo systemctl restart kubelet

그럼 이렇게 노드를 마스터에서 확인했을때 추가된걸 볼 수 있다!!

not ready인게 ready가 될때까지 기다리면 된다

kubectl get pod -all-namespaces 

하면 컨테이너가 생성중이라서 아직 not ready인 거임!!

# bash-completion 패키지를 먼저 설치한 후, bash의 자동 완성을 현재 셸에 설정한다 자동 완성을 bash 셸에 영구적으로 추가한다
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc 

위 커멘드 해주면 리눅스에서 Tab키 누르면 자동완성 해주는것처럼 kubectl 명령어를 자동완성 해줌

kubectl을 kubeadm으로 바꿔서 root랑 사용자 계정 둘다 해줌

🚨 Trouble shooting

workernode가 계속 not ready상태이다

  • CNI 플러그인 확인
  • kublet status도 active 확인
  • 네트워크 연결성 확인
ping <API_SERVER_IP> 

worker node에서 master node kubectl get nodes -o wide 했을때 나오는 internal ip주소로 ping하는거

다 했는데 잘되어 있음

그렇다면 kublet 재시작을 해보자

sudo systemctl restart kubelet
profile
혼자 이것저것 해보는걸 즐깁니다..!

0개의 댓글