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
sudo vi /etc/netplan/<tab>
# 내용 수정
sudo netplan apply
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
cat /var/lib/rancher/rke2/server/node-token
su -
curl -sfL https://get.rke2.io | INSTALL_RKE2_TYPE="agent" sh -
systemctl enable rke2-agent.service
sudo mkdir -p /etc/rancher/rke2/
worker node를 cluster에 포함시키기 위해 server(Master Node)의 정보를 입력합니다.
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
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는 다양한 발급 소스의 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을 설치합니다.
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를 관리할 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는 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
쿠버네티스 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