You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform执行成功,但AWS EKS集群内创建的资源无法在控制台查看

问题排查:Terraform提示创建K8s资源但AWS控制台不可见

可能原因及排查步骤

1. 验证Kubernetes Provider的集群连接正确性

Terraform的Kubernetes Provider配置是否指向目标EKS集群是核心排查点:

  • 手动执行认证命令获取集群访问令牌:
    aws eks get-token --cluster-name $(terraform output -raw cluster_id)
    
  • 用获取到的令牌直接调用集群API,验证资源是否存在:
    kubectl --server=$(terraform output -raw cluster_endpoint) \
            --certificate-authority=<(echo $(terraform output -raw cluster_ca_certificate) | base64 -d) \
            --token=<上面命令返回的token> \
            get namespace jupyterhub
    
    如果能查到命名空间,说明资源确实存在,只是控制台显示延迟或上下文问题;如果查不到,说明Provider配置有误,检查data.aws_eks_cluster.cluster的输出是否正确。

2. 确认kubectl上下文与目标集群匹配

控制台显示的资源依赖当前kubectl上下文,执行以下命令验证:

# 查看所有上下文
kubectl config get-contexts
# 切换到目标集群上下文(替换为你的集群上下文名)
kubectl config use-context arn:aws:eks:<区域>:<账号ID>:cluster/<集群名>
# 再次查询资源
kubectl get ns jupyterhub
kubectl get daemonset -n kube-system nvidia-device-plugin-daemonset-0.9.0

3. 检查DaemonSet的调度条件

你的DaemonSet配置了节点亲和性和容忍度,可能导致资源未调度到节点上:

  • 检查节点实例类型是否匹配:
    kubectl get nodes -o custom-columns=NAME:.metadata.name,INSTANCE_TYPE:.metadata.labels.kubernetes\.io/instance-type
    
    注意:K8s 1.24+已弃用beta.kubernetes.io/instance-type标签,改用kubernetes.io/instance-type,如果集群版本较高,需要修改DaemonSet的亲和性标签。
  • 检查节点污点是否与容忍度匹配:
    kubectl describe node <节点名> | grep Taints
    
    确认节点存在nvidia.com/gpu或hub.jupyter.org/dedicated污点,否则容忍度配置可能导致Pod无法调度。

4. 同步Terraform状态与实际集群

如果上述验证都正常,可能是Terraform状态与实际集群不一致:

  • 查看Terraform状态中的资源信息:
    terraform state show kubernetes_namespace.jupyterhub
    
  • 执行terraform refresh更新状态,或尝试导入资源(如果确认资源存在):
    terraform import kubernetes_namespace.jupyterhub jupyterhub
    terraform import kubernetes_daemonset.nvidia-device-plugin kube-system/nvidia-device-plugin-daemonset-0.9.0
    

代码优化建议

  • 显式指定Kubernetes资源的API版本,避免Terraform自动推断错误:
    将resource "kubernetes_daemonset"改为resource "kubernetes_daemonset_v1",并添加api_version = "apps/v1"到metadata块。
  • 更新节点亲和性标签为当前K8s版本支持的格式:
    match_expressions {
      key      = "kubernetes.io/instance-type"
      operator = "In"
      values   = ["p2.xlarge"]
    }
    

内容的提问来源于stack exchange,提问作者cWerning

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 11:24:10