본문 바로가기
쿠버네티스/쿠버네티스에 관해서

1-1 쿠버네티스 클러스터 전부 설치하기

by 종안이 2022. 7. 15.

우선 도커 사이트에 들어가서 아래 명령어를 실행해준다

 

# 패키지 업데이트 및 레포지토리 설정

sudo yum install -y yum-utils
sudo yum-config-manager     --add-repo     https://download.docker.com/linux/centos/docker-ce.repo
 

# docker ce 설치 

sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

 

# 도커 설치

yum list docker-ce --showduplicates | sort -r --showduplicates | sort -r
yum install docker-ce-docker-ce.x86_64 docker-ce-cli-20.10.9-3.el7 containerd.io docker-compose-plugin
sudo yum install docker-ce-docker-ce.x86_64 docker-ce-cli-20.10.9-3.el7 containerd.io docker-compose-plugin

 

# 도커 재시작 및 상태확인

sudo systemctl start docker
sudo systemctl status docker
sudo systemctl start docker

 

# 리눅스 시작시 도커 실행하도록 설정
systemctl enable docker
sudo systemctl enable docker

처음에는 일반 유저 때문에 관리자 권한이 없다고 떠서 관리자 권한을 줬다.

 

# 방화벽 중지

# systemctl stop firewalld 
# systemctl disable firewalld

그리고 스왑 오프 해줘야한다고 한다.

# 메모리 스왑 중지

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

 

# 쿠버네티스 설치 및 SE리눅스 중지

cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF

# Set SELinux in permissive mode (effectively disabling it)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

sudo systemctl enable --now kubelet

그리고 쿠버네티스 레포지토리에 대한 경로 작성후 

SE 리눅스 꺼주고 명령어 붙여넣기 하면 된다. (방화벽도 꺼줘야됨)

 

이제부터는 마스터 노드에서만 진행해야된다.

 

kubeadm init 했더니 이런 에러가 나온다

 

 

이걸로 해결함

```

sudo rm /etc/containerd/config.toml
sudo systemctl restart containerd
sudo kubeadm init

```

 

그리고 이거 해줘야됨 

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

 

 

 

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

위 명령어를 입력해주면 Not Ready에서 Ready로 바뀜 

 

 

그리고 토큰 입력시 자꾸 워커 노드에서 오류가 발생했는데 이것 때문에 진짜 4시간 동안 삽질했다.

 

토큰을 재발급하고 다시 해보자

 

 

 

1. 루트 유저로 접속하지 않고

2. 토큰 재발급을 통해서 오류 를 해결했다.

```

kubeadm join 10.0.2.12:6443 --token 13vqi8.75myez8sgudyzm40 --discovery-token-ca-cert-hash sha256:1f7df508f1b5498ca5b129221018a4296d61a9c7d1006e0dec87752ab56d0eb9

```

 

진짜 욕나왔다..

 

그리고 쿠버네티스를 간편하게 사용하기 위해서 자동 완성 명령어를 준다

 

yum install bash-completion

 

source /usr/share/bash-completion/bash_completion

echo 'source <(kubectl completion bash)' >>~/.bashrc

echo 'alias k=kubectl' >>~/.bashrc
echo 'complete -F __start_kubectl k' >>~/.bashrc

그리고 쉘 재시작 후 명령어를 다시 입력하면 이제 자동 완성이 된다.

 

혹은 아래 것도 자동완성이 된다. 

kubeadm도 추가하자

 

# source <(kubectl completion bash)
# echo "source <(kubectl completion bash)" >> ~/.bashrc

 

이제 최종적으로 설치가 완료되었다..

 

 

마스터 노드 1개와 워커노드 2개로 구성되어 있는 클러스터이다.

 

추가 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

하다보니 워커 노드에서 마스터 노드의 정보를 못불러오는 (kubectl)이 안먹히는 오류가 발생했다.

연결은 정상적으로 됐지만 명령어 입력이 안돼서 커넥션 오류가 뜰 경우 아래와 같이 해결했다.

 

13  sudo scp root@192.168.56.128:/etc/kubernetes/admin.conf .
   14  ls
   15  kubectl get pods --kubeconfig admin.conf 
   16  sudo kubectl get pods --kubeconfig admin.conf 
   17  mkdir -p $HOME/.kube
   18  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
   19  sudo chown $(id -u):$(id -g) $HOME/.kube/config

 

정리하자면 워커 노드에서는 마스터 노드에 대한 정보가 없다. admin에 관한 파일이 정보를 담고있는데

이 파일을 scp를 이용해서 마스터 노드에 있는 파일을 워커 노드로 가져온 다음 , 

등록(?)을 해줬다. 그랬더니 굳이 설정 명령어 없이도 볼 수 있었다.  (해결하니 뿌듯)

댓글