MLOps 구축기 - 1. Kubernetes

문주은·2024년 1월 15일

1. 설치 환경

  • OS : ubuntu server 22.04 LTS

2. kubeadm으로 클러스터 구성

2-1)필수 포트 확인

  • 필수 포트 확인
  • 쿠버네티스 컴포넌트 통신을 위해 6443 필수 포트 확인
## 6443(k8s가 사용할 포트) 포트 확인
$ netstat -ntlp | grep 6443
or
$ nc 127.0.0.1 6443

2-2) kubeadm, kubelet, kubectl 설치

  • kubeadm : k8s 클러스터 구성을 위한 기능 제공
  • kubelet : 클러스터의 모든 머신에서 pod 시작, container시작 작업 수행
  • kubectl : 클러스터와 통신하기 위한 CLI util
# 1. apt update, apt repo에 필요한 패키지 설치
 $ sudo apt-get update 
 $ sudo apt install apt-transport-https curl

# 2. 공개 사이닝 키 다운
 $ 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

# 3. containerd 설치
 $ sudo apt-get update
 $ sudo apt-get install containerd.io

# 4. contained 설정
 $ sudo mkdir -p /etc/containerd
 $ sudo containerd config default | sudo tee /etc/containerd/config.toml

# 5. containerd 설정 파일 수정 
 $ sudo nano /etc/containerd/config.toml 
  에서 set SystemdCgroup = true
 $ sudo systemctl restart containerd

# 6. kubernetes 설치 (kubeadm, kubelet, kubectl)
 $ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add
 $ sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main" 
 $ sudo apt install kubeadm kubelet kubectl kubernetes-cni

# 7. kubeinit 사용하기 위한 노드 초기화 작업 
 $ sudo kubeadm init --pod-network-cidr=10.244.0.0/16

# 8. kubeadm command 복사
 $ mkdir -p $HOME/.kube
 $ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
 $ sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 9. Flannel 적용
 $ kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/v0.20.2/Documentation/kube-flannel.yml

# 10. 생성된 pod 확인
 $ kubectl get pods --all-namespaces
  • --pod-network-cidr
    - pod에서 사용할 네트워크 대역
    - 각 서버의 네트워크 대역과 중복되지 않게 주의
  • --apiserver-advertise-address
    - 마스터 노드 ip 주소
    - 다른 노드가 조인하기 위해
$ kubeadm reset
$ kubeadm init \
--apiserver-advertise-address=192.168.0.37 \
--pod-network-cidr=192.168.0.0/16 

kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.0.37

3. ETC) kubectl CLI

1)pod 생성

  • $ vi test-pod.yaml
  • $ kubectl create -f test-pod.yaml

2)생성된 pod 확인

  • $ kubectl get pod
  • $ kubectl logs test-pod

3)pod 삭제

  • $ kubectl delete pod test-pod
profile
Data Engineer

1개의 댓글

comment-user-thumbnail
2024년 1월 16일

안녕하세요 포스트 잘 보았습니다 필수 포트 확인 시 어떤 문구가 나와야 하는 것인가요?

답글 달기