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