QQ叫紫珊 发表于 2018-1-5 10:54:24

在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]
查看完整版本: 在Ubuntu16.04集群上手工部署Kubernetes(未完,陆续补充中)