#! /bin/bash # LoadBalancer 타입의 서비스와 연결할 외부 IP 대역 read -p "이름을 입력하세요 : " num # 이름을 입력 case ${num} in 김대원) range='192.168.11.11-192.168.11.15' ;; 문성업) range='192.168.11.15-192.168.11.20' ;; 박청우) range='192.168.11.21-192.168.11.25' ;; 유조훈) range='192.168.11.25-192.168.11.30' ;; 장현정) range='192.168.11.31-192.168.11.35' ;; 최승원) range='192.168.11.35-192.168.11.40' ;; 조성수) range='192.168.11.41-192.168.11.45' ;; admin) range='192.168.11.46-192.168.11.50' ;; esac # 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 < 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