File name
Commit message
Commit date
#! /bin/bash
# LoadBalancer 타입의 서비스와 연결할 외부 IP 대역
read -p "수강번호 : " num
# 수강 번호를 입력
case ${num} in
1) range='192.168.11.11-192.168.11.12' ;;
2) range='192.168.11.13-192.168.11.14' ;;
3) range='192.168.11.15-192.168.11.16' ;;
4) range='192.168.11.17-192.168.11.18' ;;
5) range='192.168.11.19-192.168.11.20' ;;
6) range='192.168.11.21-192.168.11.22' ;;
7) range='192.168.11.23-192.168.11.24' ;;
8) range='192.168.11.25-192.168.11.26' ;;
9) range='192.168.11.27-192.168.11.28' ;;
10) range='192.168.11.29-192.168.11.30' ;;
11) range='192.168.11.31-192.168.11.32' ;;
12) range='192.168.11.33-192.168.11.34' ;;
13) range='192.168.11.35-192.168.11.36' ;;
14) range='192.168.11.37-192.168.11.38' ;;
15) range='192.168.11.39-192.168.11.40' ;;
16) range='192.168.11.41-192.168.11.42' ;;
17) range='192.168.11.43-192.168.11.44' ;;
18) range='192.168.11.45-192.168.11.46' ;;
19) range='192.168.11.47-192.168.11.48' ;;
20) range='192.168.11.49-192.168.11.50' ;;
21) range='192.168.11.51-192.168.11.52' ;;
22) range='192.168.11.53-192.168.11.54' ;;
23) range='192.168.11.55-192.168.11.56' ;;
24) range='192.168.11.57-192.168.11.58' ;;
25) range='192.168.11.59-192.168.11.60' ;;
admin) range='192.168.11.61-192.168.11.62' ;;
esac
# 파드를 생성하기 위해 swap off
swapoff -a
# 노드의 IP 확인
ip= hostname -I | awk '{print $1}'
# k8s 초기화
kubeadm reset --force
rm -rf /root/.kube
rm -rf /home/vraptor/.kube
# k8s 클러스터 생성
kubeadm init --apiserver-advertise-address=$ip --pod-network-cidr=10.244.0.0/16
# k8s 클러스터를 사용하기 위해 config 파일 복사
mkdir -p /root/.kube
mkdir -p /home/vraptor/.kube
cp /etc/kubernetes/admin.conf /root/.kube/config
cp /etc/kubernetes/admin.conf /home/vraptor/.kube/config
chown -R vraptor:vraptor /home/vraptor/.kube
# Master노드에서 파드를 올리기 위한 taint제거
kubectl taint nodes --all node-role.kubernetes.io/master-
# CNI(Container Network Interface) 플러그인 설치 - Calico
kubectl apply -f yaml/calico.yaml
# LoadBalancer 타입의 서비스에 연결할 외부 IP할당을 편리하게 하는 MetalLb 플러그인 설치
kubectl get configmap kube-proxy -n kube-system -o yaml | sed -e "s/strictARP: false/strictARP: true/" | kubectl diff -f - -n kube-system
kubectl apply -f yaml/namespace.yaml
kubectl apply -f yaml/metallb.yaml
kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)"
cat <<EOF > metallb-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
data:
config: |
address-pools:
- name: default
protocol: layer2
addresses:
- ${range}
EOF
kubectl apply -f metallb-config.yaml
# 로컬에서 사용하는 Storageclass > PVC(Persistence Volume Claim), PV(Persistence Volume)에 사용됨
kubectl apply -f yaml/local-path-storage.yaml
kubectl annotate storageclass local-path storageclass.kubernetes.io/is-default-class=true