Skip to content

Commit e00c7f1

Browse files
authored
Merge pull request #885 from areed/nlb-2
Make Kubernetes API health checks more reliable
2 parents 38d7663 + 3e6a4b3 commit e00c7f1

3 files changed

Lines changed: 16 additions & 6 deletions

File tree

scripts/common/kubernetes.sh

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ function kubernetes_api_address() {
169169
}
170170

171171
function kubernetes_api_is_healthy() {
172-
curl --noproxy "*" --fail --silent --insecure "https://$(kubernetes_api_address)/healthz"
172+
curl --noproxy "*" --fail --silent --insecure "https://$(kubernetes_api_address)/healthz" >/dev/null
173173
}
174174

175175
function spinner_kubernetes_api_healthy() {
@@ -178,6 +178,15 @@ function spinner_kubernetes_api_healthy() {
178178
fi
179179
}
180180

181+
# With AWS NLB kubectl commands may fail to connect to the Kubernetes API immediately after a single
182+
# successful health check
183+
function spinner_kubernetes_api_stable() {
184+
for i in {1..10}; do
185+
sleep 1
186+
spinner_kubernetes_api_healthy
187+
done
188+
}
189+
181190
function kubernetes_drain() {
182191
kubectl drain "$1" \
183192
--delete-local-data \

scripts/common/upgrade.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,14 +66,14 @@ function upgrade_kubernetes_local_master_patch() {
6666

6767
kubernetes_drain "$node"
6868

69-
spinner_kubernetes_api_healthy
69+
spinner_kubernetes_api_stable
7070
kubeadm upgrade apply "v$k8sVersion" --yes --config /opt/replicated/kubeadm.conf --force
7171
sed -i "s/kubernetesVersion:.*/kubernetesVersion: v${k8sVersion}/" /opt/replicated/kubeadm.conf
7272

7373
kubernetes_install_host_packages "$k8sVersion"
7474
systemctl daemon-reload
7575
systemctl restart kubelet
76-
spinner_kubernetes_api_healthy
76+
spinner_kubernetes_api_stable
7777
kubectl uncordon "$node"
7878

7979
spinner_until 120 kubernetes_node_has_version "$node" "$k8sVersion"
@@ -178,7 +178,7 @@ EOF
178178
printf "${YELLOW}Drain local node and apply upgrade? ${NC}"
179179
confirmY " "
180180

181-
spinner_kubernetes_api_healthy
181+
spinner_kubernetes_api_stable
182182
kubeadm upgrade apply "v$k8sVersion" --yes --config /opt/replicated/kubeadm.conf --force
183183
upgrade_etcd_image_18 "$k8sVersion"
184184
sed -i "s/kubernetesVersion:.*/kubernetesVersion: v${k8sVersion}/" /opt/replicated/kubeadm.conf
@@ -187,7 +187,7 @@ EOF
187187
systemctl daemon-reload
188188
systemctl restart kubelet
189189

190-
spinner_kubernetes_api_healthy
190+
spinner_kubernetes_api_stable
191191
kubectl uncordon "$node"
192192

193193
# force deleting the cache because the api server will use the stale API versions after kubeadm upgrade

scripts/install.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,8 @@ EOF
133133
spinner_until 120 cert_has_san "$PRIVATE_ADDRESS:6443" "$LOAD_BALANCER_ADDRESS"
134134
fi
135135

136+
spinner_kubernetes_api_stable
137+
136138
exportKubeconfig
137139
KUBEADM_TOKEN_CA_HASH=$(cat /tmp/kubeadm-init | grep 'discovery-token-ca-cert-hash' | awk '{ print $2 }' | head -1)
138140

@@ -173,7 +175,6 @@ EOF
173175
fi
174176
fi
175177

176-
spinner_kubernetes_api_healthy
177178
labelNodes
178179
kubectl cluster-info
179180

0 commit comments

Comments
 (0)