| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- ora-01722
- 오라클 캐릭터셋 변경
- Oracle 사용자명
- 오라클 캐릭터셋 확인
- Oracle Express Edition
- Oracle 18c HR
- Oracle 18c HR schema
- oracle 18c
- oracle
- Oracle 테이블 띄어쓰기
- Oracle 윈도우 설치
- Oracle 18c 설치
- 오라클 캐릭터셋 조회
- Oracle 사용자명 입력
- 서평단
- Orace 18c
- 윈도우 Oracle
- Oracle 초기 사용자
- ORA-12899
- 비전공자를 위한 데이터베이스 입문
- 무료 오라클 설치
- ORA-00922
- 무료 오라클 데이터베이스
- Oracle 테이블 대소문자
Archives
- Today
- Total
The Nirsa Way
[Bash Shell Script] CentOS 7 Kubernetes 자동 설치 쉘 스크립트(mater node version) 본문
Development/Bash Shell Script
[Bash Shell Script] CentOS 7 Kubernetes 자동 설치 쉘 스크립트(mater node version)
KoreaNirsa 2020. 2. 24. 23:41반응형
Kubernetes 자동 설치 쉘 스크립트
Kubernetes 자동 설치 쉘 스크립트 입니다. 이 쉘 스크립트는 마스터노드에 해당 하며, 워커노드는 추후 시간 될 때 제작할 예정 입니다.
글을 작성한 날짜(2020-02-24)를 기준으로 쉘 스크립트로 정상 설치 확인 하였습니다.
쉘 스크립트 초기 실행 화면

테스트 환경 및 참고 사항
테스트 환경 및 참고 사항은 아래와 같습니다. 당연히 테스트 서버에서 먼저 진행 하겠지만, 혹여나 실서버에 바로 적용할 경우 크리티컬한 상황이 발생할 가능성이 존재하니 잘 확인 해주세요.
혹여나 참고 사항에 적지 못한 부분이 있을 수 있으니 스크립트를 잘 확인 후 필요하지 않은 부분은 주석 처리하여 사용 해주세요.
- Tools : VMware Workstation 15
- OS : CentOS 7.7 1908
- 참고 사항1 : ens33 인터페이스 IP를 기준으로 설정 합니다. 설정할 IP가 잡혀있는 인터페이스로 변경 해주세요. (3line)
- 참고 사항2 : firewalld가 실행 되므로 firewalld를 사용하지 않고 서비스하고 있는 상황의 경우 관련 내용을 주석 처리 해주셔야 합니다. (firewalld를 사용하지 않던 환경에서는 장애 발생 가능성 존재)
- 참고 사항3 : selinux 비활성화, br_netfilter 모듈 활성화, swap 사용이 중지 됩니다.
- 참고 사항4 : hosts 파일에 마스터노드는 master , 워커노드는 node[숫자] 으로 저장 됩니다.
- 참고 사항5 : 호스트명이 변경 됩니다.
- 참고 사항6 : /k8s_tok 파일이 생성 됩니다. 이 파일은 추후 워커노드를 클러스터에 붙일 때 사용되니 소지하고 계셔야 합니다.
쉘 스크립트 소스 코드
#!/bin/bash
masterip=`ifconfig ens33 | grep 'inet ' | awk '{print $2}'`
mastername='master'
echo "ex) 172.16.0.0/16"
echo -e "사용할 Pod Network CIDR을 입력 해주세요: \c"
read pod_ip
echo "--------------------------입력 전에 잠깐 읽어주세요!--------------------------"
echo "Worker Node 개수 입력에 따라 호스트명과 IP 대역이 달라집니다."
echo "Worker Node가 시작될 IP 입력 시 입력값에 맞춰 가장 뒷자리가 1씩 증가 합니다."
echo "ex) Worker Node 10대 추가 입력"
echo "ex) 시작될 IP 192.168.0.1 입력"
echo "ex) hostname : node1~10"
echo "ex) IP : 192.168.0.1~10"
echo "------------------------------------------------------------------------------"
echo -e "Worker Node를 몇개 추가 하십니까?: \c"
read select
echo -e "Worker Node가 시작될 IP를 입력 해주세요: \c"
read selectip
chk_num1="^[0-9]+$"
chk_num2="^[0-9][0-9]+$"
chk_num3="^[0-9][0-9][0-9]+$"
worker_host_num=1
ip_chk1=`echo "${selectip: -1}" | egrep "[0-9]"`
ip_chk2=`echo "${selectip: -2}" | egrep "[0-9][0-9]"`
ip_chk3=`echo "${selectip: -3}" | egrep "[0-9][0-9][0-9]"`
echo "hosts 파일을 수정 합니다."
if [ "0$ip_chk3" -ge "100" -a "0$ip_chk3" -le "254" ] ;then
worker_ip_num=${selectip: -3}
worker_ip_range=`expr $worker_ip_num + $select - 1`
for i in $(seq $worker_ip_num $worker_ip_range); do
echo "${selectip:0: -3}$i node$worker_host_num" >> /etc/hosts
worker_host_num=`expr $worker_host_num + 1`
done
elif [ "0$ip_chk2" -ge "10" -a "0$ip_chk2" -le "99" ] ;then
worker_ip_num=${selectip: -2}
worker_ip_range=`expr $worker_ip_num + $select - 1`
for i in $(seq $worker_ip_num $worker_ip_range); do
echo "${selectip:0: -2}$i node$worker_host_num" >> /etc/hosts
worker_host_num=`expr $worker_host_num + 1`
done
elif [ "0$ip_chk1" -ge "1" -a "0$ip_chk1" -le "9" ] ;then
worker_ip_num=${selectip: -1}
worker_ip_range=`expr $worker_ip_num + $select - 1`
for i in $(seq $worker_ip_num $worker_ip_range); do
echo "${selectip:0: -1}$i node$worker_host_num" >> /etc/hosts
worker_host_num=`expr $worker_host_num + 1`
done
fi
echo "-------------------------------------"
echo "호스트명을 변경 합니다."
echo "master" > /proc/sys/kernel/hostname
hostnamectl set-hostname master
echo "-------------------------------------"
echo "방화벽 정책을 수정 합니다."
systemctl start firewalld
firewall-cmd --permanent --add-port=6443/tcp
firewall-cmd --permanent --add-port=2379-2380/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10251/tcp
firewall-cmd --permanent --add-port=10252/tcp
firewall-cmd --permanent --add-port=10255/tcp
firewall-cmd --reload
echo "-------------------------------------"
echo "selinux를 비활성화 합니다."
setenforce 0
sed "s/SELINUX=enforcing/SELINUX=disabled/g" -i /etc/sysconfig/selinux
echo "-------------------------------------"
echo "br_netfilter 모듈을 활성화 합니다."
modprobe br_netfilter
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables
echo "-------------------------------------"
echo "swap을 중지 합니다."
swapoff -a
sed -e 's/\(.*swap\)/#\1/' -i /etc/fstab
echo "-------------------------------------"
echo "Docker를 설치 합니다."
yum -y install yum-utils device-mapper-persistent-data lvm2 && yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo && yum -y install docker-ce
echo "-------------------------------------"
echo "쿠버네티스 저장소를 추가 합니다."
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
echo "-------------------------------------"
echo "쿠버네티스를 설치 합니다."
yum install -y kubelet kubeadm kubectl
echo "-------------------------------------"
echo "docker와 kubelet를 실행 합니다."
systemctl start docker && systemctl enable docker
systemctl start kubelet && systemctl enable kubelet
echo "-------------------------------------"
echo "master를 초기화 합니다."
echo "토큰을 /k8s_tok 파일로 저장 합니다."
kubeadm init --apiserver-advertise-address=$masterip --pod-network-cidr=$pod_ip | egrep "kubeadm join $masterip|--discovery-token-ca-cert-hash sha256" > /k8s_tok
echo "-------------------------------------"
echo "cluster에게 root 권한을 부여 합니다."
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
echo "-------------------------------------"
echo "k8s 정상 작동을 확인합니다."
kubectl get nodes
echo "-------------------------------------"
반응형
'Development > Bash Shell Script' 카테고리의 다른 글
| [Bash Shell Script] zabbix-agent 자동 설치 쉘 스크립트 (0) | 2020.05.28 |
|---|---|
| [Bash Shell Script] CentOS 7 Mod_Security2 설치 및 Mod_audit 로깅 설정 쉘 스크립트 (0) | 2020.05.25 |
| [Bash Shell Script] 쉘 스크립트 랜덤 문자열, 난수 생성(랜덤 숫자) (2) | 2020.02.10 |
| [Bash Shell Script] 쉘 스크립트 if조건문 라인에서의 "[: too many arguments" 에러 발생 (0) | 2019.12.17 |
| [Bash Shell Script] 쉘 스크립트 trap 명령어를 이용한 시그널 제어 (0) | 2019.12.17 |