linux上安裝k8s主節點或者節點(指令碼直接跑)
阿新 • • 發佈:2019-01-01
本指令碼轉載,忘記了哪個網站了(先分享給大家)
#!/bin/bash #-------------------------------------------- #用於實現叢集環境的自動部署指令碼 #date: 20181229 #說明:適用於centos7系統 #-------------------------------------------- echo "開始進行叢集的安裝" sleep 5 echo "3秒後開始安裝......" sleep 3 #判斷當前使用者是否為root使用者 user=`whoami` machinename=`uname -m` if [ "$user" != "root" ]; then echo "請在root下執行該指令碼" exit 1 fi #更換阿里雲源 change_aliyum(){ #檢測wget命令是否安裝 command -v wget >/dev/null 2>&1 || { echo >&2 "I require wget but it's not installed. trying to get wget."; yum install -y wget; } #更換阿里雲源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum makecache } #關閉防火牆 close_firewall(){ systemctl stop firewalld systemctl disable firewalld } #安裝master元件 install_master_module(){ echo "請確定當前機器沒有安裝docker,etcd,kubernetes" read -p "input (y/n):" yn [ "$yn" == "Y" ] || [ "$yn" == "y" ]&& echo "ok,continue"&& yum install -y etcd docker kubernetes [ "$yn" == "N" ] || [ "$yn" == "n" ]&& echo "請先完成乾淨解除安裝後,再執行本指令碼" && exit 1 } #修改etcd配置檔案 update_etcd_conf(){ echo "ETCD_NAME=default ETCD_DATA_DIR=\"/var/lib/etcd/default.etcd\" ETCD_LISTEN_CLIENT_URLS=\"http://0.0.0.0:2379\" ETCD_ADVERTISE_CLIENT_URLS=\"http://localhost:2379\"">/etc/etcd/etcd.conf } #修改apiserver配置檔案 update_apiserver_conf(){ echo "KUBE_API_ADDRESS=\"--address=0.0.0.0\" KUBE_API_PORT=\"--port=8080\" KUBELET_PORT=\"--kubelet_port=10250\" KUBE_ETCD_SERVERS=\"--etcd_servers=http://127.0.0.1:2379\" KUBE_SERVICE_ADDRESSES=\"--service-cluster-ip-range=10.254.0.0/16\" KUBE_ADMISSION_CONTROL=\"--admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota\" KUBE_API_ARGS=\"\"">/etc/kubernetes/apiserver } #修改kubernetes配置檔案 update_kube_conf(){ read -p "輸入master節點的ip地址:" ip echo "KUBE_LOGTOSTDERR=\"--logtostderr=true\" KUBE_LOG_LEVEL=\"--v=0\" KUBE_ALLOW_PRIV=\"--allow-privileged=false\" KUBE_MASTER=\"--master=http://$ip:8080\"">/etc/kubernetes/config } #啟動master節點的相關服務 up_master_service(){ for SERVICES in etcd docker kube-apiserver kube-controller-manager kube-scheduler; do ZZH=`cat -n /etc/sysconfig/docker | grep -enabled= | awk '{print $1}'` sed -i ""$ZZH"c OPTIONS='--selinux-enabled=false --log-driver=journald --signature-verification=false'" /etc/sysconfig/docker systemctl restart $SERVICES systemctl enable $SERVICES systemctl status $SERVICES -l done } #新增etcd網路配置 add_etcd_net(){ etcdctl mk /atomic.io/network/config '{"Network":"172.17.0.0/16"}' } #檢測叢集是否安裝成功 check_cluster_status(){ kubectl get nodes } #安裝node節點元件 install_node_module(){ echo "請確定當前機器沒有安裝flannel,docker,kubernetes" read -p "input (y/n):" yn [ "$yn" == "Y" ] || [ "$yn" == "y" ]&& echo "ok,continue"&& yum install -y flannel docker kubernetes [ "$yn" == "N" ] || [ "$yn" == "n" ]&& echo "請先完成乾淨解除安裝後,再執行本指令碼" && exit 1 } #配置flanneld update_flanneld_conf(){ read -p "輸入master節點的ip地址:" ip echo "FLANNEL_ETCD=\"http://$ip:2379\" FLANNEL_ETCD_ENDPOINTS=\"http://$ip:2379\" FLANNEL_ETCD_PREFIX=\"/atomic.io/network\"">/etc/sysconfig/flanneld } #配置kubelet update_kubelet_conf(){ read -p "輸入master節點的ip地址:" master read -p "輸入當前node節點的ip地址:" node read -p "輸入pause映象的倉庫地址:" image echo "KUBELET_ADDRESS=\"--address=0.0.0.0\" KUBELET_PORT=\"--port=10250\" KUBELET_HOSTNAME=\"--hostname-override=$node\" KUBELET_API_SERVER=\"--api-servers=http://$master:8080\" KUBELET_POD_INFRA_CONTAINER=\"--pod-infra-container-image=$image\" KUBELET_ARGS=\"--cluster-dns=10.254.0.100 --cluster-domain=cluster.local\"">/etc/kubernetes/kubelet } #啟動node節點相關服務 up_node_service(){ for SERVICES in kube-proxy kubelet docker flanneld; do ZZH2=`cat -n /etc/sysconfig/docker | grep -enabled= | awk '{print $1}'` sed -i ""$ZZH2"c OPTIONS='--selinux-enabled=false --log-driver=journald --signature-verification=false'" /etc/sysconfig/docker systemctl restart $SERVICES systemctl enable $SERVICES systemctl status $SERVICES done } #指令碼入口 echo -n "選擇要安裝的角色“master”,“node”(嚴格大小寫):" read answer if [ "$answer" == master ];then change_aliyum close_firewall install_master_module update_etcd_conf update_apiserver_conf update_kube_conf up_master_service add_etcd_net elif [ "$answer" == node ];then change_aliyum close_firewall install_node_module update_flanneld_conf update_kube_conf update_kubelet_conf up_node_service fi