multi-cluster-devops

Lab 1. Create RKE Cluster


https://kubernetes.io/docs/concepts/overview/components/


1) RKE2 cluster 설치

RHEL OS 의 경우 NetworkManager 예외설정
$ cat « EOF » /etc/NetworkManager/conf.d/rke2-canal.conf
[keyfile]
unmanaged-devices=interface-name:cali;interface-name:flannel
EOF

$ systemctl restart NetworkManager


# vm에 로그인 후
$ sudo -i

# 클러스터 버전 지정 시 INSTALL_RKE2_VERSION 지정
# Rancher 2.7.3 버전은 RKE2 1.26 이하 버전 설치
$ curl -sfL https://get.rke2.io | INSTALL_RKE2_VERSION=v1.24.13+rke2r1 sh -

# (Optional) 최신버전 설치 시
$ curl -sfL https://get.rke2.io | sh -
$ systemctl enable rke2-server --now &
$ systemctl status -l rke2-server
$ journalctl -fa

#(Optional) k8sadm 계정을 생성합니다.
$ groupadd -g 2000 k8sadm
$ useradd -m -u 2000 -g 2000 -s /bin/bash k8sadm
$ echo -e "1\n1" | passwd k8sadm >/dev/null 2>&1
$ echo ' k8sadm ALL=(ALL)   ALL' >> /etc/sudoers

$ su - k8sadm # 사용자 계정으로 kubectl 실행환경을 설정합니다.
$ su - k8sadm
$ mkdir ~/.kube
$ sudo cp /etc/rancher/rke2/rke2.yaml ~/.kube/config
$ sudo chown k8sadm ~/.kube/config
$ sed -i 's/default/rms/g'  ~/.kube/config
$ curl -LO https://dl.k8s.io/release/v1.25.9/bin/linux/amd64/kubectl
$ chmod +x kubectl && sudo mv kubectl /usr/local/bin
$ curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

$ cat <<EOF >> ~/.bashrc
# k8s alias
source <(kubectl completion bash)
complete -o default -F __start_kubectl k

alias k=kubectl
alias kn='kubectl config set-context --current --namespace'
alias kc='kubectl config use-context'
alias kcg='kubectl config get-contexts'
alias di='docker images --format "table :\t\t\t"'
alias kge="kubectl get events  --sort-by='.metadata.creationTimestamp'  -o 'go-template='"
EOF

$ source ~/.bashrc

$ k get nodes -o wide

2) RKE2 Worker Node 추가

# 마스터 노드의 IP 확인
$ ip a | grep inet

# 클러스터 토큰 확인
$ sudo cat /var/lib/rancher/rke2/server/token

# Worker Node에 ssh 접속
$ sudo -i

$ export INSTALL_RKE2_VERSION=v1.24.13+rke2r1
$ curl -sfL https://get.rke2.io | INSTALL_RKE2_TYPE="agent" sh -
$ mkdir -p /etc/rancher/rke2/
$ cat <<EOF >> /etc/rancher/rke2/config.yaml
server: https://마스터노드IP:9345
token: 클러스터 토큰
EOF
$ systemctl enable rke2-agent.service --now

3) 클러스터 버전 Upgrade

# 현재 클러스터 버전 확인
$ k get nodes

# 마스터노드 버전 upgrade
$ curl -sfL https://get.rke2.io | INSTALL_RKE2_VERSION=v1.25.9+rke2r1 sh -
$ systemctl restart rke2-server

# 마스터노드 버전 확인
$ k get nodes

# 워커노드 버전 upgrade
# 워커노드 ssh / root 로 로그인
$ export INSTALL_RKE2_VERSION=v1.25.9+rke2r1
$ curl -sfL https://get.rke2.io | INSTALL_RKE2_TYPE="agent" sh -
$ systemctl restart rke2-agent

# 클러스터 버전 확인
# 마스터노드 ssh / root 로그인
$ k get nodes