故障排除
故障排除
我收到关于“无法从“stable”图表仓库获取更新”的警告
运行 helm repo list
。如果它显示您的 stable
仓库指向 storage.googleapis.com
URL,则您需要更新该仓库。在 2020 年 11 月 13 日,Helm 图表仓库 不再受支持,这是在为期一年的弃用期后发生的。已在 https://charts.helm.sh/stable
提供了一个存档,但将不再接收更新。
您可以运行以下命令来修复您的仓库
$ helm repo add stable https://charts.helm.sh/stable --force-update
对于 incubator
仓库也是如此,它有一个位于 https://charts.helm.sh/incubator 的存档。您可以运行以下命令来修复它
$ helm repo add incubator https://charts.helm.sh/incubator --force-update
我收到警告“警告:“kubernetes-charts.storage.googleapis.com”已弃用,将被“stable”替换,并在 2020 年 11 月 13 日删除。”
旧的 Google helm 图表仓库已被新的 Helm 图表仓库替换。
运行以下命令以永久解决此问题
$ helm repo add stable https://charts.helm.sh/stable --force-update
如果您为 incubator
收到类似的错误,请运行此命令
$ helm repo add incubator https://charts.helm.sh/incubator --force-update
当我添加 Helm 仓库时,我收到错误“错误:仓库“https://kubernetes-charts.storage.googleapis.com”不再可用。”
Helm 图表仓库在 为期一年的弃用期 后不再受支持。这些仓库的存档位于 https://charts.helm.sh/stable
和 https://charts.helm.sh/incubator
,但它们将不再接收更新。helm repo add
命令不会让您添加旧的 URL,除非您指定 --use-deprecated-repos
。
在 GKE(Google Container Engine)上,我收到“当前没有打开 SSH 隧道”。
Error: Error forwarding ports: error upgrading connection: No SSH tunnels currently open. Were the targets able to accept an ssh-key for user "gke-[redacted]"?
错误消息的另一个变体是
Unable to connect to the server: x509: certificate signed by unknown authority
问题是您的本地 Kubernetes 配置文件必须具有正确的凭据。
当您在 GKE 上创建集群时,它会为您提供凭据,包括 SSL 证书和证书颁发机构。这些需要存储在 Kubernetes 配置文件中(默认:~/.kube/config
),以便 kubectl
和 helm
可以访问它们。
从 Helm 2 迁移后,helm list
仅显示部分(或没有)我的发布。
您可能错过了 Helm 3 现在在整个集群命名空间中使用命名空间来范围发布这一事实。这意味着对于所有引用发布的命令,您必须:
- 依赖于活动 Kubernetes 上下文中的当前命名空间(如
kubectl config view --minify
命令所述), - 使用
--namespace
/-n
标志指定正确的命名空间,或者 - 对于
helm list
命令,指定--all-namespaces
/-A
标志
这适用于 helm ls
、helm uninstall
和所有其他引用发布的 helm
命令。
在 macOS 上,访问文件 /etc/.mdns_debug
。为什么?
我们知道在 macOS 上,Helm 会尝试访问名为 /etc/.mdns_debug
的文件。如果该文件存在,Helm 会在执行时保持文件句柄打开。
这是由 macOS 的 MDNS 库引起的。它尝试加载该文件以读取调试设置(如果已启用)。文件句柄可能不应该保持打开状态,并且此问题已报告给 Apple。但是,导致此行为的是 macOS,而不是 Helm。
如果您不希望 Helm 加载此文件,您可以尝试将 Helm 编译为不使用主机网络堆栈的静态库。这样做会增加 Helm 的二进制文件大小,但会阻止文件被打开。
此问题最初被标记为潜在的安全问题。但后来确定此行为不会造成任何缺陷或漏洞。
helm repo add 在以前有效时失败
在 helm 3.3.1 及之前版本中,如果您尝试添加已存在的仓库,则命令 helm repo add <reponame> <url>
将不会输出任何内容。--no-update
标志将在仓库已注册的情况下引发错误。
在 helm 3.3.2 及更高版本中,尝试添加已存在的仓库将引发错误
错误:仓库名称(reponame)已存在,请指定其他名称
现在默认行为已反转。--no-update
现在被忽略,如果您想替换(覆盖)已存在的仓库,则可以使用 --force-update
。
这是由于安全修复的重大变更造成的,如 Helm 3.3.2 发行说明 中所述。
启用 Kubernetes 客户端日志记录
可以使用 klog 标志打印用于调试 Kubernetes 客户端的日志消息。在大多数情况下,使用 -v
标志设置详细级别就足够了。
例如
helm list -v 6
Tiller 安装停止工作,并且访问被拒绝
Helm 发布以前可以从 https://storage.googleapis.com/kubernetes-helm/ 获取。如 “宣布 get.helm.sh” 中所述,官方位置在 2019 年 6 月更改。GitHub 容器注册表 使所有旧的 Tiller 镜像都可用。
如果您尝试从过去使用的存储桶下载旧版本的 Helm,您可能会发现它们丢失了
<Error>
<Code>AccessDenied</Code>
<Message>Access denied.</Message>
<Details>Anonymous caller does not have storage.objects.get access to the Google Cloud Storage object.</Details>
</Error>
旧的 Tiller 镜像位置 从 2021 年 8 月开始删除镜像。我们已在 GitHub 容器注册表 位置提供了这些镜像。例如,要下载 v2.17.0 版本,请替换
https://storage.googleapis.com/kubernetes-helm/helm-v2.17.0-linux-amd64.tar.gz
为
https://get.helm.sh/helm-v2.17.0-linux-amd64.tar.gz
使用 Helm v2.17.0 初始化
helm init —upgrade
或者,如果需要其他版本,请使用 --tiller-image
标志覆盖默认位置并安装特定的 Helm v2 版本
helm init --tiller-image ghcr.io/helm/tiller:v2.16.9
注意:Helm 维护人员建议迁移到当前支持的 Helm 版本。Helm v2.17.0 是 Helm v2 的最终版本;Helm v2 从 2020 年 11 月起不再受支持,如 Helm 2 和图表项目现在不再受支持 中所述。从那时起,针对 Helm 标记了许多 CVE,这些漏洞已在 Helm v3 中修复,但永远不会在 Helm v2 中修复。请参阅 已发布的 Helm 咨询的当前列表,并计划 立即迁移到 Helm v3。