前言
基于 Kubernetes v1.18.2 二進(jìn)制高可用部署 基礎(chǔ)上添加 Node節(jié)點(diǎn)
莲祸。
注意事項(xiàng)
- 腳本中
SSL證書
下載鏈接https://.../k8s-v1.18.2-ssl.tar.gz
需要自己提供
,因?yàn)槊總€(gè)集群SSL證書
不一樣墓捻。 -
k8s-v1.18.2-ssl.tar.gz
包文件目錄結(jié)構(gòu)如下:
k8s-v1.18.2-ssl
├── bootstrap.kubeconfig
├── ca-key.pem
├── ca.pem
├── kube-proxy.kubeconfig
├── server-key.pem
└── server.pem
0 directories, 6 files
-
k8s-v1.18.2.tar.gz
包文件目錄結(jié)構(gòu)如下:
k8s-v1.18.2
├── kubernetes-configure
│ └── k8s-node
│ ├── kubelet.sh
│ └── proxy.sh
└── kubernetes-package
├── kubelet
└── kube-proxy
3 directories, 4 files
添加 Node 節(jié)點(diǎn)
# 創(chuàng)建Node節(jié)點(diǎn)初始化腳本
$ vim Init_Node.sh
#!/usr/bin/env bash
function Check_linux_system(){
linux_version=`cat /etc/redhat-release`
if [[ ${linux_version} =~ "CentOS" ]];then
echo -e "\033[32;32m 系統(tǒng)為 ${linux_version} \033[0m \n"
else
echo -e "\033[32;32m 系統(tǒng)不是CentOS,該腳本只支持CentOS環(huán)境\033[0m \n"
exit 1
fi
}
function Set_hostname(){
if [ -n "$HostName" ];then
grep $HostName /etc/hostname && echo -e "\033[32;32m 主機(jī)名已設(shè)置致板,退出設(shè)置主機(jī)名步驟 \033[0m \n" && return
case $HostName in
help)
echo -e "\033[32;32m bash init.sh 主機(jī)名 \033[0m \n"
exit 1
;;
*)
hostname $HostName
echo "$HostName" > /etc/hostname
echo "`ifconfig eth0 | grep -w inet | awk '{print $2}'` $HostName" >> /etc/hosts
;;
esac
else
echo -e "\033[32;32m 輸入為空交煞,請(qǐng)參照 bash init.sh 主機(jī)名 \033[0m \n"
exit 1
fi
}
function Install_depend_environment(){
rpm -qa | grep nfs-utils &> /dev/null && echo -e "\033[32;32m 已完成依賴環(huán)境安裝,退出依賴環(huán)境安裝步驟 \033[0m \n" && return
yum install -y nfs-utils curl yum-utils device-mapper-persistent-data lvm2 net-tools conntrack-tools wget vim ntpdate libseccomp libtool-ltdl telnet
echo -e "\033[32;32m 升級(jí)Centos7系統(tǒng)內(nèi)核到5版本斟或,解決Docker-ce版本兼容問題\033[0m \n"
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org && \
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm && \
yum --disablerepo=\* --enablerepo=elrepo-kernel repolist && \
yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml.x86_64 && \
yum remove -y kernel-tools-libs.x86_64 kernel-tools.x86_64 && \
yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml-tools.x86_64 && \
grub2-set-default 0
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
sysctl -p /etc/sysctl.d/k8s.conf
ls /proc/sys/net/bridge
}
function Install_docker(){
rpm -qa | grep docker && echo -e "\033[32;32m 已安裝docker素征,退出安裝docker步驟 \033[0m \n" && return
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum -y install docker-ce-19.03.6 docker-ce-cli-19.03.6
# 設(shè)置 iptables file表中 FORWARD 默認(rèn)鏈規(guī)則為 ACCEPT
sed -i '/ExecStart=/i ExecStartPost=\/sbin\/iptables -P FORWARD ACCEPT' /usr/lib/systemd/system/docker.service
systemctl enable docker.service
systemctl start docker.service
systemctl stop docker.service
echo '{"registry-mirrors": ["https://4xr1qpsp.mirror.aliyuncs.com"], "log-opts": {"max-size":"500m", "max-file":"3"}}' > /etc/docker/daemon.json
systemctl daemon-reload
systemctl start docker
}
function Install_k8s_node(){
ps aux | grep kube | grep -v grep &> /dev/null && echo -e "\033[32;32m k8s node服務(wù)已啟動(dòng),退出初始化node服務(wù)步驟 \033[0m \n" && return
mkdir -p /opt/kubernetes/{bin,cfg,ssl} /data/k8s-node
cd /data/k8s-node
# 添加更換為自己集群SSL證書下載地址
wget https://.../k8s-v1.18.2-ssl.tar.gz
tar zxvf k8s-v1.18.2-ssl.tar.gz
cd k8s-v1.18.2-ssl/
cp ca*pem server*pem /opt/kubernetes/ssl/
cp *kubeconfig /opt/kubernetes/cfg/
cd /data/k8s-node
wget https://cdm.yp14.cn/k8s-script/k8s-v1.18.2.tar.gz
tar zxvf k8s-v1.18.2.tar.gz
cd k8s-v1.18.2/kubernetes-package/
cp -a kubelet kube-proxy /opt/kubernetes/bin/
chmod +x /opt/kubernetes/bin/kubelet /opt/kubernetes/bin/kube-proxy
echo 'export PATH=$PATH:/opt/kubernetes/bin' >> ~/.bashrc
source ~/.bashrc
# 刪除 tar 包
rm -f /data/k8s-node/k8s-v1.18.2-ssl.tar.gz /data/k8s-node/k8s-v1.18.2.tar.gz
cd /data/k8s-node/k8s-v1.18.2/kubernetes-configure/k8s-node
# kubelet.sh 后面接的參數(shù)分別為:集群dns地址萝挤、Node節(jié)點(diǎn)主機(jī)名御毅、集群域名后輟
bash kubelet.sh 10.10.0.2 $HostName cluster.local
# proxy.sh 后面接的參數(shù)分別為:Node節(jié)點(diǎn)主機(jī)名
bash proxy.sh $HostName
}
# 初始化順序
HostName=$1
Check_linux_system && \
Set_hostname && \
Install_depend_environment && \
Install_docker && \
Install_k8s_node
# 給腳本添加執(zhí)行權(quán)限
$ chmod +x Init_Node.sh
# 執(zhí)行添加Node節(jié)點(diǎn)腳本,需要傳入 主機(jī)名 參數(shù)
$ ./Init_Node.sh k8s-node1
# 成功添加好Node節(jié)點(diǎn)怜珍,需要把Node節(jié)點(diǎn)重啟端蛆,使用新的內(nèi)核
$ reboot
本文由YP小站發(fā)布