在Ubuntu16.04集群上手工部署Kubernetes(未完,陆续补充中)
# 设置etcd版本 ETCD_VERSION=${ETCD_VERSION:-"3.1.0"}ETCD="etcd-v${ETCD_VERSION}-linux-amd64"
# 下载对应版本
curl -L https://github.com/coreos/etcd/releases/download/v${ETCD_VERSION}/${ETCD}.tar.gz -o etcd.tar.gz
# 解压
tar xzf etcd.tar.gz -C ~/kube/etcd
# 集群主机用户
user=kube
# 复制文件到集群主机
cd /tmp/etcd-v${ETCD_VERSION}-linux-amd64
# master节点地址
master=10.10.10.20
# node节点地址
node=(10.10.10.21 10.10.10.22)
# 所有节点地址
for i in "${!node[@]}"; do all[$i]=${node[$i]}; done
all[${#node[@]}]=$master
ETCD_INITIAL_CLUSTER=k8s-master=http://$master:2380
for i in "${!node[@]}"; do ETCD_INITIAL_CLUSTER="$ETCD_INITIAL_CLUSTER,kube-node$((i+1))=http://${node[$i]}:2380"; done
echo $ETCD_INITIAL_CLUSTER
mkdir -p ~/kube/etcdconf ~/kube/services
# 创建etcd配置文件
sudo cat <<EOF | sudo tee ~/kube/etcdconf/etcd.conf.tmp
ETCD_DATA_DIR=/var/lib/etcd
ETCD_NAME=hostname
ETCD_INITIAL_CLUSTER=$ETCD_INITIAL_CLUSTER
ETCD_INITIAL_CLUSTER_STATE=new
ETCD_LISTEN_PEER_URLS=http://$master:2380
ETCD_INITIAL_ADVERTISE_PEER_URLS=http://$master:2380
ETCD_ADVERTISE_CLIENT_URLS=http://$master:2379
ETCD_LISTEN_CLIENT_URLS=http://$master:2379
GOMAXPROCS=nproc
EOF
for h in ${all[@]}; do
cp ~/kube/etcdconf/etcd.conf.tmp ~/kube/etcdconf/etcd.conf."$h"
sudo sed -i s#ETCD_LISTEN_PEER_URLS=http://"${master}":2380#ETCD_LISTEN_PEER_URLS=http://"$h":2380#g ~/kube/etcdconf/etcd.conf."$h" \
&& sudo sed -i s#ETCD_INITIAL_ADVERTISE_PEER_URLS=http://"${master}":2380#ETCD_INITIAL_ADVERTISE_PEER_URLS=http://"$h":2380#g ~/kube/etcdconf/etcd.conf."$h" \
&& sudo sed -i s#ETCD_ADVERTISE_CLIENT_URLS=http://"${master}":2379#ETCD_ADVERTISE_CLIENT_URLS=http://"$h":2379#g ~/kube/etcdconf/etcd.conf."$h" \
&& sudo sed -i s#ETCD_LISTEN_CLIENT_URLS=http://"${master}":2379#ETCD_LISTEN_CLIENT_URLS=http://"$h":2379#g ~/kube/etcdconf/etcd.conf."$h"
done
# 创建etcd服务文件
sudo cat <<EOF | sudo tee ~/kube/services/etcd.service
Description=Etcd Service
Documentation=https://github.com/coreos/etcd
After=network.target
User=root
Type=simple
EnvironmentFile=-/opt/config/etcd.conf
ExecStart=/opt/bin/etcd
Restart=on-failure
RestartSec=10s
LimitNOFILE=40000
WantedBy=multi-user.target
EOF
user=kube
# 复制文件到 集群主机的~/kube/etcd 目录
for h in ${all[@]}; do ssh $user@$h 'mkdir -p ~/kube/etcd ~/kube/etcdconf ~/kube/services' && scp -r etcd* $user@$h:~/kube/etcd && scp -r ~/kube/etcdconf/etcd.conf."$h" $user@$h:~/kube/etcdconf/etcd.conf && scp -r ~/kube/services/* $user@$h:~/kube/services; done
# 复制文件到 集群主机的/opt/bin目录,清除无用数据
for h in ${all[@]}; do ssh $user@$h 'sudo mkdir -p /opt/bin /var/lib/etcd /opt/config && sudo mv ~/kube/etcd/* /opt/bin && sudo mv ~/kube/etcdconf/* /opt/config && sudo mv ~/kube/services/* /lib/systemd/system && rm -rf ~/kube'; done
# 替换etcd配置文件
for h in ${all[@]}; do ssh $user@$h 'sudo sed -i s/ETCD_NAME=hostname/ETCD_NAME="$(hostname)"/g /opt/config/etcd.conf && sudo sed -i s/GOMAXPROCS=nproc/GOMAXPROCS="$(nproc)"/g /opt/config/etcd.conf'; done
# 启动etcd服务
for h in ${all[@]}; do ssh $user@$h 'sudo systemctl daemon-reload && sudo systemctl enable etcd && sudo systemctl start etcd'; done
页:
[1]