RKE2는 Rancher Kubernetes Engine 2의 약자로, 랜처(Rancher Labs)에서 개발한 쿠버네티스 배포판이다.
RKE2는 주로 엔터프라이즈 환경, 정부 기관, 보안이 중요한 환경에서 쿠버네티스를 운영하기 위해 사용되며 SUSE가 랜처를 인수한 후에도 지속적으로 개발되고 있는 오픈소스 툴이다.
#CPU, 4Core 이상
#네트워크는 어댑터의 브리지로해야 클러스터 연결이 됨 - 예시
network:
version: 2
ethernets:
enp0s3:
dhcp4: false
addresses:
- 192.168.219.150/24
routes:
- to: 0.0.0.0/0
via: 192.168.219.1
nameservers:
addresses:
- 8.8.8.8
- 1.1.1.1
enp0s8:
dhcp4: false
addresses:
- 192.168.56.151/24
nameservers:
addresses:
- 8.8.8.8
- 1.1.1.1
### 호스트 OS 기본 셋팅(중요)
sudo apt-get update
#필수 패키지
sudo apt install -y net-tools vim tree curl openssh-server
-------------------------------------------------------------------
##스왑 끄기##
sudo swapoff -a
sudo vi /etc/systemd/system/swapoff.service
[Unit]
Description=Turn off all swap
DefaultDependiencies=no
After=local-fs.target
[Service]
Type=oneshot
ExecStart=/sbin/swapoff -a
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
WantedBy=graphical.target
sudo systemctl enable swapoff
-------------------------------------------------------------------
#방화벽 끄기
sudo ufw disable
#렌처 설치 - 모든 노드에 설치
curl -sfL https://get.rke2.io | sudo INSTALL_RKE2_TYPE="agent" sh -
#마스터 노드에서 시작
sudo systemctl enable rke2-server.service
sudo systemctl start rke2-server.service
sudo systemctl status rke2-server.service
#토큰 확인
sudo cat /var/lib/rancher/rke2/server/node-token
------------------------------------------------
#워커 노드 설정
sudo mkdir -p /etc/rancher/rke2
sudo vim /etc/rancher/rke2/config.yaml
vim /etc/rancher/rke2/config.yaml
#예시
server: https://192.168.219.150:9345 # 마스터 노드의 IP
token: 토큰값
node-name: k8s-node1
#워커노드에서 시작
sudo systemctl enable rke2-agent.service
sudo systemctl start rke2-agent.service
sudo systemctl status rke2-agent.service
#마스터에서 명령어 및 권한 등록
sudo ln -s /var/lib/rancher/rke2/bin/kubectl /usr/local/bin/kubectl
mkdir -p ~/.kube
sudo cp /etc/rancher/rke2/rke2.yaml ~/.kube/config
sudo chown $(id -u):$(id -g) ~/.kube/config
chmod 600 ~/.kube/config
export KUBECONFIG=~/.kube/config
#쉘에 영구등록
echo 'export KUBECONFIG=~/.kube/config' >> ~/.bashrc
source ~/.bashrc
#명령어 자동완성 패키지 설치
sudo apt -y install bash-completion
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
#노드 연결 확인
kubectl get node
#pending 뜬 pod 있을 시 마스터 노드에서 다시 시작
systemctl restart rke2-server.service
#삭제시
sudo systemctl stop rke2-server
# RKE2 전체 데이터 삭제 (주의: 클러스터 초기화됨)
sudo rm -rf /etc/rancher/rke2
sudo rm -rf /var/lib/rancher/rke2
sudo rm -rf /var/lib/kubelet
sudo rm -rf /etc/rancher/k3s
sudo systemctl daemon-reexec
sudo systemctl restart rke2-agent
#클러스터 관리용 Rancher UI 설치
helm repo add rancher-latest https://releases.rancher.com/server-charts/latest
helm repo update
# CRD 설치 (필수)
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.14.4/cert-manager.crds.yaml
# cert-manager 네임스페이스 생성
kubectl create namespace cert-manager
# Helm repo 추가 및 업데이트
helm repo add jetstack https://charts.jetstack.io
helm repo update
# Helm으로 cert-manager 설치
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager \
--version v1.14.4
#pod 정상 동작 확인
kubectl get pods -n cert-manager
#namespace 생성
kubectl create namespace cattle-system
#설치
helm install rancher rancher-latest/rancher \
--namespace cattle-system \
--set replicas=1 \
--set ingress.enabled=false \
--set hostname=rancher.local \
--set bootstrapPassword=admin1234
#노드 포트로 변경
kubectl -n cattle-system patch svc rancher -p '{"spec": {"type": "NodePort"}}'
#접속하기 - 예시 ip
https://192.168.219.150:30860
#비번 확인 방법
kubectl get secret --namespace cattle-system bootstrap-secret -o go-template='{{.data.bootstrapPassword|base64decode}}{{"\n"}}'
