kubeadm 으로 쿠버네티스 설치(On-premise)

leesj·2021년 8월 31일
0

kubernetes

목록 보기
1/8

쿠버네티스 초기 설치 및 설정 내용 정리

  • 쿠버네티스를 셋팅하고 운영하기 위한 환경은
    1.온프레미스 인프라 직접 설치 운영
    2.클라우스 인스턴스내 설치 운영
    3.클라우드에서 제공하는 매니지드 쿠버네티스 이용
    등의 방법이 있으며 본 블로그에서는 1번 온프레미스 GPU서버에서 직접 설치하고 셋팅하는것을 전제로 한다.

Constraint

  • 쿠버네티스 클러스터를 구성 할 모든 서버의 시간이 NTP 동기화 되어 있을것
  • 모든 서버의 맥(MAC) 주소가 상이할 것
  • 모든 서버가 2GB 메모리, 2CPU 이상일 것
  • 모든 서버의 메모리 스왑이 비활성화 되어 있을것
# swapoff -a

kubeadm

일반적인 서버 클러스터 환경에서도 쿠버네티스를 쉽게 설치할 수 있는 관리도구

1.쿠버네티스 저장소 추가

# curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-get add -
# cat <<EOF > /etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF

2.kubeadm 설치

  • docekr 설치
# 모든 노드에 도커 설치
# wget -q0- get.docker.com | sh
  • 쿠버네티스 설치
# 모든 노드에 쿠버네티스에 필요한 패키지 내려받기
# apt-get install -y kubelet kubeadm kubectl kubernetes-cni
# 쿠버네티스의 특정 버전 지정시
# apt-get install kubelet-1.13.5-00 kubeadm kubectl kubernetes-cni
  • 버전 확인
# 사용 가능한 버전 확인
# apt-cache policy kubelet

3.쿠버네티스 클러스터 초기화

  • 마스터 노드에서 작업 - 클러스터 초기화
root@kube-master1:/# kubeadm init --apiserver-advertise-address [MASTER_IP] --pod-network=cidr=192.168.0.0/16
  • --apiserver-advertise-address: 옵션의 인자에 다른노드(워커노드)가 마스터에게 접근할 수 있는 IP주소를 환경에 맞게 입력
  • --pod-network-cidr: 쿠버네티스에서 사용할 컨테이너의 네트워크 대역. 각 서버의 네트워크 대역과 중복되지 않게 적절히 선택
  • 2에서 쿠버네티스 설치 단계에서 특정 버전을 지정했을 경우 --kubernetes-version 1.13.5 와 같이 kubeadm init 명령어에 버전 옵션을 추가 해야 한다.

초기화 완료 후 출력되는 결과를 각각 마스터 노드와 워커 노드에서 실행

4.컨테이너 네트워크 애드온 설치

쿠버네티스 컨테이너간 통신을 위해 flannel, weaveNet 등 여러 오버레이 네트워크 사용 가능하지만 calico 를 기준으로 네트워크 플러그인을 설치

  • calico 는 기본적으로 호스트에서 사용 가능한 IP를 자동으로 감지해 오버레이 네트워크 통신에 사용한다. 만약 호스트에 내부용/외부용과 같이 NIC 가 2개 이상 존재하는 경우면 calico 가 제대로 동작하지 안항 공식 문서 참고 필요
root@kube-mater1:~# kubectl apply -f https://docs.projectcalico.org/v3.8/manifests/calico.yaml

3의 단계에서 --pod-network-cidr 설정 값에 따라 calico.yaml 파일을 사용하는 명령어를 다음과 같이 사용해야 한다.
예) --pod-network-cidr 옵션에 10.244.0.0/16을 입력한 경우

# wget https://docs.projectcalico.org/v3.8/manifests/calico.yamlo

# sed -i -e 's?192.168.0.0/16?10.244.0.0/16?g' calico.yaml
# kubectl apply -f calico.yaml
  • 설치 완료 확인(전부 Running 상태인지 확인)
root@kube-master1:~# kubectl get pods --namespace kube-system
  • 쿠버네티스에 등록된 모든 노드 확인
root@kube-master1:~# kubectl get nodes
  • 쿠버네티스 설치 도중 오류가 발생하거나 테스트용 쿠버네티스 클러스터를 삭제할때 각 노드에서 다음 명령어를 사용
    단, 이전에 설치했던 쿠버네티스의 파일들이 /etc/kubernetes 디렉터리에 남아있는 경우 kubeadm reset 명령어로 초기화한 뒤에도 설치 실패할 수 있음. 아래 명령어와 함께 해당 디렉터리 삭제 후 시도 필요
# kubeadm reset

참고자료
용찬호, 『시작하세요!도커/쿠버네티스: 친절한 설명으로 쉽게 이해하는 컨테이너 관리』, 위키북스(2020)

0개의 댓글