mirror of https://github.com/easzlab/kubeasz.git
优化删除节点脚本,并集成到easzctl
parent
caabb89531
commit
d6ed23c10e
|
@ -11,6 +11,14 @@
|
||||||
private: no
|
private: no
|
||||||
confirm: yes
|
confirm: yes
|
||||||
tasks:
|
tasks:
|
||||||
|
- name: fail info1
|
||||||
|
fail: msg="you CAN NOT delete the last member of etcd cluster!"
|
||||||
|
when: "groups['etcd']|length < 2 and NODE_TO_DEL in groups['etcd']"
|
||||||
|
|
||||||
|
- name: fail info2
|
||||||
|
fail: msg="you CAN NOT delete the last member of kube-master!"
|
||||||
|
when: "groups['kube-master']|length < 2 and NODE_TO_DEL in groups['kube-master']"
|
||||||
|
|
||||||
- name: 执行kubectl drain(节点可能是kube-node节点)
|
- name: 执行kubectl drain(节点可能是kube-node节点)
|
||||||
shell: "{{ bin_dir }}/kubectl drain {{ NODE_TO_DEL }} --ignore-daemonsets --delete-local-data"
|
shell: "{{ bin_dir }}/kubectl drain {{ NODE_TO_DEL }} --ignore-daemonsets --delete-local-data"
|
||||||
ignore_errors: true
|
ignore_errors: true
|
||||||
|
|
|
@ -23,8 +23,8 @@ EOF
|
||||||
|
|
||||||
function process_cmd() {
|
function process_cmd() {
|
||||||
echo -e "$ACTION : $CMD"
|
echo -e "$ACTION : $CMD"
|
||||||
$CMD || { echo "Command failed : $CMD"; exit 1; }
|
$CMD || { echo -e "+---\033[31mAction failed\033[0m---+ : $CMD"; exit 1; }
|
||||||
echo -e "\033[32mdone\033[0m"
|
echo -e "+---\033[32mAction successed\033[0m---+ : $CMD"
|
||||||
}
|
}
|
||||||
|
|
||||||
function add-node() {
|
function add-node() {
|
||||||
|
@ -66,7 +66,7 @@ function add-etcd() {
|
||||||
sed -n '/^\[etcd/,/^\[kube-master/p' $BASEPATH/hosts|grep "^$1" && { echo "ERROR: node $1 already existed!"; exit 2; }
|
sed -n '/^\[etcd/,/^\[kube-master/p' $BASEPATH/hosts|grep "^$1" && { echo "ERROR: node $1 already existed!"; exit 2; }
|
||||||
|
|
||||||
# input an unique NODE_NAME of the node in etcd cluster
|
# input an unique NODE_NAME of the node in etcd cluster
|
||||||
echo "give an unique name(string) for the new node: "
|
echo "Please input an UNIQUE name(string) for the new node: "
|
||||||
read NAME
|
read NAME
|
||||||
sed -n '/^\[etcd/,/^\[kube-master/p' $BASEPATH/hosts|grep "$NAME" && { echo "ERROR: name [$NAME] already existed!"; exit 2; }
|
sed -n '/^\[etcd/,/^\[kube-master/p' $BASEPATH/hosts|grep "$NAME" && { echo "ERROR: name [$NAME] already existed!"; exit 2; }
|
||||||
|
|
||||||
|
@ -76,6 +76,23 @@ function add-etcd() {
|
||||||
# check if playbook runs successfully
|
# check if playbook runs successfully
|
||||||
ansible-playbook $BASEPATH/19.addetcd.yml -e NODE_TO_ADD=$1 || { sed -i "/$1 NODE_NAME=$NAME/d" $BASEPATH/hosts; exit 2; }
|
ansible-playbook $BASEPATH/19.addetcd.yml -e NODE_TO_ADD=$1 || { sed -i "/$1 NODE_NAME=$NAME/d" $BASEPATH/hosts; exit 2; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function del-etcd() {
|
||||||
|
# check node's address regexp
|
||||||
|
[[ $1 =~ ^(2(5[0-5]{1}|[0-4][0-9]{1})|[0-1]?[0-9]{1,2})(\.(2(5[0-5]{1}|[0-4][0-9]{1})|[0-1]?[0-9]{1,2})){3}$ ]] || { echo "ERROR: Invalid ip address!"; exit 2; }
|
||||||
|
|
||||||
|
#
|
||||||
|
ansible-playbook $BASEPATH/tools/remove_etcd_node.yml -e ETCD_TO_DEL=$1
|
||||||
|
}
|
||||||
|
|
||||||
|
function clean-node() {
|
||||||
|
# check node's address regexp
|
||||||
|
[[ $1 =~ ^(2(5[0-5]{1}|[0-4][0-9]{1})|[0-1]?[0-9]{1,2})(\.(2(5[0-5]{1}|[0-4][0-9]{1})|[0-1]?[0-9]{1,2})){3}$ ]] || { echo "ERROR: Invalid ip address!"; exit 2; }
|
||||||
|
|
||||||
|
#
|
||||||
|
ansible-playbook $BASEPATH/tools/clean_one_node.yml -e NODE_TO_DEL=$1
|
||||||
|
}
|
||||||
|
|
||||||
###############################################################
|
###############################################################
|
||||||
|
|
||||||
BASEPATH=/etc/ansible
|
BASEPATH=/etc/ansible
|
||||||
|
@ -96,6 +113,14 @@ case "$1" in
|
||||||
ACTION="+---\033[33mAction: add a etcd node\033[0m---+"
|
ACTION="+---\033[33mAction: add a etcd node\033[0m---+"
|
||||||
CMD="add-etcd $2"
|
CMD="add-etcd $2"
|
||||||
;;
|
;;
|
||||||
|
(del-etcd)
|
||||||
|
ACTION="+---\033[33mAction: delete a etcd node\033[0m---+"
|
||||||
|
CMD="del-etcd $2"
|
||||||
|
;;
|
||||||
|
(clean-node)
|
||||||
|
ACTION="+---\033[33mAction: clean a node\033[0m---+"
|
||||||
|
CMD="clean-node $2"
|
||||||
|
;;
|
||||||
(*)
|
(*)
|
||||||
usage
|
usage
|
||||||
exit 0
|
exit 0
|
||||||
|
|
|
@ -6,13 +6,13 @@
|
||||||
private: no
|
private: no
|
||||||
confirm: yes
|
confirm: yes
|
||||||
tasks:
|
tasks:
|
||||||
- name: set warnning info
|
- name: fail info1
|
||||||
set_fact: WARN_INFO="CAN NOT DELETE THIS NODE!!!!!!"
|
fail: msg="{{ ETCD_TO_DEL }} is NOT a member of etcd cluster!"
|
||||||
when: "groups['etcd']|length < 2 or ETCD_TO_DEL not in groups['etcd']"
|
when: "ETCD_TO_DEL not in groups['etcd']"
|
||||||
|
|
||||||
- name: show warnning info
|
- name: fail info2
|
||||||
debug: var="WARN_INFO"
|
fail: msg="you CAN NOT delete the last member of etcd cluster!"
|
||||||
when: "groups['etcd']|length < 2 or ETCD_TO_DEL not in groups['etcd']"
|
when: "groups['etcd']|length < 2"
|
||||||
|
|
||||||
- block:
|
- block:
|
||||||
- name: get ID of etcd node to delete
|
- name: get ID of etcd node to delete
|
||||||
|
|
|
@ -1,72 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# WARNNING: 此脚本还在修改中,还未完成
|
|
||||||
# 说明:不同k8s版本使用的'api-versions'版本不同,此脚本用于切换yaml文件使用的'api-versions'
|
|
||||||
# Example 01: 转换单个配置文件为k8s 1.8的版本
|
|
||||||
# bash tools/trans_yml.sh -v 1.8 -f manifests/dashboard/kubernetes-dashboard.yaml
|
|
||||||
# Example 02: 转换某个目录下所有yaml文件为k8s 1.8的版本
|
|
||||||
# for YML in `find manifests/heapster/ -name '*.yaml'`;do bash tools/trans_yml.sh -v 1.8 -f $YML;done;
|
|
||||||
|
|
||||||
#set -x
|
|
||||||
|
|
||||||
show_usage()
|
|
||||||
{
|
|
||||||
echo -e "\nUsage: $0 <-v K8S_VER> <-f YAML_FILE>"
|
|
||||||
echo -e "\nK8S_VER: support 1.8/1.9/1.10"
|
|
||||||
}
|
|
||||||
|
|
||||||
#check_arg -------------------------------------------------
|
|
||||||
K8S_VER=""
|
|
||||||
YML_FILE=""
|
|
||||||
|
|
||||||
while getopts "v:f:" arg
|
|
||||||
do
|
|
||||||
case $arg in
|
|
||||||
v)
|
|
||||||
K8S_VER=$OPTARG
|
|
||||||
;;
|
|
||||||
f)
|
|
||||||
if [ -w "$OPTARG" ];then
|
|
||||||
YML_FILE=$OPTARG
|
|
||||||
else
|
|
||||||
echo File:"$OPTARG not found or not writeable."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
?)
|
|
||||||
echo -e "unkown argument"
|
|
||||||
show_usage
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ "$K8S_VER" = "" ] || [ "$YML_FILE" = "" ];then
|
|
||||||
echo "error argument"
|
|
||||||
show_usage
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
main()
|
|
||||||
{
|
|
||||||
case "$K8S_VER" in
|
|
||||||
1.8)
|
|
||||||
sed -i 's/apps\/v1/extensions\/v1beta1/g' $YML_FILE
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
1.9)
|
|
||||||
echo "K8s_VER is $K8S_VER"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
1.10)
|
|
||||||
sed -i 's/extensions\/v1beta1/apps\/v1/g' $YML_FILE
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
?)
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
echo "not supported K8s_VER:$K8S_VER"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
main
|
|
Loading…
Reference in New Issue