공부하기싫어
article thumbnail
Published 2022. 11. 2. 19:18
kubernetes 환경 재설치 Kubernetes

구름 국비지원에서 줬던 AWS 아이디가 있는데

이거 한달에 20인줄알고 펑펑쓰다가

계정 짤려가지고 내 아이디로 kubernetes 환경을 재설치해봤다

처음엔 다중클러스터로 구성하려고했는데 왠지 모르겠는데 안되가지고 그냥 단일 클러스터로 구성했다

 

 

  • docker 설치

필요 패키지 설치

sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

 

Docker GPG key 추가

sudo mkdir -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

 

Docker 엔진 설치

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io -y

 

docker 설치 확인

sudo docker version

 

Docker daemon 설정

cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF

sudo systemctl enable --now docker

 

 

 

 

  • CRI container runtime 설치

cri-docker 패키지 다운로드

https://github.com/Mirantis/cri-dockerd/releases/tag/v0.2.6

 

cri-docker 패키지 설치

sudo apt install ./<해당버전>.deb

 

cri-docker 패키지 설치 후

sudo systemctl enable cri-docker.service
sudo systemctl enable --now cri-docker.socket

 

 

 

 

  • kubernetes 설치

swap 해제

sudo swapoff -a && sudo sed -i '/swap/s/^/#/' /etc/fstab

 

관련 패키지 설치

sudo apt-get upgrade -y
sudo apt-get install -y apt-transport-https ca-certificates curl

 

리포지토리 설정

sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg

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

 

kubernetes 패키지 설치

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

 

kubernetes 패키지 daemon 설정

sudo apt-mark hold kubelet kubeadm kubectl
sudo systemctl daemon-reload
sudo systemctl restart kubelet

 

kubernetes 패키지 설치 확인

kubeadm version
kubelet --version
kubectl version

 

 

여기까지 한 후에 ami 따서 worker node 만들었음

 

 

 

 

  • kubernetes cluster 구성

cluster 구성

sudo kubeadm init --cri-socket "unix:///var/run/cri-dockerd.sock"

 

cluster 구성 후 관리자(root)와 일반 사용자에 설정

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

 

CNI 구성 - weavenet

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

 

 

 

 

  • Worker node Cluster 추가

cluster에 worker node 추가

sudo kubeadm join <IP>:6443 --token <TOKEN> \
    	--discovery-token-ca-cert-hash <SHA256> --cri-socket "unix:///var/run/cri-dockerd.sock"

 

위에 init 하면 join 명령이 있는데 뒤에다가 --cri-socket 설정 해줘야 됨

저거 추가 안해서 왜안되는지 한참 찾았었음

 

 

 

  • error

[ERROR FileAvailable--etc-kubernetes-kubelet.conf]: /etc/kubernetes/kubelet.conf already exists
[ERROR Port-10250]: Port 10250 is in use
[ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists

 

이렇게 에러가 나와서 찾아보니까 kubeadm reset 한 후에 다시 join 하라고 했는데 안됨;;

그래서 직접 저기있는 kubelet.conf , ca.crt 파일 지우고 root 랑 ubuntu 유저에서 각각 kubeadm reset 해줬더니 join 됬다.