AWS EKS配置ServiceAccount启用Cloudwatch Container Insight 监控

作者:ezmsp易云服科技公有云架构师雷凯栋

目标:

给EKS配置Cloudwatch Container Insight Service account,并且启用Cloudwatch Container Insight

验证先决条件

  1. 在其中一个支持适用于 Amazon EKS 和 Kubernetes 的 Container Insights 的区域中,您具有正常工作的 Amazon EKS 集群或 Kubernetes 集群并附加了节点。有关支持的区域列表,请参阅使用 Container Insights。(AWS国内以及海外都支持)
  2. 您已安装并正在运行 kubectl。有关更多信息,请参阅 Amazon EKS 用户指南 中的安装 kubectl。

创建EKS集群

编辑create_cluster.yaml文件

apiVersion: eksctl.io/v1alpha5

kind: ClusterConfig
metadata:
  name: eks-test03
  region: cn-north-1
  version: "1.22"
vpc:
  clusterEndpoints:
    publicAccess:  true
    privateAccess: true
kubernetesNetworkConfig:
  serviceIPv4CIDR: 10.50.0.0/24
managedNodeGroups:
  - name: managed-ng
    labels:
      Name: managed-ng
    instanceType: m5.2xlarge
    minSize: 3
    desiredCapacity: 3
    maxSize: 6
    volumeType: gp3
    volumeSize: 100
    tags:
      nodegroup-name: ng1
    iam:
      withAddonPolicies:
        imageBuilder: true
        autoScaler: true
        certManager: true
        efs: true
        albIngress: true
        xRay: true
        cloudWatch: true
cloudWatch:
  clusterLogging:
    enableTypes: ["api", "audit", "authenticator", "controllerManager", "scheduler"]
    logRetentionInDays: 30

保存退出并执行以下命令创建集群

eksctl create cluster -f create_cluster.yaml

为EKS生成IAM的OIDC授权(修改对应的Region以及Cluster名称)

eksctl utils associate-iam-oidc-provider --region cn-north-1 --cluster eks-test03 --approve

创建IAMserviceaccount (修改对应的region 以及Cluster 名称)

eksctl create iamserviceaccount --cluster=eks-test03 --namespace=amazon-cloudwatch --name=cloudwatch-agent --attach-policy-arn=arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy --override-existing-serviceaccounts --region cn-north-1 --approve

启用Container Insight(快速配置Fluent Bit以将日志发送到Cloudwatch Logs)

部署配置文件(注意这一段需要Linux的bash来执行,Windows下cmd无法执行)

ClusterName=eks-test03
RegionName=cn-north-1
FluentBitHttpPort='2020' 
FluentBitReadFromHead='Off' 
[[ ${FluentBitReadFromHead} = 'On' ]] && FluentBitReadFromTail='Off'|| FluentBitReadFromTail='On' 
[[ -z ${FluentBitHttpPort} ]] && FluentBitHttpServer='Off' || FluentBitHttpServer='On' 

AWS国内地区执行:

curl https://myworkshop.bitipcman.com/eks101/cwagent-fluent-bit-quickstart-cn.yaml | sed 's/{{cluster_name}}/'${ClusterName}'/;s/{{region_name}}/'${RegionName}'/;s/{{http_server_toggle}}/"'${FluentBitHttpServer}'"/;s/{{http_server_port}}/"'${FluentBitHttpPort}'"/;s/{{read_from_head}}/"'${FluentBitReadFromHead}'"/;s/{{read_from_tail}}/"'${FluentBitReadFromTail}'"/' | kubectl apply -f - 

海外地区修改以下url:

curl https://myworkshop.bitipcman.com/eks101/cwagent-fluent-bit-quickstart.yaml | sed 's/{{cluster_name}}/'${ClusterName}'/;s/{{region_name}}/'${RegionName}'/;s/{{http_server_toggle}}/"'${FluentBitHttpServer}'"/;s/{{http_server_port}}/"'${FluentBitHttpPort}'"/;s/{{read_from_head}}/"'${FluentBitReadFromHead}'"/;s/{{read_from_tail}}/"'${FluentBitReadFromTail}'"/' | kubectl apply -f - 

完成部署后,稍等3-5分钟左右进入Cloudwatch查看Container Insight监控

可以在控制台通过选择某个集群的指标纬度来查看监控

AWS EKS配置ServiceAccount启用Cloudwatch Container Insight 监控

发表评论

您的电子邮箱地址不会被公开。