k8s-node一键脚本扩容

k8s的node进行扩容,扩容的机器需要满足以下前提条件

1.无密登录配置 ssh-keygen -t rsa
2.hostsname修改,并添加集群列表到/etc/hosts

3.注意我的使用的nfs做的持久化存储,如果没有注意最后的步骤

#!/bin/bash
#脚本运行之前准备工作
#
#   
#!/bin/bash

# 集群的起节点
start=1

# 集群的终节点
end=10

# 主机名前缀
hostname_prefix="node"

echo "升级软件和系统内核"
#for i in $(seq $start $end); do
#  ssh "${hostname_prefix}${i}" "yum -y update"
#done

echo "关闭 Linux 防火墙"
for i in $(seq $start $end); do
  ssh "${hostname_prefix}${i}" "systemctl stop firewalld && systemctl disable firewalld"
done

echo "检查防火墙状态"
for i in $(seq $start $end); do
  ssh "${hostname_prefix}${i}" "sestatus -v"
done

echo "禁用 swap"
for i in $(seq $start $end); do
  ssh "${hostname_prefix}${i}" "echo 'vm.swappiness = 0' >> /etc/sysctl.conf && sysctl -w vm.swappiness=1"
done

echo "配置内核参数"
for i in $(seq $start $end); do
  ssh "${hostname_prefix}${i}" "cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF"
done

echo "重新加载内核参数"
for i in $(seq $start $end); do
  ssh "${hostname_prefix}${i}" "sysctl --system"
done

echo "下载 docker-ce.repo 文件"
for i in $(seq $start $end); do
  ssh "${hostname_prefix}${i}" "wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo"
done

echo "安装 Docker CE、Docker CLI 和 containerd.io"
for i in $(seq $start $end); do
  ssh "${hostname_prefix}${i}" "yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io-1.4.6"
done

echo "启用并启动 Docker 服务"
for i in $(seq $start $end); do
  ssh "${hostname_prefix}${i}" "systemctl enable docker && systemctl start docker"
done

echo "显示 Docker 版本"
for i in $(seq $start $end); do
  ssh "${hostname_prefix}${i}" "docker --version"
done
    
echo "配置镜像加速器"
for i in $(seq $start $end); do
  ssh "${hostname_prefix}${i}" "sudo mkdir -p /etc/docker && sudo tee /etc/docker/daemon.json <<-'EOF'
{
  \"registry-mirrors\": [\"https://afi5x6i2.mirror.aliyuncs.com\"],
  \"exec-opts\": [\"native.cgroupdriver=systemd\"],
  \"insecure-registries\": [\"172.25.152.2:30002\"]
}
EOF"
done

echo "重新加载并重启 Docker 服务"
for i in $(seq $start $end); do
  ssh "${hostname_prefix}${i}" "sudo systemctl daemon-reload && sudo systemctl restart docker"
done

echo "时钟同步"
for i in $(seq $start $end); do
  ssh "${hostname_prefix}${i}" "yum install ntpdate -y && ntpdate time.windows.com"
done

echo "添加 Kubernetes YUM 源"
for i in $(seq $start $end); do
  ssh "${hostname_prefix}${i}" "cat > /etc/yum.repos.d/kubernetes.repo << EOF
[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
EOF"
done

echo "安装 kubeadm kubelet  kubectl 服务"
for i in $(seq $start $end); do
  ssh "${hostname_prefix}${i}" "yum install -y kubelet-1.22.10 kubeadm-1.22.10 kubectl-1.22.10"
done

echo "启动 kubelet  服务"
for i in $(seq $start $end); do
  ssh "${hostname_prefix}${i}" "systemctl enable kubelet"
done


# 在 Kubernetes 主控节点上执行 kubeadm token create --print-join-command 命令
join_command=$(ssh k8s-master 'kubeadm token create --print-join-command')

# 打印生成的加入命令
echo "加入命令:"
echo "$join_command"


echo "集群节点加入"
for i in $(seq $start $end); do
  ssh "${hostname_prefix}${i}" "$join_command"
done

echo "安装nfs"
for i in $(seq $start $end); do
  ssh "${hostname_prefix}${i}" "yum install -y nfs-utils"
done

echo "检查nfs挂载目录"
for i in $(seq $start $end); do
  ssh "${hostname_prefix}${i}" "showmount -e 172.25.152.2"
done

echo "创建nfs客户端目录"
for i in $(seq $start $end); do
  ssh "${hostname_prefix}${i}" "mkdir -p /data/nfs/data/"
done

echo "创建nfs客户端目录"
for i in $(seq $start $end); do
  ssh "${hostname_prefix}${i}" "mount -t nfs nfs的ip地址:/data/nfs/data /data/nfs/data"
done
 

  • 20
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

远方有海,小样不乖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值