【问题标题】:Azure CLI in WSL2 uses Windows home directoryWSL2 中的 Azure CLI 使用 Windows 主目录
【发布时间】:2021-08-23 14:36:57
【问题描述】:

在 WSL2 中运行它(当前文件夹 /home/my-linux-user/):

az aks get-credentials --resource-group my-resource-group --name cluster-name

输出:

Merged "cluster-name" as current context in C:\Users\my-windows-user\.kube\config

我需要做什么才能让 Azure CLI 将 kube 配置放在 WSL 的 Linux 主文件夹中?

【问题讨论】:

  • 为什么要让 Azure CLI 将 kube 配置放在 WSL 的 Linux 主文件夹中?
  • @Philippe 我想在 Linux (WSL) 中使用 kubectl。从 aks 集群获取 kube 配置的一种简单方法是使用 azure cli。可以在旧机器上进行此操作,但是现在我正在新机器上进行设置,所以我不记得当时我做了什么。
  • 好的,我现在明白了。您是否尝试过创建符号链接,例如 ln -fs /mnt/c/Users/my-windows-user/.kube /home/my-linux-user/.kube ?你用的kubectl,是WSL版还是Windows版?
  • @Philippe 对不起,应该说清楚。我正在使用 Ubuntu 20.04。我已经使用 Brew(适用于 Linux)在 WSL 中安装了kubectl

标签: windows-subsystem-for-linux azure-aks azure-cli windows-terminal


【解决方案1】:

您在 WSL 中使用什么 Linux 发行版?另一个相关问题来自@Philippe

你使用的kubectl,是WSL还是Windows版本?

您是否在 WSL Linux 发行版中运行 az aks install-cli 提供的 kubectl 客户端? C: 将只能在 WSL Linux shell 中以 /mnt/c/ 的形式提供,因此您不应收到任何带有 C:\Users\my-windows-user\.kube\config 之类的路径的消息。请确保您使用的是 WSL shell 中的 linux kubectl 可执行文件。

就我而言,我使用带有 WSL 的 Ubuntu 20.04 LTS [How-to install]。以下是一个示例:

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Install the latest PowerShell for new features and improvements! https://aka.ms/PSWindows

Loading personal and system profiles took 1725ms.
❯ srbose@xxxxxxx ❯ ~ ❯
❯ bash
srbose@xxxxxxx:/mnt/c/Users/srbose$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.2 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.2 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
srbose@xxxxxxx:/mnt/c/Users/srbose$ az aks get-credentials -g $RG -n akstest
The behavior of this command has been altered by the following extension: aks-preview
/home/srbose/.kube/config has permissions "644".
It should be readable and writable only by its owner.
Merged "akstest" as current context in /home/srbose/.kube/config
srbose@xxxxxxx:/mnt/c/Users/srbose$

默认行为如下:

如果设置了--kubeconfig 标志,则仅使用指定的文件。不要合并。只允许此标志的一个实例。

否则,如果设置了KUBECONFIG 环境变量,则将其用作应合并的文件列表。根据以下规则合并KUBECONFIG环境变量中列出的文件:

  • 忽略空文件名。
  • 对内容无法反序列化的文件产生错误。
  • 第一个设置特定值或映射键的文件获胜。
  • 切勿更改值或映射键。示例:保留第一个文件的上下文以设置current-context。示例:如果两个文件指定 red-user,则仅使用第一个文件的 red-user 中的值。即使第二个文件在red-user 下有不冲突的条目,也要丢弃它们。

有关设置KUBECONFIG 环境变量的示例,请参阅Setting the KUBECONFIG environment variable

否则,使用默认的 kubeconfig 文件 $HOME/.kube/config,不进行合并。更多信息请查看article

您可以检查是否设置了 KUBECONFIG 环境变量

echo $KUBECONFIG

【讨论】:

  • whereis az 返回az: /usr/bin/az /opt/az/bin/az.bat /opt/az/bin/az /mnt/c/Program Files (x86)/Microsoft SDKs/Azure/CLI2/wbin/az /mnt/c/Program Files (x86)/Microsoft SDKs/Azure/CLI2/wbin/az.cmd 所以我认为 Linux “看到”了 Azure CLI 在 Windows 和 Linux 中的安装。 which az 返回 /mnt/c/Program Files (x86)/Microsoft SDKs/Azure/CLI2/wbin/az 这是错误的(我想要 Linux 上的 Linux)。
  • 哦!我想到了。我真笨。我确定我在安装后重新启动了终端,但显然我没有。重新启动后,which az 返回正确的。
猜你喜欢
  • 1970-01-01
  • 2023-02-22
  • 2020-03-17
  • 1970-01-01
  • 1970-01-01
  • 2021-06-02
  • 2012-12-29
  • 1970-01-01
  • 2021-12-23
相关资源
最近更新 更多