kOps 1.19 在与 AWS 集群交互时报告错误 "Unauthorized"
kOps 1.19 reports error "Unauthorized" when interfacing with AWS cluster
我正在按照 kOps 教程在 AWS 上设置集群。我可以用
创建集群
kops create cluster
kops update cluster --yes
但是,在验证我的集群是否正确设置时
kops validate cluster
我遇到错误:
unexpected error during validation: error listing nodes: Unauthorized
同样的错误发生在许多其他 kOps 操作中。
我检查了我的 kOps/K8s 版本,它是 1.19:
> kops version
Version 1.19.1 (git-8589b4d157a9cb05c54e320c77b0724c4dd094b2)
> kubectl version
Client Version: version.Info{Major:"1", Minor:"20" ...
Server Version: version.Info{Major:"1", Minor:"19" ...
我该如何解决这个问题?
Kubernetes v1.19 删除了基本的身份验证支持,顺便使默认的 kOps 凭据无法授权。为解决此问题,我们将更新集群以使用网络负载均衡器 (NLB) 而不是默认的经典负载均衡器 (CLB)。可以使用未弃用的 AuthZ 机制访问 NLB。
创建集群后,但在更新云资源之前(运行 --yes
之前),编辑其配置以使用 NLB:
kops edit cluster
然后将您的负载均衡器 class 更新为 Network
:
spec:
api:
loadBalancer:
class: Network
现在用
更新云资源
kops update cluster --yes
并且您将能够在集群上使用 kOps 通过 AuthZ。
请注意,使用 NLB 还有其他几个优点,check the AWS docs for a comparison。
如果您有想要更新为 NLB 的预先存在的集群,则需要执行更多步骤以确保客户端不会开始使 AuthZ 失败、删除旧资源等。您会找到更好的kOps v1.19 release notes.
中的指南
从 kOps 1.19 开始,您会突然收到此错误的原因有两个:
- 如果您删除集群并重新配置它,您的旧管理员不会从 kubeconfig 中删除并且 kOps/kubectl 会尝试重新使用它。
- 默认情况下,新证书的 TTL 为 18 小时,因此您需要大约每天重新配置一次。
以上两个问题已由 运行 kops export kubecfg --admin
解决。
请注意,不鼓励使用默认的 TLS 凭据。考虑改用 OIDC 提供商之类的事情。
我正在按照 kOps 教程在 AWS 上设置集群。我可以用
创建集群kops create cluster
kops update cluster --yes
但是,在验证我的集群是否正确设置时
kops validate cluster
我遇到错误:
unexpected error during validation: error listing nodes: Unauthorized
同样的错误发生在许多其他 kOps 操作中。
我检查了我的 kOps/K8s 版本,它是 1.19:
> kops version
Version 1.19.1 (git-8589b4d157a9cb05c54e320c77b0724c4dd094b2)
> kubectl version
Client Version: version.Info{Major:"1", Minor:"20" ...
Server Version: version.Info{Major:"1", Minor:"19" ...
我该如何解决这个问题?
Kubernetes v1.19 删除了基本的身份验证支持,顺便使默认的 kOps 凭据无法授权。为解决此问题,我们将更新集群以使用网络负载均衡器 (NLB) 而不是默认的经典负载均衡器 (CLB)。可以使用未弃用的 AuthZ 机制访问 NLB。
创建集群后,但在更新云资源之前(运行 --yes
之前),编辑其配置以使用 NLB:
kops edit cluster
然后将您的负载均衡器 class 更新为 Network
:
spec:
api:
loadBalancer:
class: Network
现在用
更新云资源kops update cluster --yes
并且您将能够在集群上使用 kOps 通过 AuthZ。
请注意,使用 NLB 还有其他几个优点,check the AWS docs for a comparison。
如果您有想要更新为 NLB 的预先存在的集群,则需要执行更多步骤以确保客户端不会开始使 AuthZ 失败、删除旧资源等。您会找到更好的kOps v1.19 release notes.
中的指南从 kOps 1.19 开始,您会突然收到此错误的原因有两个:
- 如果您删除集群并重新配置它,您的旧管理员不会从 kubeconfig 中删除并且 kOps/kubectl 会尝试重新使用它。
- 默认情况下,新证书的 TTL 为 18 小时,因此您需要大约每天重新配置一次。
以上两个问题已由 运行 kops export kubecfg --admin
解决。
请注意,不鼓励使用默认的 TLS 凭据。考虑改用 OIDC 提供商之类的事情。