新版 GKE on AWS 已于 10 月 2 日发布。如需了解详情,请参阅版本说明

问题排查

了解您在使用 GKE on AWS 进行问题排查时可能会有帮助的步骤。

概览

本主题分为以下几个部分:

获取集群的相关信息

本部分介绍如何在 GKE on AWS 安装上检索信息,以进行问题排查。

从管理集群获取信息

您可以查询管理服务,以获取有关用户集群的信息。

  1. anthos-aws 目录中,使用 anthos-gke 将上下文切换到管理服务。

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. 使用 kubectl get 检索集群的基本状态信息。

    env HTTP_PROXY=http://localhost:8118 \
      kubectl get AWSCluster
    

    输出包括每个集群的名称、当前状态、存在时间、版本、端点。

    NAME        STATE          AGE     VERSION         ENDPOINT
    cluster-0   Provisioning   2m41s   1.17.9-gke.2800   gke-<var>endpoint</var>.elb.us-east-1.amazonaws.com
    

您可以使用 kubectl describe 检索有关集群的更多信息。

env HTTP_PROXY=http://localhost:8118 \
  kubectl describe AWSCluster cluster-0

此输出包括三个主要部分:

  • Spec 列出了集群的初始声明性配置。
  • Status 包含集群的状态以及由管理服务创建的 AWS 资源。
  • Events 包含最近的所有操作或错误。此日志对于调试集群非常重要。

输出类似以下内容。

Name:         cluster-0
Namespace:    default
Kind:         AWSCluster
Metadata:
  Creation Timestamp:  0000-00-00T00:00:00Z
  ...
Spec:
 Control Plane:
    Etcd:
      Main Volume:
        Size GiB: 10
    Iam Instance Profile:  gke-node
    Instance Type:         t2.medium
    Key Name:              gke-key
    Root Volume:
      Size GiB: 10
    Subnet IDs:
      subnet-0000
    Version:  0.00.0-gke.00
  Networking:
    Pod Address CIDR Blocks:
      0.0.0.0/0
  ...
Status:
  Admin Cert Secret Name:           gke-0000-admin-cert
  API DNS Name:                     gke-0000-controlplane-0000.elb.region.amazonaws.com
  Control Plane Security Group ID:  sg-0000
  Gke Hub Membership Name:          projects/global/memberships/gke-0000-cluster
  Listener ARN:                     arn:aws:elasticloadbalancing:region:0000:listener/net/gke-0000
  Load Balancer Name:               gke-0000-controlplane
  Node Pool Security Group ID:      sg-0000
  Provisioning Info:
    Addons Installed:              false
    Gke Hub Membership Installed:  false
    Target Version:                0.00.0-gke.0
  Replica Status:
    Auto Scaling Group Name:  gke-0000-controlplane-0
    Etcd Main Volume ID:      vol-0000
    Launch Template Name:     gke-0000-controlplane-0-0.00.0-gke.0
    Network Interface ID:     eni-0000
    Private IP Address:       0.0.0.0
    Replica:                  0
    ...
  Root CA Secret Name:        gke-0000-root-ca
  State:                      Provisioning
  Target Group Name:          gke-0000-controlplane
Events:
  Type    Reason                      Age    From              Message
  ----    ------                      ----   ----              -------
  Normal  CreatedSecurityGroup        1m36s  cluster-operator  Created security group named "gke-0000"
  Normal  CreatedEtcdVolume           1m35s  cluster-operator  Created etcd volume on replica 0
  Normal  CreatedEtcdVolume           1m35s  cluster-operator  Created etcd volume on replica 2
  Normal  CreatedEtcdVolume           1m35s  cluster-operator  Created etcd volume on replica 1
  Normal  CreatedNetworkLoadBalancer  1m34s  cluster-operator  Created network load balancer named "gke-0000-controlplane"
  Normal  CreatedTargetGroup          1m34s  cluster-operator  Created target group named "gke-0000-controlplane"
  Normal  CreatedRootCASecret         1m34s  cluster-operator  Created root CA secret named "default/gke-0000-root-ca"
  Normal  CreatedGKEHubMembership     1m33s  cluster-operator  Created GKE Hub membership named "projects/global/memberships/gke-0000-cluster"
  Normal  CreatedNetworkInterface     1m30s  cluster-operator  Created network interface on replica 2

事件

事件是附加到 Kubernetes 对象的消息。事件描述了影响资源状态的操作。管理服务将事件附加到 AWSClusterAWSNodePool 对象。事件提供了创建集群、升级集群、调整集群大小或删除集群所执行步骤的日志。使用 kubectl get events 列出事件。

env HTTP_PROXY=http://localhost:8118 \
    kubectl get events

输出示例

LAST SEEN   TYPE     REASON                        OBJECT                   MESSAGE
27s         Normal   CreatingCluster               awscluster/cluster-0     Cluster version 1.17.9-gke.2800 is being created
24s         Normal   CreatedSecurityGroup          awscluster/cluster-0     Created security group named "gke-123456a7-controlplane"
24s         Normal   CreatedSecurityGroup          awscluster/cluster-0     Created security group named "gke-123456a7-nodepool"
23s         Normal   CreatedEtcdVolume             awscluster/cluster-0     Created etcd volume on replica 0
23s         Normal   CreatedEtcdVolume             awscluster/cluster-0     Created etcd volume on replica 1
23s         Normal   CreatedEtcdVolume             awscluster/cluster-0     Created etcd volume on replica 2
23s         Normal   CreatedNetworkLoadBalancer    awscluster/cluster-0     Created network load balancer named "gke-123456a7-controlplane"
23s         Normal   CreatedTargetGroup            awscluster/cluster-0     Created target group named "gke-123456a7-controlplane"
23s         Normal   CreatedRootCASecret           awscluster/cluster-0     Created root CA secret named "default/gke-123456a7-api-server-ca"
22s         Normal   CreatedGKEHubMembership       awscluster/cluster-0     Created GKE Hub membership named "projects/global/memberships/gke-123456a7-cluster"
20s         Normal   CreatedNetworkInterface       awscluster/cluster-0     Created network interface on replica 0
20s         Normal   CreatedNetworkInterface       awscluster/cluster-0     Created network interface on replica 1
20s         Normal   CreatedNetworkInterface       awscluster/cluster-0     Created network interface on replica 2
20s         Normal   CreatedAdminCertSecret        awscluster/cluster-0     Created admin certificate secret named "default/gke-123456a7-admin-cert"
27s         Normal   StartedNodePoolProvisioning   awsnodepool/pool-0       Started node pool provisioning
13s         Normal   CreatedAutoScalingGroup       awsnodepool/pool-0       Created auto scaling group named "gke-123456a7-nodepool-8b269fb0"

操作者日志

事件列出了操作者执行的高级操作。您可能需要观察堆栈轨迹等较低级别的活动。管理服务运行名为 gke-aws-cluster-operator 的静态 pod。此应用是一个包含核心集群管理逻辑的操作者

在以下步骤中,您将使用 crictl 工具检查来自 gke-aws-cluster-operator 的日志。

  1. 切换到您的 GKE on AWS 配置所在的目录。 您在安装管理服务时创建了此目录。

    cd anthos-aws

  2. 找到管理 EC2 实例的 DNS。

    export CLUSTER_ID=$(terraform output cluster_id)
    export MANAGEMENT_IP=$(aws ec2 describe-instances \
        --filters "Name=tag:Name,Values=$CLUSTER_ID-management-0" \
        --query "Reservations[*].Instances[*].PrivateIpAddress" \
        --output text)
    
  3. 如果您使用的是堡垒主机,请找到堡垒主机的 DNS。

    export BASTION_DNS=$(terraform output bastion_dns_name)
    
  4. 通过 SSH 连接到管理实例。选择您是拥有直接连接还是使用堡垒主机。

    直接连接

    ssh -i ~/.ssh/anthos-gke ubuntu@$MANAGEMENT_IP
    

    堡垒主机

    ssh -i ~/.ssh/anthos-gke -J ubuntu@$BASTION_DNS ubuntu@$MANAGEMENT_IP
    
  5. 获取 gke-aws-cluster-operator pod 的容器 ID。

    export POD_ID=$(sudo crictl pods --name gke-aws-cluster-operator --quiet)
    export CONTAINER_ID=$(sudo crictl ps --pod $POD_ID --latest --quiet)
    
  6. 输出 pod 的日志。

    sudo crictl logs $CONTAINER_ID
    

Terraform

anthos-gke 命令输出 Terraform 以预配管理服务。您可以使用 terraform state 命令列出 Terraform 的状态中管理的基础架构。

terraform state list

输出示例

module.gke_dedicated_vpc.module.gke_bastion.aws_security_group.this
module.gke_dedicated_vpc.module.gke_bastion_security_group_rules.aws_security_group_rule.allow_http_outbound
module.gke_dedicated_vpc.module.gke_bastion_security_group_rules.aws_security_group_rule.allow_https_outbound
module.gke_dedicated_vpc.module.gke_bastion_security_group_rules.aws_security_group_rule.allow_ssh_inbound
module.gke_dedicated_vpc.module.gke_bastion_security_group_rules.aws_security_group_rule.allow_ssh_outbound
module.gke_dedicated_vpc.module.gke_controlplane_iam_policies.data.aws_iam_policy_document.this
module.gke_dedicated_vpc.module.gke_controlplane_iam_policies.aws_iam_role_policy.this
module.gke_dedicated_vpc.module.gke_controlplane_iam_role.data.aws_iam_policy_document.assume_role_policy
module.gke_dedicated_vpc.module.gke_controlplane_iam_role.aws_iam_instance_profile.this
module.gke_dedicated_vpc.module.gke_controlplane_iam_role.aws_iam_role.this
module.gke_dedicated_vpc.module.gke_management.data.aws_ami.this
module.gke_dedicated_vpc.module.gke_management.data.aws_iam_policy_document.assume_role_policy
module.gke_dedicated_vpc.module.gke_management.data.aws_subnet.this[0]
module.gke_dedicated_vpc.module.gke_management.aws_autoscaling_group.this[0]
module.gke_dedicated_vpc.module.gke_management.aws_ebs_volume.main[0]
module.gke_dedicated_vpc.module.gke_management.aws_iam_instance_profile.this
module.gke_dedicated_vpc.module.gke_management.aws_iam_role.this
module.gke_dedicated_vpc.module.gke_management.aws_launch_template.this[0]
module.gke_dedicated_vpc.module.gke_management.aws_lb.this
module.gke_dedicated_vpc.module.gke_management.aws_lb_listener.this
module.gke_dedicated_vpc.module.gke_management.aws_lb_target_group.this
module.gke_dedicated_vpc.module.gke_management.aws_security_group.this
module.gke_dedicated_vpc.module.gke_management_iam_policies.data.aws_iam_policy_document.this
module.gke_dedicated_vpc.module.gke_management_iam_policies.aws_iam_role_policy.this
module.gke_dedicated_vpc.module.gke_management_security_group_rules.aws_security_group_rule.allow_cidr_https_inbound[0]
module.gke_dedicated_vpc.module.gke_management_security_group_rules.aws_security_group_rule.allow_http_outbound
module.gke_dedicated_vpc.module.gke_management_security_group_rules.aws_security_group_rule.allow_https_inbound[0]
module.gke_dedicated_vpc.module.gke_management_security_group_rules.aws_security_group_rule.allow_https_outbound
module.gke_dedicated_vpc.module.gke_management_security_group_rules.aws_security_group_rule.allow_ssh_inbound[0]
module.gke_dedicated_vpc.module.gke_nodepool_iam_policies.data.aws_iam_policy_document.this
module.gke_dedicated_vpc.module.gke_nodepool_iam_policies.aws_iam_role_policy.this
module.gke_dedicated_vpc.module.gke_nodepool_iam_role.data.aws_iam_policy_document.assume_role_policy
module.gke_dedicated_vpc.module.gke_nodepool_iam_role.aws_iam_instance_profile.this
module.gke_dedicated_vpc.module.gke_nodepool_iam_role.aws_iam_role.this
module.gke_dedicated_vpc.module.gke_vpc.aws_eip.nat[0]
module.gke_dedicated_vpc.module.gke_vpc.aws_internet_gateway.this
module.gke_dedicated_vpc.module.gke_vpc.aws_nat_gateway.this[0]
module.gke_dedicated_vpc.module.gke_vpc.aws_route.private_nat_gateway[0]
module.gke_dedicated_vpc.module.gke_vpc.aws_route.public_internet_gateway
module.gke_dedicated_vpc.module.gke_vpc.aws_route_table.private[0]
module.gke_dedicated_vpc.module.gke_vpc.aws_route_table.public
module.gke_dedicated_vpc.module.gke_vpc.aws_route_table_association.private[0]
module.gke_dedicated_vpc.module.gke_vpc.aws_route_table_association.public[0]
module.gke_dedicated_vpc.module.gke_vpc.aws_subnet.private[0]
module.gke_dedicated_vpc.module.gke_vpc.aws_subnet.public[0]
module.gke_dedicated_vpc.module.gke_vpc.aws_vpc.this

我们可以使用 terraform state show 命令仔细查看任何资源。例如,我们来检查一下管理服务前面的负载平衡器。

terraform state show module.gke_dedicated_vpc.module.gke_management.aws_lb.this

输出示例

resource "aws_lb" "this" {
    arn                              = "arn:aws:elasticloadbalancing:aws-region:aws-account:loadbalancer/net/gke-12345678-management/arn-id"
    arn_suffix                       = "net/gke-12345678-management/abcde1234"
    dns_name                         = "exampledns.elb.ca-central-1.amazonaws.com"
    enable_cross_zone_load_balancing = true
    enable_deletion_protection       = false
    id                               = "arn:aws:elasticloadbalancing:aws-region:aws-account:loadbalancer/net/gke-12345678-management/arn-id"
    internal                         = true
    ip_address_type                  = "ipv4"
    load_balancer_type               = "network"
    name                             = "gke-12345678-management"
    security_groups                  = []
    subnets                          = [
        "subnet-0f77f5a97beb42e6d",
    ]
    vpc_id                           = "vpc-0a123456789b"
    zone_id                          = "Z2EPGBW3API2WT"

    access_logs {
        enabled = false
    }

    subnet_mapping {
        subnet_id = "subnet-0f77f5a97beb42e6d"
    }
}

问题排查步骤

本部分列出了针对 GKE on AWS 上可能出现的问题的具体问题排查步骤。

无法连接到服务器

如果您在用户集群上运行 kubectl 命令时收到 Unable to connect to the server 错误,请检查以下内容:

  • 您的所有专用子网之间都存在路由。
  • 您的专用子网可以访问 AWS NAT 网关。

Connect 无法访问项目

在执行某些 Connect 操作期间,当注册集群时,您可能会看到类似于以下内容的错误:

  ERROR: (gcloud.container.hub.memberships.register) failed to initialize Default Feature
  "authorizer", the Hub service account may not have access to your project
  

如需了解详情,请参阅排查 Connect 问题

权限错误

如果您在使用 anthos-gke 命令行工具时收到身份验证错误,例如:

oauth2: cannot fetch token: 400 Bad Request

请使用 gcloud auth application-default login 重新验证您的 Cloud SDK 安装。

AWSCluster 保持 Provisioning 状态

如果 kubectl get awsclusterskubectl describe AWSCluster <var>cluster-name</var> 中集群的状态没有从 Provisioning 发生变化,请检查 AWSClusterspec.controlPlane.hub.membershipName 字段的值。该字段的值必须是唯一的。

kubectl get awsclusters

NAME                                             STATE          AGE   VERSION         ENDPOINT
awscluster.multicloud.cluster.gke.io/cluster-0   Provisioning   8h    1.16.9-gke.15   gke-123456a7-controlplane-abcdefg12345.elb.us-east-1.amazonaws.com

要解决此问题,请修改 AWSCluster 定义,将 spec.controlPlane.hub.membershipName 更改为唯一值,然后使用 kubectl 应用更改。

解决方案

更改 spec.controlPlane.hub.membershipName 字段的值,以包含唯一的集群名称。

重新启动控制层面

如果控制层面无响应,您可以重新启动其实例。重新启动控制层面实例后,您的配置将保持保存在永久性磁盘上的状态。

  1. anthos-aws 目录中,使用 anthos-gke 将上下文切换到管理服务。
    cd anthos-aws
    anthos-gke aws management get-credentials
  2. 使用 kubectl 从 AWSCluster 获取控制层面的 AWS EC2 目标组。

    env HTTP_PROXY=http://localhost:8118 \
      kubectl get awscluster cluster-name \
      -o jsonpath='{.status.targetGroupName}{"\n"}'
    

    输出包含控制层面的 EC2 目标组的名称。例如,gke-123456a7-controlplane

  3. 打开 AWS EC2 控制台。从左侧窗格中选择目标组

  4. 点击搜索栏并查找您的目标组。点击目标组的名称,然后点击目标。系统会显示控制层面实例列表。

  5. 对于每个实例,请点击实例的名称。系统会显示 AWS EC2 实例控制台。

  6. 依次选择操作 -> 实例状态 -> 终止以移除实例。EC2 会自动创建一个具有相同 EBS 卷的新实例。

  7. 当目标组中的所有实例运行状况良好时,您可以继续升级集群或修复配置。

标记子网

GKE on AWS 会要求标记包含负载平衡器端点的子网。AWS on GKE 会自动标记在 AWSCluster 资源的 spec.Networking.ServiceLoadBalancerSubnetIDs 字段中指定的所有子网。

如果您要向用户集群添加额外的子网,或者需要将标记重新应用到现有子网,请执行以下步骤。

  1. anthos-aws 目录中,使用 anthos-gke 将上下文切换到管理服务。

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. 使用 kubectl 获取集群的 AWS VPC 的 ID,并将其存储为变量。

     export VPC_ID=$(\
     env HTTP_PROXY=http://localhost:8118 \
     kubectl get awscluster cluster-0 -o jsonpath='{.spec.networking.vpcID}')
    
  3. 使用 echo 检查变量内容。输出类似于 vpc-12345678abcdef0

    echo $VPC_ID
    
  4. 将集群 ID 保存到环境变量。

    export CLUSTER_ID=$(\
    env HTTP_PROXY=http://localhost:8118 \
    kubectl get awscluster cluster-0 -o jsonpath='{.status.clusterID}')
    

    您可以使用 echo 检查变量:

    echo $CLUSTER_ID
    

    响应包含您的集群 ID。

    gke-12345678
    
  5. 默认情况下,GKE on AWS 会设置含有专用和公共子网的 VPC。如需检索子网 ID,请使用 aws 命令行工具。

    从以下选项中进行选择:

    • 公共(如果要在公共子网上公开 Service)。
    • 专用(如果要在专用子网上公开 Service)。
    • 多个子网(如果要在多个子网上公开 Service)。

    公开

     export SUBNET_ID=$(aws ec2 describe-subnets \
     --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*public*" \
     --query "Subnets[*].SubnetId" \
     --output text)
    

    输出内容是包含子网 ID 的对象。它类似于 subnet-1234abcdefg。您可以使用 echo 检查变量:

    echo $SUBNET_ID
    

    响应会包含您的子网 ID。

    subnet-012345678abcdef
    

    专用

     export SUBNET_ID=$(aws ec2 describe-subnets \
     --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*private*" \
     --query "Subnets[*].SubnetId" \
     --output text)
    

    输出内容是包含子网 ID 的对象。它类似于 subnet-1234abcdefg。您可以使用 echo 检查变量:

    echo $SUBNET_ID
    

    响应会包含您的子网 ID。

    subnet-012345678abcdef
    

    多个子网

    如果您为 AWSNodePool 使用多个子网(例如,如果您使用多个可用性区域),则需要单独标记子网 ID。

    使用 aws ec2 describe-subnets 检索子网 ID 的列表。

    如需获取所有公共子网的列表,请运行以下命令:

    aws ec2 describe-subnets \
     --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*public*" \
     --query "Subnets[*].SubnetId" \
     --output text
    

    如需获取所有专用子网的列表,请运行以下命令:

    aws ec2 describe-subnets \
     --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*private*" \
     --query "Subnets[*].SubnetId" \
     --output text
    

    响应会包含您的子网 ID。

    subnet-012345678abcdef
    subnet-abcdef123456789
    subnet-123456789abcdef
    
  6. 使用集群 ID 标记您的子网。如果您拥有多个子网,请选择“多个子网”。

    单个子网

    aws ec2 create-tags \
    --resources $SUBNET_ID \
    --tags Key=kubernetes.io/cluster/$CLUSTER_ID,Value=shared
    

    多个子网

    针对您的每个子网运行以下命令:

    aws ec2 create-tags \
    --resources subnet-ids \
    --tags Key=kubernetes.io/cluster/$CLUSTER_ID,Value=shared
    

    subnet-ids 替换为子网 ID 列表,以空格分隔。例如 subnet-012345678abcdef subnet-abcdef123456789 subnet-123456789abcdef

快照

anthos-gke 工具支持生成 GKE on AWS 环境的快照。快照包含的信息可帮助 Google Cloud 支持团队离线重现和调试问题。

anthos-gke 工具可以从管理服务或用户集群生成快照。默认情况下,快照包含 CRD、事件、集群信息、集群日志、实例日志、实例文件。您可以自定义配置文件中包含的信息。该软件包还包含 index.html,其中带有所含文件的链接。

如果您要在联系 Google Cloud 支持团队之前排查 GKE on AWS 安装问题,请跳到下一部分

生成快照

本部分介绍如何使用默认配置或自定义配置从管理或用户集群创建快照。

准备工作

要连接到您的 GKE on AWS 资源,请按以下说明操作。选择您是拥有现有 AWS VPC(或者与 VPC 的直接连接)还是在创建管理服务时创建了专用 VPC。

现有 VPC

如果您拥有与现有 VPC 的直接连接或 VPN 连接,请省略本主题的命令中的行 env HTTP_PROXY=http://localhost:8118

专用 VPC

如果您在专用 VPC 中创建管理服务,则 GKE on AWS 会在公共子网中添加一个堡垒主机。

如需连接到您的管理服务,请执行以下步骤:

  1. 切换到您的 GKE on AWS 配置所在的目录。 您在安装管理服务时创建了此目录。

    cd anthos-aws

  2. 运行 bastion-tunnel.sh 脚本以打开隧道。隧道会转发到 localhost:8118

    如需打开堡垒主机的隧道,请运行以下命令:

    ./bastion-tunnel.sh -N
    

    来自 SSH 隧道的消息会显示在此窗口中。准备好关闭连接后,请使用 Control+C 或关闭窗口来停止该进程。

  3. 打开新终端并切换到您的 anthos-aws 目录。

    cd anthos-aws
  4. 检查您是否能够使用 kubectl 连接到集群。

    env HTTP_PROXY=http://localhost:8118 \
    kubectl cluster-info
    

    输出包括管理服务 API 服务器的网址。

  • anthos-aws 目录中,使用 anthos-gke 将上下文切换到管理服务。

    cd anthos-aws
    anthos-gke aws management get-credentials

截取管理服务的快照

要截取管理服务的快照,请使用 anthos-gke aws management diagnose snapshot

env HTTP_PROXY=http://localhost:8118 \
  anthos-gke aws management diagnose snapshot \
  --ssh-key-path ssh-key-path \
  --workspace workspace

替换:

  • ssh-key-path 替换为 GKE on AWS SSH 密钥的路径。默认情况下,该文件是在 .ssh/anthos-gke 中创建的。
  • workspace 替换为创建了 GKE on AWS 部署的目录的路径。如果在安装专用 VPC 的过程中创建了堡垒主机,则 GKE on AWS 会使用堡垒主机连接到您的管理服务。

输出包括操作日志和快照文件的名称:

2020/06/15 15:39:48 Found bastion instance in tfworkspace. IP: bastion-ip.aws-zone.compute.amazonaws.com
writing file: /tmp/kubeconfig-mgmt679794004/kubeconfig.conf
snapshot: 2020/06/15 15:39:50 Getting snapshot of controlPlane...
snapshot: 2020/06/15 15:39:50 Getting snapshot of kubectl command...
snapshot: 2020/06/15 15:39:52 Getting snapshot of control plane managed aws resources
...
ip-10-0-1-44/commands/ip_route_list_table_all.out
/tmp/tmp.Z26niLmVfU/snapshot.tar.gz
2020/06/15 15:40:04 Snapshot saved in snapshot-1592260783.tar.gz.

截取用户集群的快照

要截取用户集群的快照,请使用 anthos-gke aws clusters diagnose snapshot

env HTTP_PROXY=http://localhost:8118 \
  anthos-gke aws clusters diagnose snapshot user-cluster-name \
  --ssh-key-path ssh-key-path --workspace terraform-workspace

替换:

  • user-cluster-name 是您的用户集群的名称。默认情况下,您的第一个用户集群名为 cluster-0
  • ssh-key-path 替换为 GKE on AWS SSH 密钥的路径。默认情况下,该文件是在 .ssh/anthos-gke 中创建的。
  • terraform-workspace 替换为创建了 GKE on AWS 部署的 Terraform 工作区的路径。

输出包括操作日志和快照文件的名称:

2020/06/15 15:43:37 Found bastion instance in tfworkspace. IP: bastion-ip.aws-zone.compute.amazonaws.com
writing file: /tmp/kubeconfig-mgmt616204648/kubeconfig.conf
snapshot: 2020/06/15 15:43:40 Getting snapshot of controlPlane...
snapshot: 2020/06/15 15:43:40 Getting snapshot of kubectl command...
writing file: /tmp/kubeconfig-clustercluster-0620691367/kubeconfig.conf
snapshot: 2020/06/15 15:43:43 Getting snapshot of cluster default/cluster-0
snapshot: 2020/06/15 15:43:43 Getting snapshot of controlPlane...
snapshot: 2020/06/15 15:43:43 Getting snapshot of kubectl command...
snapshot: 2020/06/15 15:43:46 Getting snapshot of control plane managed aws resources
...
snapshot: 2020/06/15 15:43:48 Getting snapshot of node pools
snapshot: 2020/06/15 15:43:48 Getting snapshot of node pool default/pool-0
snapshot: 2020/06/15 15:43:48 Getting snapshot of node pool managed aws resources
...
2020/06/15 15:44:00 Snapshot saved in snapshot-1592261012.tar.gz.

修改快照配置

要修改默认快照配置,请先将 anthos-gke--dry-run 选项搭配使用,并将输出保存到文件中。然后,修改配置并使用新配置重新运行 anthos-gke

为管理服务创建配置文件

  1. anthos-gke--dry-run 选项搭配使用,并将输出重定向到名为 management-config.yaml 的文件。

    env HTTP_PROXY=http://localhost:8118 \
      anthos-gke aws management diagnose snapshot --ssh-key-path ssh-key-path \
      --workspace workspace --dry-run > management-config.yaml 2>&1
    

    替换:

    • ssh-key-path 替换为 GKE on AWS SSH 密钥的路径。默认情况下,该文件是在 ~/.ssh/anthos-gke 中创建的。
    • workspace 替换为创建了 GKE on AWS 部署的目录的路径。

  1. 在文本编辑器中修改 management-config.yaml 文件。该文件包含两个部分。第一部分是来自 anthos-gke 的日志(带有时间戳),如下所示:

    2020/06/15 15:26:51 Found bastion instance in tfworkspace. IP: bastion-ip.aws-zone.compute.amazonaws.com
    2020/06/15 15:26:51 Running in dry-run mode...
    ...
    

    删除日志部分。保留 The snapshot configuration is: 行之后的配置。

    文件的其余内容是 YAML 配置,如下所示:

mgmtCluster:
  instanceCommands:
  - dmesg
  - sudo crictl ps a
  - systemctl status -l containerd
  - journalctl --since '1 hour ago' --utc -u containerd
  - systemctl status -l kubelet
  - journalctl --since '1 hour ago' --utc -u kubelet
  - journalctl --since '1 hour ago' --utc --boot --dmesg
  - uptime
  - df --all --inodes
  - ip addr
  - sudo iptables-save --counters
  - mount
  - ip route list table all
  - top -bn1
  - ps -edF
  - ps -eo pid,tid,ppid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm,args,cgroup
  - chronyc sources -v
  - journalctl --since '1 hour ago' --utc -u chrony
  instanceFiles:
  - /etc/kubernetes/manifests/
  - /proc/sys/fs/file-nr
  - /proc/sys/net/nf_conntrack_max
  - /var/log/startup.log
  - /var/log/cloud-init-output.log
  - /var/log/containers
  kubectlCommands:
  - commands:
    - kubectl get events
    - kubectl version
    - kubectl cluster-info
    - kubectl get clusterroles -o wide
    - kubectl get clusterrolebindings -o wide
    - kubectl get crd -o wide
    - kubectl describe clusterroles
    - kubectl describe clusterrolebindings
    - kubectl describe crd
    - kubectl get all -o yaml
    - kubectl describe all
  managedAWSResources: true
numOfThreads: 10
truncate: 2000
  1. 移除您认为会泄露敏感数据的所有命令。

  2. 使用 --snapshot-config 选项和 management-config.yaml 运行 anthos-gke 命令。

    env HTTP_PROXY=http://localhost:8118 \
      anthos-gke aws management diagnose snapshot --ssh-key-path ssh-key-path \
      --snapshot-config management-config.yaml --workspace terraform-workspace
    

    替换:

    • ssh-key-path 替换为 GKE on AWS SSH 密钥的路径。默认情况下,该文件是在 .ssh/anthos-gke 中创建的。
    • terraform-workspace 替换为创建了 GKE on AWS 部署的 Terraform 工作区的路径。

为用户集群创建配置文件

  1. anthos-gke--dry-run 选项搭配使用,并将输出重定向到名为 user-config.yaml 的文件。

    env HTTP_PROXY=http://localhost:8118 \
      anthos-gke aws clusters diagnose snapshot user-cluster-name \
      --ssh-key-path ssh-key-path --snapshot-config snapshot-config-path  \
      --workspace workspace --dry-run > user-config.yaml 2>&1
    

    替换:

    • user-cluster-name 是您的用户集群的名称。默认情况下,您的第一个集群名为 cluster-0
    • ssh-key-path 替换为 GKE on AWS SSH 密钥的路径。默认情况下,该文件是在 ~/.ssh/anthos-gke 中创建的。
    • workspace 替换为创建了 GKE on AWS 部署的目录的路径。

  1. 在文本编辑器中修改 management-config.yaml 文件。该文件包含两个部分。第一部分是来自 anthos-gke 的日志(带有时间戳),如下所示:

    2020/06/15 15:26:51 Found bastion instance in tfworkspace. IP: bastion-ip.aws-zone.compute.amazonaws.com
    2020/06/15 15:26:51 Running in dry-run mode...
    ...
    

    删除日志部分。保留 The snapshot configuration is: 行之后的配置。

    文件的其余内容是 YAML 配置,如下所示:

clusters:
- clusterName: cluster-0
  controlPlane:
    instanceCommands:
    - dmesg
    - sudo crictl ps a
    - systemctl status -l containerd
    - journalctl --since '1 hour ago' --utc -u containerd
    - systemctl status -l kubelet
    - journalctl --since '1 hour ago' --utc -u kubelet
    - journalctl --since '1 hour ago' --utc --boot --dmesg
    - uptime
    - df --all --inodes
    - ip addr
    - sudo iptables-save --counters
    - mount
    - ip route list table all
    - top -bn1
    - sudo docker ps -a
    - ps -edF
    - ps -eo pid,tid,ppid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm,args,cgroup
    instanceFiles:
    - /etc/kubernetes/manifests/
    - /proc/sys/fs/file-nr
    - /proc/sys/net/nf_conntrack_max
    - /var/log/startup.log
    - /var/log/cloud-init-output.log
    - /var/log/containers
    kubectlCommands:
    - commands:
      - kubectl get events
      - kubectl version
      - kubectl cluster-info
      - kubectl get clusterroles -o wide
      - kubectl get clusterrolebindings -o wide
      - kubectl get crd -o wide
      - kubectl describe clusterroles
      - kubectl describe clusterrolebindings
      - kubectl describe crd
      - kubectl get all -o yaml
      - kubectl describe all
    managedAWSResources: true
  nodePools:
  - NodePoolName: ""
    instanceCommands:
    - dmesg
    - sudo crictl ps a
    - systemctl status -l containerd
    - journalctl --since '1 hour ago' --utc -u containerd
    - systemctl status -l kubelet
    - journalctl --since '1 hour ago' --utc -u kubelet
    - journalctl --since '1 hour ago' --utc --boot --dmesg
    - uptime
    - df --all --inodes
    - ip addr
    - sudo iptables-save --counters
    - mount
    - ip route list table all
    - top -bn1
    - sudo docker ps -a
    - ps -edF
    - ps -eo pid,tid,ppid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm,args,cgroup
    instanceFiles:
    - /etc/kubernetes/manifests/
    - /proc/sys/fs/file-nr
    - /proc/sys/net/nf_conntrack_max
    - /var/log/startup.log
    - /var/log/cloud-init-output.log
    - /var/log/containers
    managedAWSResources: true
mgmtCluster:
  kubectlCommands:
  - commands:
    - kubectl get awscluster -oyaml
numOfThreads: 10
truncate: 2000
  1. 移除您认为会泄露敏感数据的所有命令。

  2. 使用 --snapshot-config 选项和 user-config.yaml 运行 anthos-gke 命令。

    env HTTP_PROXY=http://localhost:8118 \
      anthos-gke aws clusters diagnose snapshot user-cluster-name
      --ssh-key-path <ssh-key-path> \
      --snapshot-config user-config.yaml --workspace <terraform-workspace>
    

    替换:

    • user-cluster-name 是您的用户集群的名称。默认情况下,您的第一个集群名为 cluster-0
    • ssh-key-path 替换为 GKE on AWS SSH 密钥的路径。默认情况下,该文件是在 .ssh/anthos-gke 中创建的。
    • terraform-workspace 替换为创建了 GKE on AWS 部署的 Terraform 工作区的路径。

默认快照内容

简介

本部分展示了管理服务用户集群的默认快照中包含的示例文件树。

管理服务

以下文件树是管理集群快照中的文件示例。

.
├── index.html
├── mgmt_cluster
│   ├── controlplane-0-10.0.1.44
│   │   └── ip-10-0-1-44
│   │       ├── commands
│   │       │   ├── df_--all_--inodes.out
│   │       │   ├── dmesg.out
│   │       │   ├── ip_addr.out
│   │       │   ├── ip_route_list_table_all.out
│   │       │   ├── journalctl_--since__1_hour_ago__--utc_--boot_--dmesg.out
│   │       │   ├── journalctl_--since__1_hour_ago__--utc_-u_containerd.out
│   │       │   ├── journalctl_--since__1_hour_ago__--utc_-u_kubelet.out
│   │       │   ├── mount.out
│   │       │   ├── ps_-edF.out
│   │       │   ├── ps_-eo_pid,tid,ppid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm,args,cgroup.out
│   │       │   ├── sudo_crictl_ps_a.out
│   │       │   ├── sudo_docker_ps_-a.err
│   │       │   ├── sudo_docker_ps_-a.out
│   │       │   ├── sudo_iptables-save_--counters.out
│   │       │   ├── systemctl_status_-l_containerd.out
│   │       │   ├── systemctl_status_-l_kubelet.out
│   │       │   ├── top_-bn1.out
│   │       │   └── uptime.out
│   │       └── files
│   │           ├── etc
│   │           │   └── kubernetes
│   │           │       └── manifests
│   │           │           ├── etcd.yaml
│   │           │           ├── gke-aws-cluster-operator.yaml
│   │           │           ├── kube-apiserver.yaml
│   │           │           └── kube-controller-manager.yaml
│   │           ├── proc
│   │           │   └── sys
│   │           │       ├── fs
│   │           │       │   └── file-nr
│   │           │       └── net
│   │           │           └── nf_conntrack_max
│   │           └── var
│   │               └── log
│   │                   ├── cloud-init-output.log
│   │                   ├── containers
│   │                   │   ├── etcd-ip-10-0-1-44.ap-southeast-2.compute.internal_kube-system_kube-etcd-149e96d0b0da2250505a6b41603e57f42a5386701fa0033840e8f3b211b49733.log
│   │                   │   ├── gke-aws-cluster-operator-ip-10-0-1-44.ap-southeast-2.compute.internal_kube-system_gke-aws-cluster-operator-d423d3191ce1a8c65c4a0f30f1d7598a8739c0aba65784355b28dee0d694626a.log
│   │                   │   ├── kube-apiserver-ip-10-0-1-44.ap-southeast-2.compute.internal_kube-system_kube-apiserver-48061659a4b77f4b50eed5819dbfab5586dc9086fa24217cc16486bd852dfbf6.log
│   │                   │   ├── kube-apiserver-ip-10-0-1-44.ap-southeast-2.compute.internal_kube-system_kube-apiserver-baf60859cd807e9325295fde7a8d3cd16c3d5e73abca87acc107cee5e08f4c1c.log
│   │                   │   └── kube-controller-manager-ip-10-0-1-44.ap-southeast-2.compute.internal_kube-system_kube-controller-manager-af9b4ffb40ada3383630090948ec8133ca0e3e54c232dd3f068b3bd8bbee8f92.log
│   │                   └── startup.log
│   ├── kubectl
│   │   ├── kubectl_cluster-info_--kubeconfig_.tmp.kubeconfig-mgmt609381529.kubeconfig.conf.out
│   │   ├── kubectl_describe_all_--kubeconfig_.tmp.kubeconfig-mgmt609381529.kubeconfig.conf.out
│   │   ├── kubectl_describe_clusterrolebindings_--kubeconfig_.tmp.kubeconfig-mgmt609381529.kubeconfig.conf.out
│   │   ├── kubectl_describe_clusterroles_--kubeconfig_.tmp.kubeconfig-mgmt609381529.kubeconfig.conf.out
│   │   ├── kubectl_describe_crd_--kubeconfig_.tmp.kubeconfig-mgmt609381529.kubeconfig.conf.out
│   │   ├── kubectl_get_all_-o_yaml_--kubeconfig_.tmp.kubeconfig-mgmt609381529.kubeconfig.conf.out
│   │   ├── kubectl_get_clusterrolebindings_-o_wide_--kubeconfig_.tmp.kubeconfig-mgmt609381529.kubeconfig.conf.out
│   │   ├── kubectl_get_clusterroles_-o_wide_--kubeconfig_.tmp.kubeconfig-mgmt609381529.kubeconfig.conf.out
│   │   ├── kubectl_get_crd_-o_wide_--kubeconfig_.tmp.kubeconfig-mgmt609381529.kubeconfig.conf.out
│   │   ├── kubectl_get_events_--kubeconfig_.tmp.kubeconfig-mgmt609381529.kubeconfig.conf.out
│   │   └── kubectl_version_--kubeconfig_.tmp.kubeconfig-mgmt609381529.kubeconfig.conf.out
│   └── managed_resources
│       ├── controlplane-0
│       │   ├── asg.out
│       │   └── instance-0.out
│       ├── elb.out
│       └── target_group.out
├── snapshot.config
└── snapshot.log

用户集群

以下文件树是名为 cluster-0 的用户集群快照中的文件示例。

.
├── cluster
│   └── cluster-0
│       ├── control_plane
│       │   ├── controlplane-0-10.0.1.7
│       │   │   └── ip-10-0-1-7
│       │   │       ├── commands
│       │   │       │   ├── df_--all_--inodes.out
│       │   │       │   ├── dmesg.out
│       │   │       │   ├── ip_addr.out
│       │   │       │   ├── ip_route_list_table_all.out
│       │   │       │   ├── journalctl_--since__1_hour_ago__--utc_--boot_--dmesg.out
│       │   │       │   ├── journalctl_--since__1_hour_ago__--utc_-u_containerd.out
│       │   │       │   ├── journalctl_--since__1_hour_ago__--utc_-u_kubelet.out
│       │   │       │   ├── mount.out
│       │   │       │   ├── ps_-edF.out
│       │   │       │   ├── ps_-eo_pid,tid,ppid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm,args,cgroup.out
│       │   │       │   ├── sudo_crictl_ps_a.out
│       │   │       │   ├── sudo_docker_ps_-a.err
│       │   │       │   ├── sudo_docker_ps_-a.out
│       │   │       │   ├── sudo_iptables-save_--counters.out
│       │   │       │   ├── systemctl_status_-l_containerd.out
│       │   │       │   ├── systemctl_status_-l_kubelet.out
│       │   │       │   ├── top_-bn1.out
│       │   │       │   └── uptime.out
│       │   │       └── files
│       │   │           ├── etc
│       │   │           │   └── kubernetes
│       │   │           │       └── manifests
│       │   │           │           ├── aws-ebs-csi-driver-controller.yaml
│       │   │           │           ├── aws-encryption-provider.yaml
│       │   │           │           ├── cluster-autoscaler.yaml
│       │   │           │           ├── etcd-events.yaml
│       │   │           │           ├── etcd.yaml
│       │   │           │           ├── kube-apiserver.yaml
│       │   │           │           ├── kube-controller-manager.yaml
│       │   │           │           └── kube-scheduler.yaml
│       │   │           ├── proc
│       │   │           │   └── sys
│       │   │           │       ├── fs
│       │   │           │       │   └── file-nr
│       │   │           │       └── net
│       │   │           │           └── nf_conntrack_max
│       │   │           └── var
│       │   │               └── log
│       │   │                   ├── cloud-init-output.log
│       │   │                   ├── containers
│       │   │                   │   ├── aws-ebs-csi-driver-controller-ip-10-0-1-7.ap-southeast-2.compute.internal_kube-system_csi-attacher-218b7834cda8b4ae0f6687e06b33426ca39669a6c2652948e17746d49ed4c7c9.log
│       │   │                   │   ├── aws-ebs-csi-driver-controller-ip-10-0-1-7.ap-southeast-2.compute.internal_kube-system_csi-provisioner-ff1ba1960712a00065db1e036e1aaf5aeaca0979c833d020ad1cafdea05a76c7.log
│       │   │                   │   ├── aws-ebs-csi-driver-controller-ip-10-0-1-7.ap-southeast-2.compute.internal_kube-system_ebs-plugin-697389a6c73bdb4a0370a644a28617b3b8a12862341b91ca2d640aa66724affd.log
│       │   │                   │   ├── aws-encryption-provider-ip-10-0-1-7.ap-southeast-2.compute.internal_kube-system_aws-encryption-provider-b08216cbca004f71e68145b9a38b931276dd9ef92d26c53b85275587ce28f3ca.log
│       │   │                   │   ├── cluster-autoscaler-ip-10-0-1-7.ap-southeast-2.compute.internal_kube-system_cluster-autoscaler-57f9ca6abec10a76b42449dababea6c963853b1aa30f1db2b87d963311d03629.log
│       │   │                   │   ├── cluster-autoscaler-ip-10-0-1-7.ap-southeast-2.compute.internal_kube-system_cluster-autoscaler-9c09937ddbe3220c896f857a8b8c02c84062f13092b39ebac3ab1ce26f13b317.log
│       │   │                   │   ├── etcd-events-ip-10-0-1-7.ap-southeast-2.compute.internal_kube-system_kube-etcd-events-4e79334e69f670a3a4637c20635944abb71ed93d6e802407ef5881478ee78dc1.log
│       │   │                   │   ├── etcd-ip-10-0-1-7.ap-southeast-2.compute.internal_kube-system_kube-etcd-e6dbe39ef969fb2f049292d4f3a66a41d22f963b40f72f5f91ad6acd9e9cde77.log
│       │   │                   │   ├── kube-apiserver-ip-10-0-1-7.ap-southeast-2.compute.internal_kube-system_kube-apiserver-e61770a46518313306e1668c34e4efbdb3ed81b7f451dc3278a00a40fee09e0d.log
│       │   │                   │   ├── kube-controller-manager-ip-10-0-1-7.ap-southeast-2.compute.internal_kube-system_kube-controller-manager-3b33df6a4d4cca8fd63f90d4fcbee65595e71c0390a5c29c81670d0232b98edc.log
│       │   │                   │   └── kube-scheduler-ip-10-0-1-7.ap-southeast-2.compute.internal_kube-system_kube-scheduler-0aae214e17741189db8d3608275e71551f62f43619e07a37a11017b88a611970.log
│       │   │                   └── startup.log
│       │   ├── controlplane-1-10.0.1.61
│       │   │   └── ip-10-0-1-61
│       │   │       ├── commands
│       │   │       │   ├── df_--all_--inodes.out
│       │   │       │   ├── dmesg.out
│       │   │       │   ├── ip_addr.out
│       │   │       │   ├── ip_route_list_table_all.out
│       │   │       │   ├── journalctl_--since__1_hour_ago__--utc_--boot_--dmesg.out
│       │   │       │   ├── journalctl_--since__1_hour_ago__--utc_-u_containerd.out
│       │   │       │   ├── journalctl_--since__1_hour_ago__--utc_-u_kubelet.out
│       │   │       │   ├── mount.out
│       │   │       │   ├── ps_-edF.out
│       │   │       │   ├── ps_-eo_pid,tid,ppid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm,args,cgroup.out
│       │   │       │   ├── sudo_crictl_ps_a.out
│       │   │       │   ├── sudo_docker_ps_-a.err
│       │   │       │   ├── sudo_docker_ps_-a.out
│       │   │       │   ├── sudo_iptables-save_--counters.out
│       │   │       │   ├── systemctl_status_-l_containerd.out
│       │   │       │   ├── systemctl_status_-l_kubelet.out
│       │   │       │   ├── top_-bn1.out
│       │   │       │   └── uptime.out
│       │   │       └── files
│       │   │           ├── etc
│       │   │           │   └── kubernetes
│       │   │           │       └── manifests
│       │   │           │           ├── aws-ebs-csi-driver-controller.yaml
│       │   │           │           ├── aws-encryption-provider.yaml
│       │   │           │           ├── cluster-autoscaler.yaml
│       │   │           │           ├── etcd-events.yaml
│       │   │           │           ├── etcd.yaml
│       │   │           │           ├── kube-apiserver.yaml
│       │   │           │           ├── kube-controller-manager.yaml
│       │   │           │           └── kube-scheduler.yaml
│       │   │           ├── proc
│       │   │           │   └── sys
│       │   │           │       ├── fs
│       │   │           │       │   └── file-nr
│       │   │           │       └── net
│       │   │           │           └── nf_conntrack_max
│       │   │           └── var
│       │   │               └── log
│       │   │                   ├── cloud-init-output.log
│       │   │                   ├── containers
│       │   │                   │   ├── aws-ebs-csi-driver-controller-ip-10-0-1-61.ap-southeast-2.compute.internal_kube-system_csi-attacher-63345efd65ea584c35f4b0d2de443bf42e83e65324e899be27335a25fe07a72c.log
│       │   │                   │   ├── aws-ebs-csi-driver-controller-ip-10-0-1-61.ap-southeast-2.compute.internal_kube-system_csi-provisioner-6f66e7479c319fbcbcaf53f9b5398cd8e53bcd646fa9788afbc25a69fc9291fe.log
│       │   │                   │   ├── aws-ebs-csi-driver-controller-ip-10-0-1-61.ap-southeast-2.compute.internal_kube-system_ebs-plugin-2ee649206dd099e29b8bb3cbf27bef499b851682c07590a34c2e08d9545ca51b.log
│       │   │                   │   ├── aws-encryption-provider-ip-10-0-1-61.ap-southeast-2.compute.internal_kube-system_aws-encryption-provider-3d2b5c28b7389e1303d2e36dd510ec40cef99f2ea63823901ea9806869def8fa.log
│       │   │                   │   ├── cluster-autoscaler-ip-10-0-1-61.ap-southeast-2.compute.internal_kube-system_cluster-autoscaler-ebc572523516845d023884810f721865c2f0a76e34aaf92babdffacf4c95f75b.log
│       │   │                   │   ├── cluster-autoscaler-ip-10-0-1-61.ap-southeast-2.compute.internal_kube-system_cluster-autoscaler-f7a7480c9adb08077b9a07d2f14e2b14dda7b4d50027cf105d90f37c63945bfa.log
│       │   │                   │   ├── etcd-events-ip-10-0-1-61.ap-southeast-2.compute.internal_kube-system_kube-etcd-events-60301eef32b7c10d0aea3de19549bfdcc3e4152cf3ca8ca7d5e10785e2e232fd.log
│       │   │                   │   ├── etcd-ip-10-0-1-61.ap-southeast-2.compute.internal_kube-system_kube-etcd-25a369f08d0d2bbc9f8f83337724e14c9878a1a0249cc5e9c7c63cae3d3657a1.log
│       │   │                   │   ├── kube-apiserver-ip-10-0-1-61.ap-southeast-2.compute.internal_kube-system_kube-apiserver-13a276422964d2674f16d971bafcd25555eee3eb10b6a6f60686e8b8810a5def.log
│       │   │                   │   ├── kube-controller-manager-ip-10-0-1-61.ap-southeast-2.compute.internal_kube-system_kube-controller-manager-18625e69e9604fbacbe82aebc6dc18dd4427269941a25a9bdef3fc0e5a4dfb9e.log
│       │   │                   │   └── kube-scheduler-ip-10-0-1-61.ap-southeast-2.compute.internal_kube-system_kube-scheduler-12f48aad99ecc18b450ebcda85ffb7f138bbb6bc261fb06e75ae1548647eaa45.log
│       │   │                   └── startup.log
│       │   ├── controlplane-2-10.0.1.161
│       │   │   └── ip-10-0-1-161
│       │   │       ├── commands
│       │   │       │   ├── df_--all_--inodes.out
│       │   │       │   ├── dmesg.out
│       │   │       │   ├── ip_addr.out
│       │   │       │   ├── ip_route_list_table_all.out
│       │   │       │   ├── journalctl_--since__1_hour_ago__--utc_--boot_--dmesg.out
│       │   │       │   ├── journalctl_--since__1_hour_ago__--utc_-u_containerd.out
│       │   │       │   ├── journalctl_--since__1_hour_ago__--utc_-u_kubelet.out
│       │   │       │   ├── mount.out
│       │   │       │   ├── ps_-edF.out
│       │   │       │   ├── ps_-eo_pid,tid,ppid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm,args,cgroup.out
│       │   │       │   ├── sudo_crictl_ps_a.out
│       │   │       │   ├── sudo_docker_ps_-a.err
│       │   │       │   ├── sudo_docker_ps_-a.out
│       │   │       │   ├── sudo_iptables-save_--counters.out
│       │   │       │   ├── systemctl_status_-l_containerd.out
│       │   │       │   ├── systemctl_status_-l_kubelet.out
│       │   │       │   ├── top_-bn1.out
│       │   │       │   └── uptime.out
│       │   │       └── files
│       │   │           ├── etc
│       │   │           │   └── kubernetes
│       │   │           │       └── manifests
│       │   │           │           ├── aws-ebs-csi-driver-controller.yaml
│       │   │           │           ├── aws-encryption-provider.yaml
│       │   │           │           ├── cluster-autoscaler.yaml
│       │   │           │           ├── etcd-events.yaml
│       │   │           │           ├── etcd.yaml
│       │   │           │           ├── kube-apiserver.yaml
│       │   │           │           ├── kube-controller-manager.yaml
│       │   │           │           └── kube-scheduler.yaml
│       │   │           ├── proc
│       │   │           │   └── sys
│       │   │           │       ├── fs
│       │   │           │       │   └── file-nr
│       │   │           │       └── net
│       │   │           │           └── nf_conntrack_max
│       │   │           └── var
│       │   │               └── log
│       │   │                   ├── cloud-init-output.log
│       │   │                   ├── containers
│       │   │                   │   ├── aws-ebs-csi-driver-controller-ip-10-0-1-161.ap-southeast-2.compute.internal_kube-system_csi-attacher-0d66d0e6d7ead9a0af3ee2b9ea7769669a33636639549571ed10eaacf7ddd85b.log
│       │   │                   │   ├── aws-ebs-csi-driver-controller-ip-10-0-1-161.ap-southeast-2.compute.internal_kube-system_csi-provisioner-c68d3acbdf8f319fe1d700eb3584fd07016d7a8b507e05261b1596fb96ca7598.log
│       │   │                   │   ├── aws-ebs-csi-driver-controller-ip-10-0-1-161.ap-southeast-2.compute.internal_kube-system_ebs-plugin-66c248fc6c21021355ad5aa20ec98894b3370d1b58d86d3bf4b794bfb971eaef.log
│       │   │                   │   ├── aws-encryption-provider-ip-10-0-1-161.ap-southeast-2.compute.internal_kube-system_aws-encryption-provider-f79e0367f399331652f7beb9145e97eefe95a635a3101ffb73bb8c29d449304e.log
│       │   │                   │   ├── cluster-autoscaler-ip-10-0-1-161.ap-southeast-2.compute.internal_kube-system_cluster-autoscaler-4ce584e9f04e3c545168a01a84b4a697a199e4ff536477d8cb884f89ab65872c.log
│       │   │                   │   ├── cluster-autoscaler-ip-10-0-1-161.ap-southeast-2.compute.internal_kube-system_cluster-autoscaler-a384f6202e6b7f0a3d5918adc87a8acf158a4e5d13401825a129188663cf32d7.log
│       │   │                   │   ├── etcd-events-ip-10-0-1-161.ap-southeast-2.compute.internal_kube-system_kube-etcd-events-4975f4f7ea692237be1016e2c03e024ca58cc78745b482ca41fe80481c425f28.log
│       │   │                   │   ├── etcd-ip-10-0-1-161.ap-southeast-2.compute.internal_kube-system_kube-etcd-92a56adf23ce887f032335ccc2ebd48e39de6ddd600302fe985d3b088e8d4eea.log
│       │   │                   │   ├── kube-apiserver-ip-10-0-1-161.ap-southeast-2.compute.internal_kube-system_kube-apiserver-76551958905114e0eaa056c0e3eb7cc0af7d9f6291af9efe49bbab95250500ce.log
│       │   │                   │   ├── kube-controller-manager-ip-10-0-1-161.ap-southeast-2.compute.internal_kube-system_kube-controller-manager-d50c38a03f5e01ca438508db11091e9421fa8eb7231f484303a350a7b0538439.log
│       │   │                   │   └── kube-scheduler-ip-10-0-1-161.ap-southeast-2.compute.internal_kube-system_kube-scheduler-7ebaccccbf67c06d379b1541f1970e4e987de138556542469cc24aacea1c9213.log
│       │   │                   └── startup.log
│       │   ├── kubectl
│       │   │   ├── kubectl_cluster-info_--kubeconfig_.tmp.kubeconfig-clustercluster-0904143419.kubeconfig.conf.out
│       │   │   ├── kubectl_describe_all_--kubeconfig_.tmp.kubeconfig-clustercluster-0904143419.kubeconfig.conf.out
│       │   │   ├── kubectl_describe_clusterrolebindings_--kubeconfig_.tmp.kubeconfig-clustercluster-0904143419.kubeconfig.conf.out
│       │   │   ├── kubectl_describe_clusterroles_--kubeconfig_.tmp.kubeconfig-clustercluster-0904143419.kubeconfig.conf.out
│       │   │   ├── kubectl_describe_crd_--kubeconfig_.tmp.kubeconfig-clustercluster-0904143419.kubeconfig.conf.out
│       │   │   ├── kubectl_get_all_-o_yaml_--kubeconfig_.tmp.kubeconfig-clustercluster-0904143419.kubeconfig.conf.out
│       │   │   ├── kubectl_get_clusterrolebindings_-o_wide_--kubeconfig_.tmp.kubeconfig-clustercluster-0904143419.kubeconfig.conf.out
│       │   │   ├── kubectl_get_clusterroles_-o_wide_--kubeconfig_.tmp.kubeconfig-clustercluster-0904143419.kubeconfig.conf.out
│       │   │   ├── kubectl_get_crd_-o_wide_--kubeconfig_.tmp.kubeconfig-clustercluster-0904143419.kubeconfig.conf.out
│       │   │   ├── kubectl_get_events_--kubeconfig_.tmp.kubeconfig-clustercluster-0904143419.kubeconfig.conf.out
│       │   │   └── kubectl_version_--kubeconfig_.tmp.kubeconfig-clustercluster-0904143419.kubeconfig.conf.out
│       │   └── managed_resources
│       │       ├── controlplane-0
│       │       │   ├── asg.out
│       │       │   ├── eni.out
│       │       │   ├── etcd.out
│       │       │   └── instance-0.out
│       │       ├── controlplane-1
│       │       │   ├── asg.out
│       │       │   ├── eni.out
│       │       │   ├── etcd.out
│       │       │   └── instance-0.out
│       │       ├── controlplane-2
│       │       │   ├── asg.out
│       │       │   ├── eni.out
│       │       │   ├── etcd.out
│       │       │   └── instance-0.out
│       │       ├── elb.out
│       │       └── target_group.out
│       └── nodepools
│           ├── default
│           │   └── pool-0
│           │       ├── i-03a23df438ac8278e
│           │       │   └── ip-10-0-1-53
│           │       │       ├── commands
│           │       │       │   ├── df_--all_--inodes.out
│           │       │       │   ├── dmesg.out
│           │       │       │   ├── ip_addr.out
│           │       │       │   ├── ip_route_list_table_all.out
│           │       │       │   ├── journalctl_--since__1_hour_ago__--utc_--boot_--dmesg.out
│           │       │       │   ├── journalctl_--since__1_hour_ago__--utc_-u_containerd.out
│           │       │       │   ├── journalctl_--since__1_hour_ago__--utc_-u_kubelet.out
│           │       │       │   ├── mount.out
│           │       │       │   ├── ps_-edF.out
│           │       │       │   ├── ps_-eo_pid,tid,ppid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm,args,cgroup.out
│           │       │       │   ├── sudo_crictl_ps_a.out
│           │       │       │   ├── sudo_docker_ps_-a.err
│           │       │       │   ├── sudo_docker_ps_-a.out
│           │       │       │   ├── sudo_iptables-save_--counters.out
│           │       │       │   ├── systemctl_status_-l_containerd.out
│           │       │       │   ├── systemctl_status_-l_kubelet.out
│           │       │       │   ├── top_-bn1.out
│           │       │       │   └── uptime.out
│           │       │       └── files
│           │       │           ├── proc
│           │       │           │   └── sys
│           │       │           │       ├── fs
│           │       │           │       │   └── file-nr
│           │       │           │       └── net
│           │       │           │           └── nf_conntrack_max
│           │       │           └── var
│           │       │               └── log
│           │       │                   ├── cloud-init-output.log
│           │       │                   ├── containers
│           │       │                   │   ├── aws-ebs-csi-driver-node-mwxhs_kube-system_ebs-plugin-696201b4997d5cc72d85e6b005faa544ab2311571b50d2b1402b6e967a9364f0.log
│           │       │                   │   ├── aws-ebs-csi-driver-node-mwxhs_kube-system_node-driver-registrar-fcde7a18980aee3c690a84953f44341df9755e28ada6a42a6aea4c1b9d6cdd8e.log
│           │       │                   │   ├── calico-node-2g6zt_kube-system_calico-node-f6c22e30079cff40bef7deafbdfa2a97d0c3a4a95e7b68499c917adb1aa24b09.log
│           │       │                   │   ├── calico-node-2g6zt_kube-system_flexvol-driver-9c6e02ad10d342a91e2c3c3d924f747cfab756e719ffc580c073c6e3640b7515.log
│           │       │                   │   ├── calico-node-2g6zt_kube-system_install-cni-3649827b98cb5b2f79f8e9204b07247ca8d2768e4d13b1a8a1359278741ed156.log
│           │       │                   │   ├── calico-node-2g6zt_kube-system_upgrade-ipam-3a2fe7afee90bfe4e09b0939300be89f4795bc7a57e8085a57cb714e015092f6.log
│           │       │                   │   ├── coredns-88cd756b8-thm49_kube-system_coredns-6485d1e189c7b11fdc6249316ab6082360737c67edb77ab0d426eb26dba261ee.log
│           │       │                   │   ├── gke-connect-agent-20200605-02-00-8647455579-jh2r2_gke-connect_gke-connect-agent-20200605-02-00-369a43ce1bccb57bf3abfd503b9b25c81dbcd73d60a8642b68c0bb89b1b8e9fd.log
│           │       │                   │   └── kube-proxy-sg5nr_kube-system_kube-proxy-44f9171a644c8d7d0497900f361faa22fc673adc8336608ced096e655ccde762.log
│           │       │                   └── startup.log
│           │       ├── i-0569a9f23d49f59ea
│           │       │   └── ip-10-0-1-137
│           │       │       ├── commands
│           │       │       │   ├── df_--all_--inodes.out
│           │       │       │   ├── dmesg.out
│           │       │       │   ├── ip_addr.out
│           │       │       │   ├── ip_route_list_table_all.out
│           │       │       │   ├── journalctl_--since__1_hour_ago__--utc_--boot_--dmesg.out
│           │       │       │   ├── journalctl_--since__1_hour_ago__--utc_-u_containerd.out
│           │       │       │   ├── journalctl_--since__1_hour_ago__--utc_-u_kubelet.out
│           │       │       │   ├── mount.out
│           │       │       │   ├── ps_-edF.out
│           │       │       │   ├── ps_-eo_pid,tid,ppid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm,args,cgroup.out
│           │       │       │   ├── sudo_crictl_ps_a.out
│           │       │       │   ├── sudo_docker_ps_-a.err
│           │       │       │   ├── sudo_docker_ps_-a.out
│           │       │       │   ├── sudo_iptables-save_--counters.out
│           │       │       │   ├── systemctl_status_-l_containerd.out
│           │       │       │   ├── systemctl_status_-l_kubelet.out
│           │       │       │   ├── top_-bn1.out
│           │       │       │   └── uptime.out
│           │       │       └── files
│           │       │           ├── proc
│           │       │           │   └── sys
│           │       │           │       ├── fs
│           │       │           │       │   └── file-nr
│           │       │           │       └── net
│           │       │           │           └── nf_conntrack_max
│           │       │           └── var
│           │       │               └── log
│           │       │                   ├── cloud-init-output.log
│           │       │                   ├── containers
│           │       │                   │   ├── aws-ebs-csi-driver-node-zxxqg_kube-system_ebs-plugin-da9a84b2e45e2ad18d08cbab5260d4cee17636d868a645ab7343f50c25c64ece.log
│           │       │                   │   ├── aws-ebs-csi-driver-node-zxxqg_kube-system_node-driver-registrar-f96a7dbf1bac95c41e022b2ede129c664caafa6eff37caa52f6763c1e737be1a.log
│           │       │                   │   ├── calico-kube-controllers-56cd854695-mjfwx_kube-system_calico-kube-controllers-0ed4316450f5f2e6c4abfb5cc430ed18e2d530525e2ab0ed69a150eed5b3c860.log
│           │       │                   │   ├── calico-node-n5klf_kube-system_calico-node-36101112d423636164c236eacca76d6814c167203cfaf89754984cd79f3b6bbf.log
│           │       │                   │   ├── calico-node-n5klf_kube-system_flexvol-driver-5837e2ba75d549373ca0a3032d1be0c75c0dd442d2e25e286e9006e604794da2.log
│           │       │                   │   ├── calico-node-n5klf_kube-system_install-cni-0e19cfa737dcaaf8fbc40ee2e68460ea8888829b7fab4b8733d5322c339cf838.log
│           │       │                   │   ├── calico-node-n5klf_kube-system_upgrade-ipam-10c94c2fa5f67a69ad9ebeedf9764bbf566c99b50ef60f2f268d484bd028eb76.log
│           │       │                   │   └── kube-proxy-pzh87_kube-system_kube-proxy-5df6d54f9ff2dd036687e064186bcfc2b7c0536fd88586b5cac9e140ffa16658.log
│           │       │                   └── startup.log
│           │       └── i-05bfb8fc961337cc7
│           │           └── ip-10-0-1-167
│           │               ├── commands
│           │               │   ├── df_--all_--inodes.out
│           │               │   ├── dmesg.out
│           │               │   ├── ip_addr.out
│           │               │   ├── ip_route_list_table_all.out
│           │               │   ├── journalctl_--since__1_hour_ago__--utc_--boot_--dmesg.out
│           │               │   ├── journalctl_--since__1_hour_ago__--utc_-u_containerd.out
│           │               │   ├── journalctl_--since__1_hour_ago__--utc_-u_kubelet.out
│           │               │   ├── mount.out
│           │               │   ├── ps_-edF.out
│           │               │   ├── ps_-eo_pid,tid,ppid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm,args,cgroup.out
│           │               │   ├── sudo_crictl_ps_a.out
│           │               │   ├── sudo_docker_ps_-a.err
│           │               │   ├── sudo_docker_ps_-a.out
│           │               │   ├── sudo_iptables-save_--counters.out
│           │               │   ├── systemctl_status_-l_containerd.out
│           │               │   ├── systemctl_status_-l_kubelet.out
│           │               │   ├── top_-bn1.out
│           │               │   └── uptime.out
│           │               └── files
│           │                   ├── proc
│           │                   │   └── sys
│           │                   │       ├── fs
│           │                   │       │   └── file-nr
│           │                   │       └── net
│           │                   │           └── nf_conntrack_max
│           │                   └── var
│           │                       └── log
│           │                           ├── cloud-init-output.log
│           │                           ├── containers
│           │                           │   ├── aws-ebs-csi-driver-node-kdghk_kube-system_ebs-plugin-3e107a145cc86ac24014b1bf4670b26cb9372fd8022bc0698ca68b27e79a9bfe.log
│           │                           │   ├── aws-ebs-csi-driver-node-kdghk_kube-system_node-driver-registrar-25874dd7063db875a27f170e13e74267749c0d9846781ac8ab7568ac5f940a11.log
│           │                           │   ├── calico-node-b98tq_kube-system_calico-node-1dd735ce87fe6f0f73761d2d97c07ea6f908d0cd088e23f6b916b13b6805f828.log
│           │                           │   ├── calico-node-b98tq_kube-system_flexvol-driver-e9951b1a3de0ed9426de260c5591b4c161b4917873f2eaaf1cbdbd3926c9f933.log
│           │                           │   ├── calico-node-b98tq_kube-system_install-cni-58a2f1a5bfb16951a4b012b5ed30751d24c3380f489011274e3ca8de7eb1e1aa.log
│           │                           │   ├── calico-node-b98tq_kube-system_upgrade-ipam-f9804f2eef0d18122219dbb2843880a392f55493dab0edc16bce2dc5e186fa2a.log
│           │                           │   ├── kube-proxy-pf7sv_kube-system_kube-proxy-473ffafc30368b1cb370cd5cbbe4b20e77dfc383da04386d3ec02948f04bc97d.log
│           │                           │   ├── metrics-server-v0.3.3-85dfcbb78-fmklb_kube-system_metrics-server-4570fa1bd82d238d0ab11fc4256e5cc9fa97accece05f7f0c02d5edab884468e.log
│           │                           │   └── metrics-server-v0.3.3-85dfcbb78-fmklb_kube-system_metrics-server-nanny-71eeba81fb3cf128066ca965aabc5bfdf8e045790a46a9ec7e56e73ad3859218.log
│           │                           └── startup.log
│           └── managed_resources
│               ├── asg.out
│               ├── instance-0.out
│               ├── instance-1.out
│               └── instance-2.out
├── index.html
├── mgmt_cluster
│   └── kubectl
│       └── kubectl_get_awscluster_-oyaml_--kubeconfig_.tmp.kubeconfig-mgmt786666316.kubeconfig.conf.out
├── snapshot.config
└── snapshot.log