Kali Linux에 Kubernetes를 설치하는 방법은 다음과 같습니다. Kubernetes를 설치하려면 먼저 Kubernetes의 주요 구성 요소인 kubeadm, kubelet, kubectl을 설치해야 합니다. 또한, Kubernetes를 실행하려면 Docker나 containerd와 같은 container runtime이 필요합니다.
1. 시스템 요구 사항 확인
Kubernetes 클러스터를 설정하려면 다음 사항을 만족해야 합니다:
- 2GB 이상의 메모리 (최소 요구 사항)
- CPU 2개 이상
- 디스크 공간: 최소 20GB의 저장 공간
- Kali Linux가 최신 상태여야 합니다.
2. Docker 설치
Kubernetes는 컨테이너를 실행하는 데 Docker를 사용합니다. 먼저 Docker를 설치합니다.
# 패키지 정보 업데이트
sudo apt update && sudo apt upgrade -y
# Docker 설치
sudo apt install -y docker.io
# Docker 서비스 시작 및 부팅 시 자동 실행 설정
sudo systemctl start docker
sudo systemctl enable docker
# Docker 버전 확인
docker --version
3. Kubernetes 설치
3.1. 패키지 관리 설정
Kubernetes의 공식 apt 저장소를 추가합니다.
# apt 패키지 관리 도구 업데이트
sudo apt update && sudo apt install -y apt-transport-https curl
# Google Cloud 공개 GPG 키 추가
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
# Kubernetes 저장소 추가
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
3.2. kubeadm, kubelet, kubectl 설치
# 패키지 목록을 업데이트하고 Kubernetes 패키지를 설치합니다.
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
# 설치된 Kubernetes 버전 확인
kubeadm version
kubectl version --client
kubelet --version
@kubelet, kubeadm, kubectl 설치 시 에러가 발생하는 경우 아래와 같이 진행했더니 해결되었습니다.
cd /etc/apt/sources.list.d
vi kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
sudo apt-get update
sudo apt-et install kubeadm kubelet kubectl kubernetes-cni
3.3. Kubelet 및 Docker 버전 확인
kubelet과 Docker의 버전이 호환되는지 확인합니다. 일부 경우 버전 호환성 문제가 발생할 수 있으므로 호환 가능한 버전 조정이 필요할 수 있습니다.
docker --version
kubelet --version
4. Swap 비활성화
Kubernetes는 swap이 활성화된 시스템에서 제대로 동작하지 않습니다. 따라서 swap을 비활성화해야 합니다.
# swap 비활성화
sudo swapoff -a
# `/etc/fstab`에서 swap 항목을 주석 처리하여 부팅 시 자동 비활성화되도록 설정
sudo sed -i '/swap/d' /etc/fstab
5. Kubernetes 클러스터 초기화
5.1. 마스터 노드 초기화
Kubernetes 클러스터의 마스터 노드를 초기화합니다.
# 마스터 노드 초기화
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
# 초기화가 완료되면 출력되는 명령어를 따라 워커 노드를 클러스터에 추가합니다.
--pod-network-cidr=10.244.0.0/16은 Flannel 네트워크 플러그인에 맞춘 CIDR입니다. 네트워크 플러그인을 변경할 경우 이 값을 조정할 수 있습니다.
5.2. kubectl 설정
kubectl을 사용하려면 kubeconfig 파일을 설정해야 합니다.
# kubeconfig 파일 설정
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
6. 네트워크 플러그인 설치
Kubernetes에서 네트워크 플러그인 (예: Flannel, Calico 등)을 설치해야 합니다. 여기서는 Flannel을 예시로 사용합니다.
# Flannel 네트워크 플러그인 설치
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
7. 워커 노드 추가
마스터 노드를 초기화한 후, 마스터 노드에서 출력된 kubeadm join 명령을 사용하여 워커 노드를 클러스터에 추가합니다.
# 출력된 명령어를 실행하여 워커 노드 추가
sudo kubeadm join <master-ip>:<port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
8. 클러스터 상태 확인
클러스터가 제대로 설정되었는지 확인합니다.
# 노드 상태 확인
kubectl get nodes
# 파드 상태 확인
kubectl get pods --all-namespaces
9. 대시보드 (옵션)
Kubernetes 대시보드를 설치하여 웹 인터페이스에서 클러스터를 관리할 수 있습니다.
# 대시보드 설치
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
# 대시보드 접근을 위한 서비스 계정 및 토큰 생성
kubectl create serviceaccount dashboard -n kubernetes-dashboard
kubectl create clusterrolebinding dashboard-admin -n kubernetes-dashboard --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard
# 토큰 확인
kubectl -n kubernetes-dashboard create token dashboard
위의 명령어로 생성된 토큰을 사용하여 대시보드에 로그인할 수 있습니다. 대시보드는 kubectl proxy를 사용하여 접근할 수 있습니다.
kubectl proxy
웹 브라우저에서 http://localhost:8001로 접속하면 Kubernetes 대시보드를 볼 수 있습니다.