Powershell

PowerShell 上的 kubectl 差異?

  • July 21, 2020

kubectl可以區分配置(部落格文件)。

在 Linux 上,這很好用(WSL、Ubuntu 18、bash)。它給了我類似於以下的合理輸出。

$ kubectl diff --filename some-resources.yaml
diff -u -N /tmp/LIVE-022965340/apps.v1.Deployment.… /tmp/MERGED-396067851/apps.v1.Deployment.…
--- /tmp/LIVE-022965340/apps.v1.Deployment.…      2020-07-20 17:06:21.444811700 +0200
+++ /tmp/MERGED-396067851/apps.v1.Deployment.…    2020-07-20 17:06:21.470315500 +0200
@@ -6,7 +6,7 @@
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"apps/v1",…
  creationTimestamp: "2020-07-16T15:13:03Z"
-  generation: 1
+  generation: 2
  name: …
  namespace: …
  resourceVersion: "32827467"
@@ -121,7 +121,7 @@
        - chown www-data:www-data /files/ -R;chmod -R 755 /files/; chmod -R g+ws /files/
        command:
        - /bin/bash
-        - -c
+        - -cv
        image: …
        imagePullPolicy: IfNotPresent
        name: init-sites-volume

在 PowerShell 上,kubectl diff失敗(PowerShell 7、Windows 10)。

PS > kubectl diff --filename some-resources.yaml
error: failed to run "diff": executable file not found in %PATH%

似乎要麼kubectl找不到名為 的執行檔diff,要麼因為它diff是 的別名而出錯Compare-Object,這當然與 Linux 的語法有很大不同diff

是否可以kubectl diff在 PowerShell 上工作?如果是這樣,我應該安裝哪個 diff-tool 以及應該$env:KUBECTL_EXTERNAL_DIFF=…設置什麼?

這可以通過安裝DiffUtils for Windows來完成。kubectl diff正在使用 Unix程序,diff因此 Windows 需要一些幫助。簡單地:

  • 安裝 DiffUtils
  • 確保 bin 文件夾映射到您的 Win10 PATH 變數中(應該自動完成)
  • 重啟機器

請讓我知道這是否有幫助。

引用自:https://serverfault.com/questions/1025987