RKE2설치

문성하·2024년 1월 30일
0

기본 설정

기본 설정 - 방화벽 종료 및 패키지 업데이트

sudo swapoff -a
sudo systemctl stop ufw && ufw disable && iptables -F
sudo apt-get upgrade -y 
sudo apt-get dist-upgrade -y 
sudo apt-get update -y

# 부가 옵션
sudo passwd root
sudo apt install curl
sudo apt install vim

고정 ip 할당

sudo vi /etc/netplan/<tab>
# 내용 수정
sudo netplan apply

Master Node

rke2 server 설치

ssh접속 후 명령어 입력

su -
curl -sfL https://get.rke2.io | INSTALL_RKE2_TYPE="server" sh -
systemctl enable rke2-server.service

mkdir -p /etc/rancher/rke2
cat <<EOF> /etc/rancher/rke2/config.yaml 
cni: "calico"

tls-san:
  - my-kubernetes-domain.com
  - another-kubernetes-domain.com
EOF

systemctl start rke2-server.service
mkdir ~/.kube/
cp /etc/rancher/rke2/rke2.yaml ~/.kube/config
export PATH=$PATH:/var/lib/rancher/rke2/bin/
echo 'export PATH=/usr/local/bin:/var/lib/rancher/rke2/bin:$PATH' >> ~/.bashrc
echo 'source <(kubectl completion bash)' >>~/.bashrc
echo 'alias k=kubectl' >>~/.bashrc
echo 'complete -F __start_kubectl k' >>~/.bashrc
source ~/.bashrc
echo 'export CRI_CONFIG_FILE=/var/lib/rancher/rke2/agent/etc/crictl.yaml' >> ~/.bashrc

export CRI_CONFIG_FILE=/var/lib/rancher/rke2/agent/etc/crictl.yaml
/var/lib/rancher/rke2/bin/crictl  ps -a
vi /var/lib/rancher/rke2/server/manifests/rke2-ingress-nginx.yaml
# spec 부분에 하단 내용을 추가

# ...

spec: 
  valuesContent: |-
    controller:
      replicaCount: 2
    defaultBackend:
      replicaCount: 2

# ...
systemctl restart rke2-server.service

Worker Node

master node token 조회

cat /var/lib/rancher/rke2/server/node-token

RKE2 agent 설치

su -
curl -sfL https://get.rke2.io | INSTALL_RKE2_TYPE="agent" sh -
systemctl enable rke2-agent.service
sudo mkdir -p /etc/rancher/rke2/

config 파일 설정

worker node를 cluster에 포함시키기 위해 server(Master Node)의 정보를 입력합니다.

  • ip번호는 Master Node의 ip번호를 입력하고, port번호는 9345로 고정해야 합니다.
  • 복사한 token 값을 입력합니다.
  • tls-san은 Master Node에 입력한 SAN과 동일해야 합니다.
mastertoken=<입력>
masterip=<입력>
cat <<EOF> /etc/rancher/rke2/config.yaml
server: https://${masterip}:9345
token: ${mastertoken}
tls-san:
  - my-kubernetes-domain.com
  - another-kubernetes-domain.com
EOF

여러 대의 노드가 있을 경우 각 노드의 hostname이 달라야 서비스 시작이 가능합니다.

hostnamectl set-hostname worker
systemctl start rke2-agent.service

Master Node에서 설정

노드 이름 설정

worker node의 Roles 설정
k get nodes 입력 시 Roles 영역에 worker 라는 값을 입력하기 위한 명령어입니다.
default로 none이 할당됩니다.
추후 하나의 selector로 활용할 수 있을 것 같아 진행합니다.

kubectl label node worker node-role.kubernetes.io/worker=worker

확인

kubectl get nodes -o wide

Cert Manager 설치

cert-manager는 다양한 발급 소스의 TLS 인증서 관리 및 발급을 자동화하는 Kubernetes 추가 기능입니다.
Rancher의 TLS 인증서를 관리하기 위한 cert-manager를 설치합니다. - 1.7.1 version

kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.7.1/cert-manager.yaml
kubectl -n cert-manager rollout status deploy/cert-manager
kubectl -n cert-manager rollout status deploy/cert-manager-webhook 
kubectl get pods --namespace cert-manager

Helm 설치

앞으로 설치할 것들을 helm을 통해 설치할 일이 많아 우선 helm을 설치합니다.
master 터미널에 명령어 입력

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh

이제 helm을 사용할 수 있습니다.

Rancher 배포

Rancher를 관리할 namespace를 생성하고, Rancher를 해당 namespace에 배포합니다.
helm repository 에 rancher 추가 이후, helm install 을 통해 rancher를 배포합니다.

masterip=<입력>

kubectl create namespace cattle-system
helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
helm repo update
helm search repo rancher-stable
helm install rancher rancher-stable/rancher --namespace cattle-system --set hostname=rancher.${masterip}.nip.io --set replicas=1 --set bootstrapPassword="1234asdf"

k9s 설치

k9s는 k8s 명령어를 쉽고 간편하게 사용할 수 있게 해주는 도구입니다.
하단에 있는 한 줄의 코드로 간편하게 설치 가능합니다.
k9s 명령어를 입력해 k9s를 실행시킬 수 있습니다.

curl -sL https://github.com/derailed/k9s/releases/download/v0.26.3/k9s_Linux_x86_64.tar.gz | tar xfz - -C /usr/local/bin k9s

Longhorn 설치

쿠버네티스 PV(Persistent Volume)를 사용하려면 PVC 및 SC를 정의해야합니다. 여러 PV가 필요한데 이를 longhorn을 설치하고 default 설정을 하면 PVC만 생성해도 longhorn이 자동으로 PV관리를 해주어 편하게 쿠버네티스를 사용할 수 있습니다.

longhorn 사용을 위해 iscsi를 설치합니다.
master, worker 모두 설치해야 합니다.

sudo apt -y install open-iscsi
sudo apt install -y jq
sudo apt install nfs-common -y
sudo curl -sSfL <https://raw.githubusercontent.com/longhorn/longhorn/v1.2.0/scripts/environment_check.sh> | bash

longhorn 배포

# get charts
helm repo add longhorn https://charts.longhorn.io

 # update
helm repo update

 # install
helm upgrade -i longhorn longhorn/longhorn --namespace longhorn-system --create-namespace
 

0개의 댓글