上传文件至 脚本
This commit is contained in:
parent
20d92ca798
commit
c810f4e7af
663
脚本/kubernetes.sh
Normal file
663
脚本/kubernetes.sh
Normal file
@ -0,0 +1,663 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
menu() {
|
||||||
|
echo "========================="
|
||||||
|
echo "= 菜单 ="
|
||||||
|
echo "========================="
|
||||||
|
echo "= 1. 主机名解析 ="
|
||||||
|
echo "= 2. 环境配置 ="
|
||||||
|
echo "= 3. 安装docker ="
|
||||||
|
echo "= 4. 安装kubernetes ="
|
||||||
|
echo "= 5. 导入镜像 ="
|
||||||
|
echo "= 6. master节点 ="
|
||||||
|
echo "= 7. node节点 ="
|
||||||
|
echo "= 8. 退出 ="
|
||||||
|
echo "========================="
|
||||||
|
}
|
||||||
|
|
||||||
|
menu_first() {
|
||||||
|
echo "========================="
|
||||||
|
echo "= 主机解析 ="
|
||||||
|
echo "========================="
|
||||||
|
echo "= 1. 查看主机名 ="
|
||||||
|
echo "= 2. 设置主机名 ="
|
||||||
|
echo "= 3. 查看解析文件 ="
|
||||||
|
echo "= 4. 主机解析 ="
|
||||||
|
echo "= 5. 删除特定行 ="
|
||||||
|
echo "= 6. 退出 ="
|
||||||
|
echo "========================="
|
||||||
|
}
|
||||||
|
|
||||||
|
first_option() {
|
||||||
|
while true; do
|
||||||
|
menu_first
|
||||||
|
read -p "请输入选项:" i
|
||||||
|
case $i in
|
||||||
|
1)
|
||||||
|
host=`hostname`
|
||||||
|
echo "主机名为 $host"
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
read -p "输入主机名:" host
|
||||||
|
hostnamectl set-hostname $host
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "设置主机名成功!"
|
||||||
|
new_host=`hostname`
|
||||||
|
echo "主机名为 $new_host"
|
||||||
|
else
|
||||||
|
echo "设置主机名失败!"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
cat /etc/hosts
|
||||||
|
echo
|
||||||
|
;;
|
||||||
|
4)
|
||||||
|
while true; do
|
||||||
|
read -p "输入格式:IP 主机名(输入e退出):" host
|
||||||
|
if [[ $host == "e" ]]; then
|
||||||
|
echo "退出成功!"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
arr=($host)
|
||||||
|
|
||||||
|
if [[ ${#arr[@]} -ne 2 ]]; then
|
||||||
|
echo "输入格式不符合,必须包含IP和主机名。"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
ip="${arr[0]}"
|
||||||
|
hostname="${arr[1]}"
|
||||||
|
|
||||||
|
ip_regex='^((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])$'
|
||||||
|
if [[ ! $ip =~ $ip_regex ]]; then
|
||||||
|
echo "IP地址格式无效"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
hostname_regex='^[a-zA-Z]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$'
|
||||||
|
if [[ ! $hostname =~ $hostname_regex ]]; then
|
||||||
|
echo "主机名格式无效(允许字母、数字、连字符,不以连字符开头/结尾,最长63字符)。"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$ip $hostname" >> /etc/hosts
|
||||||
|
echo "添加成功:$ip $hostname"
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
5)
|
||||||
|
read -p "输入要删除的主机解析:" host
|
||||||
|
escaped_host=$(sed -e 's/[][\.^*$]/\\&/g' <<< "$host")
|
||||||
|
|
||||||
|
if grep -q "$escaped_host" /etc/hosts; then
|
||||||
|
sed -i "/$escaped_host/d" /etc/hosts
|
||||||
|
echo "删除成功!"
|
||||||
|
else
|
||||||
|
echo "未找到匹配的主机解析!"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
6)
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "无效的选项,请重新输入!"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
menu_second() {
|
||||||
|
echo "========================="
|
||||||
|
echo "= 环境配置 ="
|
||||||
|
echo "========================="
|
||||||
|
echo "= 1. 查看firewalld状态 ="
|
||||||
|
echo "= 2. 启动firewalld ="
|
||||||
|
echo "= 3. 关闭firewalld ="
|
||||||
|
echo "= 4. 开机启动firewalld ="
|
||||||
|
echo "= 5. 开机关闭firewalld ="
|
||||||
|
echo "= 6. 查看selinux状态 ="
|
||||||
|
echo "= 7. 开启selinux ="
|
||||||
|
echo "= 8. 关闭selinux ="
|
||||||
|
echo "= 9. 开机启动selinux ="
|
||||||
|
echo "= 10. 开机关闭selinux ="
|
||||||
|
echo "= 11. 禁用swap分区 ="
|
||||||
|
echo "= 12. 开机禁用swap分区 ="
|
||||||
|
echo "= 13. 加载内核 ="
|
||||||
|
echo "= 14. 退出 ="
|
||||||
|
echo "========================="
|
||||||
|
}
|
||||||
|
|
||||||
|
second_option() {
|
||||||
|
while true; do
|
||||||
|
menu_second
|
||||||
|
read -p "请选择选项:" i
|
||||||
|
case $i in
|
||||||
|
1)
|
||||||
|
status=$(systemctl is-active firewalld)
|
||||||
|
enabled=$(systemctl is-enabled firewalld)
|
||||||
|
|
||||||
|
if [ "$status" == "active" ]; then
|
||||||
|
echo "firewalld 当前状态:已启动!"
|
||||||
|
else
|
||||||
|
echo "firewalld 当前状态:未启动!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$enabled" == "enabled" ]; then
|
||||||
|
echo "firewalld 是否开机启动:是"
|
||||||
|
else
|
||||||
|
echo "firewalld 是否开机启动:否"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
systemctl start firewalld
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "启动成功!"
|
||||||
|
else
|
||||||
|
echo "启动失败!"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
systemctl stop firewalld
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "关闭成功!"
|
||||||
|
else
|
||||||
|
echo "关闭失败!"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
4)
|
||||||
|
systemctl enable firewalld
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "永久启动成功!"
|
||||||
|
else
|
||||||
|
echo "永久启动失败!"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
5)
|
||||||
|
systemctl disable firewalld
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "永久关闭成功!"
|
||||||
|
else
|
||||||
|
echo "永久关闭失败!"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
6)
|
||||||
|
state=`getenforce`
|
||||||
|
if [[ $state == "Enforcing" ]]; then
|
||||||
|
echo "selinux的状态为已启动!"
|
||||||
|
else
|
||||||
|
echo "selinux的状态为已关闭!"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
7)
|
||||||
|
setenforce 1
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "selinux启动成功!"
|
||||||
|
else
|
||||||
|
echo "selinux启动失败!需要重启才能启动"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
8)
|
||||||
|
setenforce 0
|
||||||
|
if [ $? -eq 0]; then
|
||||||
|
echo "selinux关闭成功!"
|
||||||
|
else
|
||||||
|
echo "selinux关闭失败!"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
9)
|
||||||
|
sed -i '/^SELINUX=/c SELINUX=enforcing/' /etc/selinux/config
|
||||||
|
if [ $? -eq 0]; then
|
||||||
|
echo "永久启动selinux成功!"
|
||||||
|
else
|
||||||
|
echo "永久启动selinux失败!"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
10)
|
||||||
|
sed -i '/^SELINUX=/c SELINUX=disabled/' /etc/selinux/config
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "永久关闭selinux成功!"
|
||||||
|
else
|
||||||
|
echo "永久关闭selinux失败!"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
11)
|
||||||
|
swapoff -a
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "禁用swap分区成功!"
|
||||||
|
else
|
||||||
|
echo "禁用swap分区失败!"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
12)
|
||||||
|
sed -i 's/.*swap.*/#&/' /etc/fstab
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "永久禁用swap分区成功!"
|
||||||
|
else
|
||||||
|
echo "永久禁用swap分区失败!"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
13)
|
||||||
|
modprobe br_netfilter
|
||||||
|
echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf
|
||||||
|
echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
|
||||||
|
echo "vm.swappiness=0" >> /etc/sysctl.conf
|
||||||
|
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
|
||||||
|
|
||||||
|
sysctl -p
|
||||||
|
;;
|
||||||
|
14)
|
||||||
|
echo "退出成功!"
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "无效的选择,请重新输入!"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
menu_third() {
|
||||||
|
echo "========================="
|
||||||
|
echo "= docker管理 ="
|
||||||
|
echo "========================="
|
||||||
|
echo "= 1. 安装docker ="
|
||||||
|
echo "= 2. 配置容器加速 ="
|
||||||
|
echo "= 3. 启动docker ="
|
||||||
|
echo "= 4. 关闭docker ="
|
||||||
|
echo "= 5. 开机启动docker ="
|
||||||
|
echo "= 6. 开机关闭docker ="
|
||||||
|
echo "= 7. 重启docker ="
|
||||||
|
echo "= 8. 清空 ="
|
||||||
|
echo "= 9. 退出 ="
|
||||||
|
echo "========================="
|
||||||
|
}
|
||||||
|
|
||||||
|
third_option(){
|
||||||
|
while true; do
|
||||||
|
menu_third
|
||||||
|
read -p "请选择选项:" i
|
||||||
|
case $i in
|
||||||
|
1)
|
||||||
|
yum install -y yum-utils >/dev/null
|
||||||
|
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo >/dev/null
|
||||||
|
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y >/dev/null
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
echo '{
|
||||||
|
"max-concurrent-downloads": 10,
|
||||||
|
"max-concurrent-uploads": 5,
|
||||||
|
"default-shm-size": "1G",
|
||||||
|
"debug": true,
|
||||||
|
"experimental": false,
|
||||||
|
"registry-mirrors": [
|
||||||
|
"https://x9r52uz5.mirror.aliyuncs.com",
|
||||||
|
"https://dockerhub.icu",
|
||||||
|
"https://docker.chenby.cn",
|
||||||
|
"https://docker.1panel.live",
|
||||||
|
"https://docker.awsl9527.cn",
|
||||||
|
"https://docker.anyhub.us.kg",
|
||||||
|
"https://dhub.kubesre.xyz"
|
||||||
|
]
|
||||||
|
}' > /etc/docker/daemon.json
|
||||||
|
systemctl daemon-reload
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
systemctl start docker
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "启动docker成功!"
|
||||||
|
else
|
||||||
|
echo "启动docker失败!"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
4)
|
||||||
|
systemctl stop docker
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "关闭docker成功!"
|
||||||
|
else
|
||||||
|
echo "关闭docker失败!"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
5)
|
||||||
|
systemctl enable docker &> /dev/null
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "开机启动docker成功!"
|
||||||
|
else
|
||||||
|
echo "开机启动docker失败!"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
6)
|
||||||
|
systemctl disable docker &> /dev/null
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "开机关闭docker成功!"
|
||||||
|
else
|
||||||
|
echo "开机关闭docker失败!"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
7)
|
||||||
|
systemctl restart docker
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "docker重启成功!"
|
||||||
|
else
|
||||||
|
echo "docker重启失败"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
8)
|
||||||
|
clear
|
||||||
|
;;
|
||||||
|
9)
|
||||||
|
echo "退出成功!"
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "无效的选择,请重新输入!"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
menu_fourth() {
|
||||||
|
echo "========================="
|
||||||
|
echo "= kubernetes 安装 ="
|
||||||
|
echo "========================="
|
||||||
|
echo "= 1. 配置yum仓库 ="
|
||||||
|
echo "= 2. 安装 ="
|
||||||
|
echo "= 3. 配置cgroups ="
|
||||||
|
echo "= 4. 开机启动 ="
|
||||||
|
echo "= 5. 清空 ="
|
||||||
|
echo "= 6. 退出 ="
|
||||||
|
echo "========================="
|
||||||
|
}
|
||||||
|
|
||||||
|
fourth_option() {
|
||||||
|
while true; do
|
||||||
|
menu_fourth
|
||||||
|
read -p "请选择选项:" i
|
||||||
|
case $i in
|
||||||
|
1)
|
||||||
|
echo "[kubernetes]
|
||||||
|
name=Kubernetes
|
||||||
|
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
|
||||||
|
enabled=1
|
||||||
|
gpgcheck=0
|
||||||
|
repo_gpgcheck=0
|
||||||
|
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg" > /etc/yum.repos.d/kubernetes.repo
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
yum -y install kubeadm-1.23.5 kubelet-1.23.5 kubectl-1.23.5 ipvsadm >/dev/null
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
echo 'KUBELET_EXTRA_ARGS="--cgroup-driver=cgroupfs --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause-amd64:3.1"' > /etc/sysconfig/kubelet
|
||||||
|
;;
|
||||||
|
4)
|
||||||
|
systemctl enable kubelet &> /dev/null
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "开机启动成功!"
|
||||||
|
else
|
||||||
|
echo "开机启动失败!"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
5)
|
||||||
|
clear
|
||||||
|
;;
|
||||||
|
6)
|
||||||
|
echo "推出成功!"
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "无效的选择,请重新输入!"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
menu_fifth() {
|
||||||
|
echo "========================="
|
||||||
|
echo "= 镜像导入 ="
|
||||||
|
echo "========================="
|
||||||
|
echo "= 1. 导入镜像文件 ="
|
||||||
|
echo "= 2. 加载镜像 ="
|
||||||
|
echo "= 3. 查看镜像 ="
|
||||||
|
echo "= 4. 清空 ="
|
||||||
|
echo "= 5. 退出 ="
|
||||||
|
echo "========================="
|
||||||
|
}
|
||||||
|
|
||||||
|
fifth_option() {
|
||||||
|
while true; do
|
||||||
|
menu_fifth
|
||||||
|
read -p "请选择选项:" i
|
||||||
|
case $i in
|
||||||
|
1)
|
||||||
|
yum -y install lrzsz
|
||||||
|
mkdir /mnt/docker-image && cd /mnt/docker-image
|
||||||
|
pwd
|
||||||
|
rz
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
tar_dir="/mnt/docker-image"
|
||||||
|
tar_files=("$tar_dir"/*.tar)
|
||||||
|
|
||||||
|
if [ ${#tar_files[@]} -eq 0 ]; then
|
||||||
|
echo "在 $tar_dir 中未找到任何.tar文件"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
ERRORS=0
|
||||||
|
for file in "${tar_files[@]}"; do
|
||||||
|
docker load < $file >/dev/null
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "加载 $file 镜像成功!"
|
||||||
|
else
|
||||||
|
echo "加载 $file 镜像失败!"
|
||||||
|
((ERRORS++))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ $ERRORS -ne 0 ]; then
|
||||||
|
echo "警告:有 $ERRORS 个文件加载失败" >&2
|
||||||
|
else
|
||||||
|
echo "所有镜像已成功加载"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
docker images
|
||||||
|
;;
|
||||||
|
4)
|
||||||
|
clear
|
||||||
|
;;
|
||||||
|
5)
|
||||||
|
echo "推出成功!"
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "无效的选择,请重新输入!"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
menu_sixth() {
|
||||||
|
echo "========================="
|
||||||
|
echo "= master节点管理 ="
|
||||||
|
echo "========================="
|
||||||
|
echo "= 1. 初始化 ="
|
||||||
|
echo "= 2. 查看集群状态 ="
|
||||||
|
echo "= 3. 清空 ="
|
||||||
|
echo "= 4. 退出 ="
|
||||||
|
echo "========================="
|
||||||
|
}
|
||||||
|
|
||||||
|
sixth_option() {
|
||||||
|
while true; do
|
||||||
|
menu_sixth
|
||||||
|
read -p "请选择选项:" i
|
||||||
|
case $i in
|
||||||
|
1)
|
||||||
|
while true; do
|
||||||
|
read -p "输入master的ip地址:" ip
|
||||||
|
|
||||||
|
ip_regex='^((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])$'
|
||||||
|
|
||||||
|
if [[ ! $ip =~ $ip_regex ]]; then
|
||||||
|
echo "IP地址格式无效"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir /mnt/master
|
||||||
|
|
||||||
|
kubeadm init --kubernetes-version=1.23.5 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=$ip > /mnt/master/init_info 2>> /mnt/master/error_info
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "初始化成功!"
|
||||||
|
mkdir -p $HOME/.kube
|
||||||
|
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
|
||||||
|
sudo chown $(id -u):$(id -g) $HOME/.kube/config
|
||||||
|
export KUBECONFIG=/etc/kubernetes/admin.conf
|
||||||
|
kubectl apply -f /mnt/docker-image/kube-flannel-2402.yml > /mnt/master/flannel_info
|
||||||
|
else
|
||||||
|
echo "初始化失败!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
break
|
||||||
|
done
|
||||||
|
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
kubectl get nodes
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
clear
|
||||||
|
;;
|
||||||
|
4)
|
||||||
|
echo "退出成功!"
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "无效的选择,请重新输入!"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
menu_seventh() {
|
||||||
|
echo "========================="
|
||||||
|
echo "= node节点管理 ="
|
||||||
|
echo "========================="
|
||||||
|
echo "= 1. 获取初始化信息文件 ="
|
||||||
|
echo "= 2. 加入集群 ="
|
||||||
|
echo "= 3. 清空 ="
|
||||||
|
echo "= 4. 退出 "
|
||||||
|
echo "========================="
|
||||||
|
}
|
||||||
|
|
||||||
|
seventh_option() {
|
||||||
|
while true; do
|
||||||
|
menu_seventh
|
||||||
|
read -p "请选择选项:" i
|
||||||
|
case $i in
|
||||||
|
1)
|
||||||
|
rpm -q expect &> /dev/null
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
yum -y install expect tcl tclx tcl-devel &> /dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
read -p "输入master的ip地址:" ip
|
||||||
|
|
||||||
|
ip_regex='^((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])$'
|
||||||
|
|
||||||
|
if [[ ! $ip =~ $ip_regex ]]; then
|
||||||
|
echo "IP地址格式无效"
|
||||||
|
continue
|
||||||
|
else
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
stty -echo
|
||||||
|
read -p "输入密码:" password
|
||||||
|
stty echo
|
||||||
|
echo
|
||||||
|
|
||||||
|
/usr/bin/expect <<-EOF >/dev/null 2>&1
|
||||||
|
set timeout 10
|
||||||
|
log_user 0
|
||||||
|
spawn scp $ip:/mnt/master/init_info /mnt/
|
||||||
|
expect {
|
||||||
|
"yes/no" { send "yes\n"; exp_continue }
|
||||||
|
"password:" {send "$password\n"}
|
||||||
|
}
|
||||||
|
expect eof
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "输出成功!"
|
||||||
|
else
|
||||||
|
echo "输出失败!"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
file="/mnt/init_info"
|
||||||
|
ip=`awk '/kubeadm join/ {print $3}' $file`
|
||||||
|
token=$(grep -oP -- '--token \K\S+' "$file")
|
||||||
|
cert_hash=$(grep -oP -- '--discovery-token-ca-cert-hash \K\S+' "$file")
|
||||||
|
|
||||||
|
kubeadm join $ip --token $token --discovery-token-ca-cert-hash $cert_hash >/dev/null
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "加入集群成功!"
|
||||||
|
else
|
||||||
|
echo "加入集群失败!"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
clear
|
||||||
|
;;
|
||||||
|
4)
|
||||||
|
echo "退出成功!"
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "无效的选择,请重新输入!"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
menu
|
||||||
|
read -p "请选择选项:" i
|
||||||
|
case $i in
|
||||||
|
1)
|
||||||
|
first_option
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
second_option
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
third_option
|
||||||
|
;;
|
||||||
|
4)
|
||||||
|
fourth_option
|
||||||
|
;;
|
||||||
|
5)
|
||||||
|
fifth_option
|
||||||
|
;;
|
||||||
|
6)
|
||||||
|
sixth_option
|
||||||
|
;;
|
||||||
|
7)
|
||||||
|
seventh_option
|
||||||
|
;;
|
||||||
|
8)
|
||||||
|
echo "退出成功!"
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "无效的选择,请重新输入!"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
Loading…
x
Reference in New Issue
Block a user