From 3e455e67c507838424576ebab2414bec056de262 Mon Sep 17 00:00:00 2001 From: Nick Maliwacki Date: Tue, 28 Jul 2020 13:54:56 -0700 Subject: [PATCH] Add sleep to ensure cluster is ready add sleep to ensure cluster is ready --- dist/index.js | 22 +++++++++++++++++++++- index.js | 22 +++++++++++++++++++++- linux.sh | 4 ++++ windows.ps1 | 20 ++++++++++++++++++-- 4 files changed, 64 insertions(+), 4 deletions(-) diff --git a/dist/index.js b/dist/index.js index 06ed5af..a6785a1 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1633,6 +1633,10 @@ sudo chmod 777 ~/.kube/config # systemctl status k3s # sleep 15 cat ~/.kube/config + +# this is to ensure that everything settled (there are cases where default service accounts were not yet created) +sleep 4 + kubectl get node ` @@ -1709,7 +1713,7 @@ logMessage "copying kubeconfig" copy "~/.kube/k3s.yaml" "~/.kube/config" foreach ($seconds in 1..120) { - $empty = kubectl get node $env:COMPUTERNAME + $empty = kubectl get node $([Environment]::MachineName) if($LASTEXITCODE -eq 0) { break; @@ -1719,11 +1723,27 @@ foreach ($seconds in 1..120) { logMessage "node exists" + +# test for 120 to see if node will go ready +foreach($second in 1..120){ + $n = kubectl get node $([Environment]::MachineName) -o json | ConvertFrom-Json + # not sure if there is a better way for testing that it went ready.. but this seems to work + if(($n.status.conditions |?{$_.reason -eq "KubeletReady"} |%{$_.status} )-contains "True"){ + break + } + sleep 1; +} + +logMessage "node ready" + type $logs_file kubectl get node logMessage "done" + +# this is to ensure that everything settled (there are cases where default service accounts were not yet created) +sleep 2 ` let windowsShell = 'pwsh' diff --git a/index.js b/index.js index 67ccc17..fa93cc9 100644 --- a/index.js +++ b/index.js @@ -45,6 +45,10 @@ sudo chmod 777 ~/.kube/config # systemctl status k3s # sleep 15 cat ~/.kube/config + +# this is to ensure that everything settled (there are cases where default service accounts were not yet created) +sleep 4 + kubectl get node ` @@ -121,7 +125,7 @@ logMessage "copying kubeconfig" copy "~/.kube/k3s.yaml" "~/.kube/config" foreach ($seconds in 1..120) { - $empty = kubectl get node $env:COMPUTERNAME + $empty = kubectl get node $([Environment]::MachineName) if($LASTEXITCODE -eq 0) { break; @@ -131,11 +135,27 @@ foreach ($seconds in 1..120) { logMessage "node exists" + +# test for 120 to see if node will go ready +foreach($second in 1..120){ + $n = kubectl get node $([Environment]::MachineName) -o json | ConvertFrom-Json + # not sure if there is a better way for testing that it went ready.. but this seems to work + if(($n.status.conditions |?{$_.reason -eq "KubeletReady"} |%{$_.status} )-contains "True"){ + break + } + sleep 1; +} + +logMessage "node ready" + type $logs_file kubectl get node logMessage "done" + +# this is to ensure that everything settled (there are cases where default service accounts were not yet created) +sleep 2 ` let windowsShell = 'pwsh' diff --git a/linux.sh b/linux.sh index d5e8822..f1e4221 100644 --- a/linux.sh +++ b/linux.sh @@ -7,4 +7,8 @@ sudo chmod 777 ~/.kube/config # systemctl status k3s # sleep 15 cat ~/.kube/config + +# this is to ensure that everything settled (there are cases where default service accounts were not yet created) +sleep 4 + kubectl get node \ No newline at end of file diff --git a/windows.ps1 b/windows.ps1 index 67db6bc..1b14a57 100644 --- a/windows.ps1 +++ b/windows.ps1 @@ -68,7 +68,7 @@ logMessage "copying kubeconfig" copy "~/.kube/k3s.yaml" "~/.kube/config" foreach ($seconds in 1..120) { - $empty = kubectl get node $env:COMPUTERNAME + $empty = kubectl get node $([Environment]::MachineName) if($LASTEXITCODE -eq 0) { break; @@ -78,8 +78,24 @@ foreach ($seconds in 1..120) { logMessage "node exists" + +# test for 120 to see if node will go ready +foreach($second in 1..120){ + $n = kubectl get node $([Environment]::MachineName) -o json | ConvertFrom-Json + # not sure if there is a better way for testing that it went ready.. but this seems to work + if(($n.status.conditions |?{$_.reason -eq "KubeletReady"} |%{$_.status} )-contains "True"){ + break + } + sleep 1; +} + +logMessage "node ready" + type $logs_file kubectl get node -logMessage "done" \ No newline at end of file +logMessage "done" + +# this is to ensure that everything settled (there are cases where default service accounts were not yet created) +sleep 2