File name
Commit message
Commit date
#! /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 <<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