미니 PC로 개발 서버 구축하기 - 3. kubernetis 설치하기(실패)
도커를 설치한건 좋은데 생각해보니까 쿠버네티스 실습을 해봐야 하기에 쿠버네티스도 설치해야 하는데 그냥 쿠버네티스만 설치해도 됐을것같다?
설치하기 전 고려 사항
로컬에 쿠버네티스 설치 vs 도커 위에 kind
- 로컬 설치: 실제 배포될 쿠버네티스 클러스터와 가장 같은 환경
- kind: docker 위에서 작동하니까 빠르게 테스트 가능, 경량, CI/CD에 적합, 프로덕션 테스트에는 부적합
docker container vs kind on Docker
쿠버네티스 = 도커 + 추가기능(스케일링 자동화, 다중 컨테이너 관리 등)
따라서 일반 docker container를 사용하는 것보다 쿠버네티스의 추가 기능을 사용하려면 kind를 사용한다.
쿠버네티스와 도커
도커는 컨테이너 기술 자체이고 쿠버네티스는 도커 컨테이너를 오케스트레이션 하는 도구였으나 다른 종류의 컨테이너도 사용할 수 있는 컨테이너 관리 도구다.
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
도커 엔진 설치 때 설치했던 패키지는 위와 같은데, 이에 대한 chatGPT의 설명은 다음과 같다.
containerd.io: 쿠버네티스에서 권장하는 런타임이므로, 그대로 사용할 수 있습니다. 중복되지 않으며, 유용합니다.
docker-ce: 쿠버네티스에서는 기본적으로 Docker 대신 containerd를 사용하는 것을 권장하므로, 중복될 수 있습니다. 프로덕션 환경에서는 Docker를 제거하고 containerd만 사용하는 것이 좋습니다.
docker-ce-cli: 쿠버네티스에서 주로 사용하는 도구는 아니지만, 이미 설치되어 있다면 삭제하지 않아도 무방합니다. 필요하지 않을 수 있습니다.
docker-buildx-plugin 및 docker-compose-plugin: 쿠버네티스와 충돌하지 않지만, 쿠버네티스 환경에서는 거의 사용되지 않거나 불필요할 수 있습니다.
docker compose도 컨테이너 관리 도구지만 개발/테스트 용도고 프로덕션으로 사용하기에는 기능이 부족하다. 하지만 설정 및 관리가 용이하며 쿠버네티스의 운영비용이 높은 대신 복잡한 애플리케이션 관리하는데는 더 적합하다.
결론
도커에 추가적으로 쿠버네티스도 설치하면 될듯? 의미없는 돌아돌아지만 몰랐거나 애매하게 알았던 개념들을 정리하는 것에 의의를 두면 될 것 같다.
쿠버네티스 관련 도구
kubectl : 쿠버네티스 클러스터를 관리하기 위한 커맨드라인 클라이언트
minikube: 쿠버네티스 경량화 클러스터, 개인PC용
kubeadm: 클러스터 설치 & 초기화 명령줄 도구, 설치를 쉽게 해줌
k3s: 경량화된 쿠버네티스 배포판, iot용. 리소스 최소화해서 경량 서버에서 사용.
kind: kubernetis IN Docker, 도커 컨테이너에서 쿠버네티스 사용, 테스트/개발용.
Helm: 쿠버네티스 패키지 매니저
kustomize: 쿠버네티스 커스터마이징 도구. GO템플릿이 아닌 YAML 파일로 리소스 선언. kubectl에 포함되어 있음.
kubernetes 설치하기
kubectl 설치
Install and Set Up kubectl on Linux
Before you begin You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.31 client can communicate with v1.30, v1.31, and v1.32 control planes. Using the latest compatible version of kubectl helps avoid
kubernetes.io
설치법 1 - binary로 다운로드받아서 설치하기
1. binary로 kubectl 다운로드
x64 기준으로,
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
2. validate (optional, 나는 생략했음)
3. 다운로드한 파일로 설치
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
4. 설치확인
kubectl version --client
client version vs kustomize version
client version : kubectl 버전
kustomize version: kustomize 버전
설치법 2 - apt 매니저에 레포지토리 추가해서 설치하기
1. 필수 패키지 다운로드
sudo apt-get update
# apt-transport-https may be a dummy package; if so, you can skip that package
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
apt-transport-https : apt 패키지 관리자가 https로 다운로드받을 수 있는 패키지
ca-certificates: ca(인증서)로 https 연결할 수 있도록 ca를 관리해주는 패키지
(이미있음) curl: 데이터 다운로드
gnupg : 암호화 & 전자서명 지원도구. gpg key를 사용해서 패키지 서명 검증
2. 쿠버네티스 패키지 레포지토리 사인키 다운로드
# If the folder `/etc/apt/keyrings` does not exist, it should be created before the curl command, read the note below.
# sudo mkdir -p -m 755 /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.31/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
sudo chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg # allow unprivileged APT programs to read this keyring
3. apt 레포지토리 추가
# This overwrites any existing configuration in /etc/apt/sources.list.d/kubernetes.list
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.31/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo chmod 644 /etc/apt/sources.list.d/kubernetes.list # helps tools such as command-not-found to work correctly
4. 설치
sudo apt-get update
sudo apt-get install -y kubectl
설치법 3 - snap, brew 패키지 매니저 사용하기(생략)
Minikube 설치
minikube start
minikube is local Kubernetes, focusing on making it easy to learn and develop for Kubernetes. All you need is Docker (or similarly compatible) container or a Virtual Machine environment, and Kubernetes is a single command away: minikube start What you’ll
minikube.sigs.k8s.io
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64
minikube start
minikube를 설치하니 로컬 docker의 컨테이너로 실행되어 있다.
Portainer의 Environment에 Minikube를 추가하기(포기)
를 하려고 며칠 시도했는데 챗지피티도 그렇고 공식 메뉴얼에서도 내용이 명확하지 않고 자꾸 헤매게 된다...
헤맸던 + 해결하지 못한 부분은 다음과 같다:
* docker 위에 minikube 와 portainer 가 컨테이너로 설치되어 있다. 그런데 왜 environment로 바로 추가되지 않는가? -> portainer는 server와 agent가 있어서, 미니큐브 내에 agent를 설치해주어야 한다.
* 쿠버네티스 클러스터에 어떻게 패키지를 설치하는가? -> helm을 설치한다.
* 그래. portainer-agent가 설치된 노드,서비스가 생겼다. 그런데 왜 연결이 안되나? -> 해당 주소로 ping을 보내봤지만 응답이 없다.... -> (여기서 더 해결할 수 없음) -> portainer를 tls 끄고 다시 실행해야 함... (여기서부터 하기 싫어짐)
포테이너로 도커랑 쿠버네티스 한번에 관리하려고 하는게 내가 잘못안건가? 했는데 그것도 아닌것같은데..
결국 도커 데스크탑으로 다시 하기로 했다. 이건 다음에 시도하기로