Contents
3.36. k8s_deploy脚本¶
3.36.1. Master节点¶
#!/usr/bin/env bash
# Common_Var
K8S_Master_IP=""
K8s_node01_IP=""
K8s_node02_IP=""
K8s_node03_IP=""
Server_Init(){
#设置主机名
hostnamectl set-hostname k8s-master
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
sleep 1
sudo iptables -F && sudo iptables -X && sudo iptables -F -t nat && sudo iptables -X -t nat
sudo iptables -P FORWARD ACCEPT
# 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
# 关闭swap
sudo swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
# hosts文件
cat >>/etc/hosts<<-EOF
${K8S_Master_IP} k8s-master
${K8s_node01_IP} k8s-node1
${K8s_node02_IP} k8s-node2
${K8s_node03_IP} k8s-node3
EOF
# 同步系统时间
yum -y install ntpdate
sudo ntpdate cn.pool.ntp.org >/dev/null 2>&1
# 将桥接的IPv4流量传递到iptables的链
yum install -y bridge-utils.x86_64
modprobe br_netfilter
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
cat >>/etc/sysctl.conf <<EOF
net.ipv4.ip_forward = 1
EOF
sysctl -p
sysctl --system
}
Configure_Base_yum() {
#卸载原来的docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 安装依赖源
sudo yum update -y && sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
# 添加官方docker-yum库
sudo yum-config-manager --add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 添加kubernetes仓库
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
#更新yum源
yum clean all
yum repolist
}
Install_Docker() {
# 安装container-selinux包
yum -y install http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.68-1.el7.noarch.rpm
if test "$?" -eq 0; then
sudo yum -y install docker-ce docker-ce-cli containerd.io
if test "$?" -eq 0; then
Docker_Ver=`docker --version`
echo -e " Docker Install successfule!!. Docker Version is: 【${Docker_Ver}】"
# 开机启动
systemctl enable --now docker
#配置加速器
# 输入内容
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://j3jk9s84.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
else
echo "Docker Install fail!!"
exit 1
fi
else
echo "you must Internet access.....please check you interfae,无法网上冲浪...."
eixt 1
fi
}
Install_K8s_Master() {
# 列出所需镜像,国内无法翻墙用户。
echo -e "must download image:"
kubeadm config images list
tee > k8s-docker-images-master.sh<<-"EOF"
#!/bin/bash
#############################################
# 添加需要的镜像
images=(
kube-apiserver:v1.14.3
kube-controller-manager:v1.14.3
kube-scheduler:v1.14.3
kube-proxy:v1.14.3
pause:3.1
etcd:3.3.10
)
for imageName in ${images[@]} ; do
docker pull mirrorgooglecontainers/$imageName
docker tag mirrorgooglecontainers/$imageName k8s.gcr.io/$imageName
docker rmi mirrorgooglecontainers/$imageName
done
echo -n ">>>>>>>>: ";echo -n "docker pull coredns/coredns:1.3.1";echo "<<<<<<<<<<<<<<<<<<<<"
echo
docker pull coredns/coredns:1.3.1
docker tag coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1
docker rmi coredns/coredns:1.3.1
EOF
chmod 755 k8s-docker-images-master.sh
/bin/bash k8s-docker-images-master.sh
if test "$?" -eq 0; then
echo -e "K8S-Master Install Successful!!!"
else
echo -e "K8S-Master Install fail!!!"
exit 1
fi
}
Init_K8s_Master() {
ls /etc/kubernetes/admin.conf && mv /etc/kubernetes/admin.conf{,_bak} &> /dev/null
kubeadm init --pod-network-cidr 10.244.0.0/16 --kubernetes-version latest
if [ "$?" -eq 0 ]; then
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
#为了使用更便捷,启用kubectl命令的自动补全功能:
echo "source <(kubectl completion bash)" >> ~/.bashrc
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
if [ "$?" -eq 0 ]; then
echo "Init K8s Successful!!"
echo "Please login node Usage: kuberctl join tonken ........"
fi
else
echo "Init K8s fail!!"
exit 1
fi
}
main() {
Server_Init
Configure_Base_yum
Install_Docker
Install_K8s_Master
Init_K8s_Master
}
main
3.36.2. node节点¶
#!/usr/bin/env bash
# Common_Var
K8S_Master_IP=""
K8s_node01_IP=""
K8s_node02_IP=""
K8s_node03_IP=""
Server_Init(){
#设置主机名
hostnamectl set-hostname k8s-master
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
sleep 1
sudo iptables -F && sudo iptables -X && sudo iptables -F -t nat && sudo iptables -X -t nat
sudo iptables -P FORWARD ACCEPT
# 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
# 关闭swap
sudo swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
# hosts文件
cat >>/etc/hosts<<-EOF
${K8S_Master_IP} k8s-master
${K8s_node01_IP} k8s-node1
${K8s_node02_IP} k8s-node2
${K8s_node03_IP} k8s-node3
EOF
# 同步系统时间
yum -y install ntpdate
sudo ntpdate cn.pool.ntp.org >/dev/null 2>&1
# 将桥接的IPv4流量传递到iptables的链
yum install -y bridge-utils.x86_64
modprobe br_netfilter
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
cat >>/etc/sysctl.conf <<EOF
net.ipv4.ip_forward = 1
EOF
sysctl -p
sysctl --system
}
Configure_Base_yum() {
#卸载原来的docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 安装依赖源
sudo yum update -y && sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
# 添加官方docker-yum库
sudo yum-config-manager --add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 添加kubernetes仓库
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
#更新yum源
yum clean all
yum repolist
}
Install_Docker() {
# 安装container-selinux包
yum -y install http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.68-1.el7.noarch.rpm
if test "$?" -eq 0; then
sudo yum -y install docker-ce docker-ce-cli containerd.io
if test "$?" -eq 0; then
Docker_Ver=`docker --version`
echo -e " Docker Install successfule!!. Docker Version is: 【${Docker_Ver}】"
# 开机启动
systemctl enable --now docker
#配置加速器
# 输入内容
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://j3jk9s84.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
else
echo "Docker Install fail!!"
exit 1
fi
else
echo "you must Internet access.....please check you interfae,无法网上冲浪...."
eixt 1
fi
}
Install_K8s_node() {
cat > k8s-docker-images-node.sh<<-"EOF"
#!/bin/bash
#############################################
# 添加需要的镜像
images=(
kube-proxy:v1.14.3
pause:3.1
)
for imageName in ${images[@]} ; do
docker pull mirrorgooglecontainers/$imageName
docker tag mirrorgooglecontainers/$imageName k8s.gcr.io/$imageName
docker rmi mirrorgooglecontainers/$imageName
done
echo -e "docker 【kube-proxy】and 【pause】 install successful!!!"
EOF
chmod 755 k8s-docker-images-node.sh
if test "$?" -eq 0; then
echo -e "K8S-node Install Successful!!!"
else
echo -e "K8S-node Install fail!!!"
exit 1
fi
}
main() {
Server_Init
Configure_Base_yum
Install_Docker
Install_K8s_node
}
main