This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch v2-8-test
in repository https://gitbox.apache.org/repos/asf/airflow.git

commit 1c3d6c42f19c42857cf638cd11587007c985661b
Author: Jarek Potiuk <ja...@potiuk.com>
AuthorDate: Sat Feb 17 23:38:53 2024 +0100

    Handle two types of k9s execution and add better diagnostics (#37510)
    
    With kind 0.21.0 there was a bug that disallow to use emulation on
    ARM after creating Kind cluster, this has been fixed and new images
    were released so workaround we implemented in #37371 can be removed.
    However we should leave the option to use local k9s if installed by
    default, and switching to docker when `--use-docker` flas is used.
    
    We also add better diagnostics who might have pulled a buggy
    kindest image and telling them how to recover.
    
    (cherry picked from commit f1af97a9d0f0fc2482ae939a75593877ac84869d)
---
 dev/breeze/doc/images/output_k8s_k9s.svg           | 36 ++++++++-----
 dev/breeze/doc/images/output_k8s_k9s.txt           |  2 +-
 .../airflow_breeze/commands/kubernetes_commands.py | 62 +++++++++++++---------
 .../commands/kubernetes_commands_config.py         |  1 +
 4 files changed, 62 insertions(+), 39 deletions(-)

diff --git a/dev/breeze/doc/images/output_k8s_k9s.svg 
b/dev/breeze/doc/images/output_k8s_k9s.svg
index 564e262faf..4640145777 100644
--- a/dev/breeze/doc/images/output_k8s_k9s.svg
+++ b/dev/breeze/doc/images/output_k8s_k9s.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 464.79999999999995" 
xmlns="http://www.w3.org/2000/svg";>
+<svg class="rich-terminal" viewBox="0 0 1482 513.5999999999999" 
xmlns="http://www.w3.org/2000/svg";>
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -43,7 +43,7 @@
 
     <defs>
     <clipPath id="breeze-k8s-k9s-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="413.79999999999995" />
+      <rect x="0" y="0" width="1463.0" height="462.59999999999997" />
     </clipPath>
     <clipPath id="breeze-k8s-k9s-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -93,9 +93,15 @@
 <clipPath id="breeze-k8s-k9s-line-15">
     <rect x="0" y="367.5" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-k8s-k9s-line-16">
+    <rect x="0" y="391.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-k8s-k9s-line-17">
+    <rect x="0" y="416.3" width="1464" height="24.65"/>
+            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="462.8" rx="8"/><text 
class="breeze-k8s-k9s-title" fill="#c5c8c6" text-anchor="middle" x="740" 
y="27">Command:&#160;k8s&#160;k9s</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="511.6" rx="8"/><text 
class="breeze-k8s-k9s-title" fill="#c5c8c6" text-anchor="middle" x="740" 
y="27">Command:&#160;k8s&#160;k9s</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -111,17 +117,19 @@
 </text><text class="breeze-k8s-k9s-r1" x="12.2" y="93.2" textLength="658.8" 
clip-path="url(#breeze-k8s-k9s-line-3)">Run&#160;k9s&#160;tool.&#160;You&#160;can&#160;pass&#160;any&#160;k9s&#160;args&#160;as&#160;extra&#160;args.</text><text
 class="breeze-k8s-k9s-r1" x="1464" y="93.2" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-3)">
 </text><text class="breeze-k8s-k9s-r1" x="1464" y="117.6" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-4)">
 </text><text class="breeze-k8s-k9s-r5" x="0" y="142" textLength="24.4" 
clip-path="url(#breeze-k8s-k9s-line-5)">╭─</text><text 
class="breeze-k8s-k9s-r5" x="24.4" y="142" textLength="183" 
clip-path="url(#breeze-k8s-k9s-line-5)">&#160;K8S&#160;k9s&#160;flags&#160;</text><text
 class="breeze-k8s-k9s-r5" x="207.4" y="142" textLength="1232.2" 
clip-path="url(#breeze-k8s-k9s-line-5)">─────────────────────────────────────────────────────────────────────────────────────────────────────</text><text
  [...]
-</text><text class="breeze-k8s-k9s-r5" x="0" y="166.4" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-6)">│</text><text class="breeze-k8s-k9s-r4" 
x="24.4" y="166.4" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-6)">-</text><text class="breeze-k8s-k9s-r4" 
x="36.6" y="166.4" textLength="85.4" 
clip-path="url(#breeze-k8s-k9s-line-6)">-python</text><text 
class="breeze-k8s-k9s-r6" x="292.8" y="166.4" textLength="24.4" 
clip-path="url(#breeze-k8s-k9s-line-6)">-p</text><text class= [...]
-</text><text class="breeze-k8s-k9s-r5" x="0" y="190.8" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-7)">│</text><text class="breeze-k8s-k9s-r5" 
x="341.6" y="190.8" textLength="732" 
clip-path="url(#breeze-k8s-k9s-line-7)">[default:&#160;3.8]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1
 [...]
-</text><text class="breeze-k8s-k9s-r5" x="0" y="215.2" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-8)">│</text><text class="breeze-k8s-k9s-r4" 
x="24.4" y="215.2" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-8)">-</text><text class="breeze-k8s-k9s-r4" 
x="36.6" y="215.2" textLength="134.2" 
clip-path="url(#breeze-k8s-k9s-line-8)">-kubernetes</text><text 
class="breeze-k8s-k9s-r4" x="170.8" y="215.2" textLength="97.6" 
clip-path="url(#breeze-k8s-k9s-line-8)">-version</text>< [...]
-</text><text class="breeze-k8s-k9s-r5" x="0" y="239.6" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-9)">│</text><text class="breeze-k8s-k9s-r7" 
x="341.6" y="239.6" textLength="658.8" 
clip-path="url(#breeze-k8s-k9s-line-9)">(&gt;v1.25.16&lt;&#160;|&#160;v1.26.14&#160;|&#160;v1.27.11&#160;|&#160;v1.28.7&#160;|&#160;v1.29.2)</text><text
 class="breeze-k8s-k9s-r5" x="1451.8" y="239.6" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-9)">│</text><text class="breeze-k8s-k9s-r1" 
x= [...]
-</text><text class="breeze-k8s-k9s-r5" x="0" y="264" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-10)">│</text><text 
class="breeze-k8s-k9s-r5" x="341.6" y="264" textLength="658.8" 
clip-path="url(#breeze-k8s-k9s-line-10)">[default:&#160;v1.25.16]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-k [...]
-</text><text class="breeze-k8s-k9s-r5" x="0" y="288.4" textLength="1464" 
clip-path="url(#breeze-k8s-k9s-line-11)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-k8s-k9s-r1" x="1464" y="288.4" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-11)">
-</text><text class="breeze-k8s-k9s-r5" x="0" y="312.8" textLength="24.4" 
clip-path="url(#breeze-k8s-k9s-line-12)">╭─</text><text 
class="breeze-k8s-k9s-r5" x="24.4" y="312.8" textLength="195.2" 
clip-path="url(#breeze-k8s-k9s-line-12)">&#160;Common&#160;options&#160;</text><text
 class="breeze-k8s-k9s-r5" x="219.6" y="312.8" textLength="1220" 
clip-path="url(#breeze-k8s-k9s-line-12)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><t
 [...]
-</text><text class="breeze-k8s-k9s-r5" x="0" y="337.2" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-13)">│</text><text 
class="breeze-k8s-k9s-r4" x="24.4" y="337.2" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-13)">-</text><text 
class="breeze-k8s-k9s-r4" x="36.6" y="337.2" textLength="97.6" 
clip-path="url(#breeze-k8s-k9s-line-13)">-verbose</text><text 
class="breeze-k8s-k9s-r6" x="158.6" y="337.2" textLength="24.4" 
clip-path="url(#breeze-k8s-k9s-line-13)">-v</text><text c [...]
-</text><text class="breeze-k8s-k9s-r5" x="0" y="361.6" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-14)">│</text><text 
class="breeze-k8s-k9s-r4" x="24.4" y="361.6" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-14)">-</text><text 
class="breeze-k8s-k9s-r4" x="36.6" y="361.6" textLength="48.8" 
clip-path="url(#breeze-k8s-k9s-line-14)">-dry</text><text 
class="breeze-k8s-k9s-r4" x="85.4" y="361.6" textLength="48.8" 
clip-path="url(#breeze-k8s-k9s-line-14)">-run</text><text clas [...]
-</text><text class="breeze-k8s-k9s-r5" x="0" y="386" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-15)">│</text><text 
class="breeze-k8s-k9s-r4" x="24.4" y="386" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-15)">-</text><text 
class="breeze-k8s-k9s-r4" x="36.6" y="386" textLength="61" 
clip-path="url(#breeze-k8s-k9s-line-15)">-help</text><text 
class="breeze-k8s-k9s-r6" x="158.6" y="386" textLength="24.4" 
clip-path="url(#breeze-k8s-k9s-line-15)">-h</text><text class="breeze- [...]
-</text><text class="breeze-k8s-k9s-r5" x="0" y="410.4" textLength="1464" 
clip-path="url(#breeze-k8s-k9s-line-16)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-k8s-k9s-r1" x="1464" y="410.4" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-16)">
+</text><text class="breeze-k8s-k9s-r5" x="0" y="166.4" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-6)">│</text><text class="breeze-k8s-k9s-r4" 
x="24.4" y="166.4" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-6)">-</text><text class="breeze-k8s-k9s-r4" 
x="36.6" y="166.4" textLength="48.8" 
clip-path="url(#breeze-k8s-k9s-line-6)">-use</text><text 
class="breeze-k8s-k9s-r4" x="85.4" y="166.4" textLength="85.4" 
clip-path="url(#breeze-k8s-k9s-line-6)">-docker</text><text class [...]
+</text><text class="breeze-k8s-k9s-r5" x="0" y="190.8" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-7)">│</text><text class="breeze-k8s-k9s-r1" 
x="341.6" y="190.8" textLength="1098" 
clip-path="url(#breeze-k8s-k9s-line-7)">if&#160;not&#160;found&#160;on&#160;PATH).&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1
 [...]
+</text><text class="breeze-k8s-k9s-r5" x="0" y="215.2" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-8)">│</text><text class="breeze-k8s-k9s-r4" 
x="24.4" y="215.2" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-8)">-</text><text class="breeze-k8s-k9s-r4" 
x="36.6" y="215.2" textLength="85.4" 
clip-path="url(#breeze-k8s-k9s-line-8)">-python</text><text 
class="breeze-k8s-k9s-r6" x="292.8" y="215.2" textLength="24.4" 
clip-path="url(#breeze-k8s-k9s-line-8)">-p</text><text class= [...]
+</text><text class="breeze-k8s-k9s-r5" x="0" y="239.6" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-9)">│</text><text class="breeze-k8s-k9s-r5" 
x="341.6" y="239.6" textLength="732" 
clip-path="url(#breeze-k8s-k9s-line-9)">[default:&#160;3.8]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1
 [...]
+</text><text class="breeze-k8s-k9s-r5" x="0" y="264" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-10)">│</text><text 
class="breeze-k8s-k9s-r4" x="24.4" y="264" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-10)">-</text><text 
class="breeze-k8s-k9s-r4" x="36.6" y="264" textLength="134.2" 
clip-path="url(#breeze-k8s-k9s-line-10)">-kubernetes</text><text 
class="breeze-k8s-k9s-r4" x="170.8" y="264" textLength="97.6" 
clip-path="url(#breeze-k8s-k9s-line-10)">-version</text><text [...]
+</text><text class="breeze-k8s-k9s-r5" x="0" y="288.4" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-11)">│</text><text 
class="breeze-k8s-k9s-r7" x="341.6" y="288.4" textLength="658.8" 
clip-path="url(#breeze-k8s-k9s-line-11)">(&gt;v1.25.16&lt;&#160;|&#160;v1.26.14&#160;|&#160;v1.27.11&#160;|&#160;v1.28.7&#160;|&#160;v1.29.2)</text><text
 class="breeze-k8s-k9s-r5" x="1451.8" y="288.4" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-11)">│</text><text 
class="breeze-k8s-k9s-r1" [...]
+</text><text class="breeze-k8s-k9s-r5" x="0" y="312.8" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-12)">│</text><text 
class="breeze-k8s-k9s-r5" x="341.6" y="312.8" textLength="658.8" 
clip-path="url(#breeze-k8s-k9s-line-12)">[default:&#160;v1.25.16]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="bree [...]
+</text><text class="breeze-k8s-k9s-r5" x="0" y="337.2" textLength="1464" 
clip-path="url(#breeze-k8s-k9s-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-k8s-k9s-r1" x="1464" y="337.2" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-13)">
+</text><text class="breeze-k8s-k9s-r5" x="0" y="361.6" textLength="24.4" 
clip-path="url(#breeze-k8s-k9s-line-14)">╭─</text><text 
class="breeze-k8s-k9s-r5" x="24.4" y="361.6" textLength="195.2" 
clip-path="url(#breeze-k8s-k9s-line-14)">&#160;Common&#160;options&#160;</text><text
 class="breeze-k8s-k9s-r5" x="219.6" y="361.6" textLength="1220" 
clip-path="url(#breeze-k8s-k9s-line-14)">────────────────────────────────────────────────────────────────────────────────────────────────────</text><t
 [...]
+</text><text class="breeze-k8s-k9s-r5" x="0" y="386" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-15)">│</text><text 
class="breeze-k8s-k9s-r4" x="24.4" y="386" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-15)">-</text><text 
class="breeze-k8s-k9s-r4" x="36.6" y="386" textLength="97.6" 
clip-path="url(#breeze-k8s-k9s-line-15)">-verbose</text><text 
class="breeze-k8s-k9s-r6" x="158.6" y="386" textLength="24.4" 
clip-path="url(#breeze-k8s-k9s-line-15)">-v</text><text class="br [...]
+</text><text class="breeze-k8s-k9s-r5" x="0" y="410.4" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-16)">│</text><text 
class="breeze-k8s-k9s-r4" x="24.4" y="410.4" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-16)">-</text><text 
class="breeze-k8s-k9s-r4" x="36.6" y="410.4" textLength="48.8" 
clip-path="url(#breeze-k8s-k9s-line-16)">-dry</text><text 
class="breeze-k8s-k9s-r4" x="85.4" y="410.4" textLength="48.8" 
clip-path="url(#breeze-k8s-k9s-line-16)">-run</text><text clas [...]
+</text><text class="breeze-k8s-k9s-r5" x="0" y="434.8" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-17)">│</text><text 
class="breeze-k8s-k9s-r4" x="24.4" y="434.8" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-17)">-</text><text 
class="breeze-k8s-k9s-r4" x="36.6" y="434.8" textLength="61" 
clip-path="url(#breeze-k8s-k9s-line-17)">-help</text><text 
class="breeze-k8s-k9s-r6" x="158.6" y="434.8" textLength="24.4" 
clip-path="url(#breeze-k8s-k9s-line-17)">-h</text><text class= [...]
+</text><text class="breeze-k8s-k9s-r5" x="0" y="459.2" textLength="1464" 
clip-path="url(#breeze-k8s-k9s-line-18)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-k8s-k9s-r1" x="1464" y="459.2" textLength="12.2" 
clip-path="url(#breeze-k8s-k9s-line-18)">
 </text>
     </g>
     </g>
diff --git a/dev/breeze/doc/images/output_k8s_k9s.txt 
b/dev/breeze/doc/images/output_k8s_k9s.txt
index baaa367762..8d9610b222 100644
--- a/dev/breeze/doc/images/output_k8s_k9s.txt
+++ b/dev/breeze/doc/images/output_k8s_k9s.txt
@@ -1 +1 @@
-9198ee4e5fa0d97caf6cb6d51480f814
+b92a689a190e9f454d09157b859da1b6
diff --git a/dev/breeze/src/airflow_breeze/commands/kubernetes_commands.py 
b/dev/breeze/src/airflow_breeze/commands/kubernetes_commands.py
index 5ca010c8ac..9ae00220d8 100644
--- a/dev/breeze/src/airflow_breeze/commands/kubernetes_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/kubernetes_commands.py
@@ -46,7 +46,6 @@ from airflow_breeze.utils.ci_group import ci_group
 from airflow_breeze.utils.click_utils import BreezeGroup
 from airflow_breeze.utils.console import Output, get_console
 from airflow_breeze.utils.custom_param_types import CacheableChoice, 
CacheableDefault
-from airflow_breeze.utils.host_info_utils import Architecture, 
get_host_architecture
 from airflow_breeze.utils.kubernetes_utils import (
     CHART_PATH,
     K8S_CLUSTERS_PATH,
@@ -166,6 +165,13 @@ option_upgrade = click.option(
     is_flag=True,
     envvar="UPGRADE",
 )
+option_use_docker = click.option(
+    "--use-docker",
+    help="Use Docker to start k8s executor (otherwise k9s from PATH is used 
and only"
+    " run with docker if not found on PATH).",
+    is_flag=True,
+    envvar="USE_DOCKER",
+)
 option_use_standard_naming = click.option(
     "--use-standard-naming",
     help="Use standard naming.",
@@ -1207,10 +1213,11 @@ def deploy_airflow(
 )
 @option_python
 @option_kubernetes_version
+@option_use_docker
 @option_verbose
 @option_dry_run
 @click.argument("k9s_args", nargs=-1, type=click.UNPROCESSED)
-def k9s(python: str, kubernetes_version: str, k9s_args: tuple[str, ...]):
+def k9s(python: str, kubernetes_version: str, use_docker: bool, k9s_args: 
tuple[str, ...]):
     result = create_virtualenv(force_venv_setup=False)
     if result.returncode != 0:
         sys.exit(result.returncode)
@@ -1224,10 +1231,24 @@ def k9s(python: str, kubernetes_version: str, k9s_args: 
tuple[str, ...]):
     if not k9s_editor:
         env["K9S_EDITOR"] = env["EDITOR"]
     kubeconfig_file = get_kubeconfig_file(python=python, 
kubernetes_version=kubernetes_version)
-    # Until https://github.com/kubernetes-sigs/kind/pull/3511 is merged and 
released, running AMD images
-    # on ARM is broken with kind cluster running, so we need to run k9s 
directly on the host
-    arch, _ = get_host_architecture()
-    if arch != Architecture.ARM:
+    found_k9s = shutil.which("k9s")
+    if not use_docker and found_k9s:
+        get_console().print(
+            "[info]Running k9s tool found in PATH at $(found_k9s). Use 
--use-docker to run using docker."
+        )
+        result = run_command(
+            [
+                "k9s",
+                "--namespace",
+                HELM_AIRFLOW_NAMESPACE,
+                *k9s_args,
+            ],
+            env=env,
+            check=False,
+        )
+        sys.exit(result.returncode)
+    else:
+        get_console().print("[info]Running k9s tool using docker.")
         result = run_command(
             [
                 "docker",
@@ -1251,26 +1272,19 @@ def k9s(python: str, kubernetes_version: str, k9s_args: 
tuple[str, ...]):
             check=False,
         )
         if result.returncode != 0:
-            sys.exit(result.returncode)
-    else:
-        if shutil.which("k9s") is None:
             get_console().print(
-                "[error]k9s is not installed. Please install it first "
-                "(for example with `brew install k9s`)."
+                "\n[warning]If you see `exec /bin/k9s: exec format error` it 
might be because"
+                " of known kind bug 
(https://github.com/kubernetes-sigs/kind/issues/3510).\n"
             )
-            sys.exit(1)
-        result = run_command(
-            [
-                "k9s",
-                "--namespace",
-                HELM_AIRFLOW_NAMESPACE,
-                *k9s_args,
-            ],
-            env=env,
-            check=False,
-        )
-        if result.returncode != 0:
-            sys.exit(result.returncode)
+            get_console().print(
+                "\n[info]In such case you might want to pull latest `kindest` 
images. "
+                "For example if you run kubernetes version v1.25.16 you might 
need to run:\n"
+                "[special]* run `breeze k8s delete-cluster` (note k8s version 
printed after "
+                "Python version)\n"
+                "* run `docker pull kindest/node:v1.25.16`\n"
+                "* restart docker engine\n\n"
+            )
+        sys.exit(result.returncode)
 
 
 def _logs(python: str, kubernetes_version: str):
diff --git 
a/dev/breeze/src/airflow_breeze/commands/kubernetes_commands_config.py 
b/dev/breeze/src/airflow_breeze/commands/kubernetes_commands_config.py
index 3e988bd6bd..314fc92f2e 100644
--- a/dev/breeze/src/airflow_breeze/commands/kubernetes_commands_config.py
+++ b/dev/breeze/src/airflow_breeze/commands/kubernetes_commands_config.py
@@ -255,6 +255,7 @@ KUBERNETES_PARAMETERS: dict[str, list[dict[str, str | 
list[str]]]] = {
         {
             "name": "K8S k9s flags",
             "options": [
+                "--use-docker",
                 "--python",
                 "--kubernetes-version",
             ],

Reply via email to