mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-06 02:34:03 +00:00
Check for existing GCE resources in kube-up
This commit is contained in:
parent
43889c612c
commit
3a562f1619
@ -82,3 +82,6 @@ DNS_REPLICAS=1
|
||||
|
||||
# Admission Controllers to invoke prior to persisting objects in cluster
|
||||
ADMISSION_CONTROL=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota
|
||||
|
||||
# Optional: if set to true kube-up will automatically check for existing resources and clean them up.
|
||||
KUBE_UP_AUTOMATIC_CLEANUP=${KUBE_UP_AUTOMATIC_CLEANUP:-false}
|
||||
|
@ -79,3 +79,6 @@ DNS_DOMAIN="cluster.local"
|
||||
DNS_REPLICAS=1
|
||||
|
||||
ADMISSION_CONTROL=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota
|
||||
|
||||
# Optional: if set to true kube-up will automatically check for existing resources and clean them up.
|
||||
KUBE_UP_AUTOMATIC_CLEANUP=${KUBE_UP_AUTOMATIC_CLEANUP:-false}
|
||||
|
@ -584,6 +584,27 @@ function kube-up {
|
||||
find-release-tars
|
||||
upload-server-tars
|
||||
|
||||
local running_in_terminal=false
|
||||
# May be false if tty is not allocated (for example with ssh -T).
|
||||
if [ -t 1 ]; then
|
||||
running_in_terminal=true
|
||||
fi
|
||||
|
||||
if [[ ${running_in_terminal} == "true" || ${KUBE_UP_AUTOMATIC_CLEANUP} == "true" ]]; then
|
||||
if ! check-resources; then
|
||||
local run_kube_down="n"
|
||||
echo "${KUBE_RESOURCE_FOUND} found." >&2
|
||||
# Get user input only if running in terminal.
|
||||
if [[ ${running_in_terminal} == "true" && ${KUBE_UP_AUTOMATIC_CLEANUP} == "false" ]]; then
|
||||
read -p "Would you like to shut down the old cluster (call kube-down)? [y/N] " run_kube_down
|
||||
fi
|
||||
if [[ ${run_kube_down} == "y" || ${run_kube_down} == "Y" || ${KUBE_UP_AUTOMATIC_CLEANUP} == "true" ]]; then
|
||||
echo "... calling kube-down" >&2
|
||||
kube-down
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if ! gcloud compute networks --project "${PROJECT}" describe "${NETWORK}" &>/dev/null; then
|
||||
echo "Creating new network: ${NETWORK}"
|
||||
# The network needs to be created synchronously or we have a race. The
|
||||
@ -857,6 +878,80 @@ function kube-down {
|
||||
set -e
|
||||
}
|
||||
|
||||
# Checks if there are any present resources related kubernetes cluster.
|
||||
#
|
||||
# Assumed vars:
|
||||
# MASTER_NAME
|
||||
# NODE_INSTANCE_PREFIX
|
||||
# ZONE
|
||||
# Vars set:
|
||||
# KUBE_RESOURCE_FOUND
|
||||
|
||||
function check-resources {
|
||||
detect-project
|
||||
|
||||
echo "Looking for already existing resources"
|
||||
KUBE_RESOURCE_FOUND=""
|
||||
|
||||
if gcloud preview managed-instance-groups --project "${PROJECT}" --zone "${ZONE}" describe "${NODE_INSTANCE_PREFIX}-group" &>/dev/null; then
|
||||
KUBE_RESOURCE_FOUND="Managed instance group ${NODE_INSTANCE_PREFIX}-group"
|
||||
return 1
|
||||
fi
|
||||
|
||||
if gcloud compute instance-templates describe "${NODE_INSTANCE_PREFIX}-template" &>/dev/null; then
|
||||
KUBE_RESOURCE_FOUND="Instance template ${NODE_INSTANCE_PREFIX}-template"
|
||||
return 1
|
||||
fi
|
||||
|
||||
if gcloud compute instances describe "${MASTER_NAME}" --zone "${ZONE}" &>/dev/null; then
|
||||
KUBE_RESOURCE_FOUND="Kubernetes master ${MASTER_NAME}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
if gcloud compute disks describe "${MASTER_NAME}"-pd --zone "${ZONE}" &>/dev/null; then
|
||||
KUBE_RESOURCE_FOUND="Persistent disk ${MASTER_NAME}-pd"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Find out what minions are running.
|
||||
local -a minions
|
||||
minions=( $(gcloud compute instances list \
|
||||
--project "${PROJECT}" --zone "${ZONE}" \
|
||||
--regexp "${NODE_INSTANCE_PREFIX}-.+" \
|
||||
| awk 'NR >= 2 { print $1 }') )
|
||||
if (( "${#minions[@]}" > 0 )); then
|
||||
KUBE_RESOURCE_FOUND="${#minions[@]} matching matching ${NODE_INSTANCE_PREFIX}-.+"
|
||||
return 1
|
||||
fi
|
||||
|
||||
if gcloud compute firewall-rules describe "${MASTER_NAME}-https" &>/dev/null; then
|
||||
KUBE_RESOURCE_FOUND="Firewal rules for ${MASTER_NAME}-https"
|
||||
return 1
|
||||
fi
|
||||
|
||||
if gcloud compute firewall-rules describe "${MINION_TAG}-all" &>/dev/null; then
|
||||
KUBE_RESOURCE_FOUND="Firewal rules for ${MASTER_NAME}-all"
|
||||
return 1
|
||||
fi
|
||||
|
||||
local -a routes
|
||||
routes=( $(gcloud compute routes list --project "${PROJECT}" \
|
||||
--regexp "${INSTANCE_PREFIX}-minion-.{4}" | awk 'NR >= 2 { print $1 }') )
|
||||
if (( "${#routes[@]}" > 0 )); then
|
||||
KUBE_RESOURCE_FOUND="${#routes[@]} routes matching ${INSTANCE_PREFIX}-minion-.{4}"
|
||||
return 1
|
||||
fi
|
||||
|
||||
local REGION=${ZONE%-*}
|
||||
if gcloud compute addresses describe "${MASTER_NAME}-ip" --region "${REGION}" &>/dev/null; then
|
||||
KUBE_RESOURCE_FOUND="Master's reserved IP"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# No resources found.
|
||||
return 0
|
||||
}
|
||||
|
||||
# Prepare to push new binaries to kubernetes cluster
|
||||
# $1 - whether prepare push to node
|
||||
function prepare-push() {
|
||||
|
Loading…
Reference in New Issue
Block a user