作者:ezmsp易云服科技公有云架构师雷凯栋
目标:
给EKS配置Cloudwatch Container Insight Service account,并且启用Cloudwatch Container Insight
验证先决条件
- 在其中一个支持适用于 Amazon EKS 和 Kubernetes 的 Container Insights 的区域中,您具有正常工作的 Amazon EKS 集群或 Kubernetes 集群并附加了节点。有关支持的区域列表,请参阅使用 Container Insights。(AWS国内以及海外都支持)
- 您已安装并正在运行 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监控
可以在控制台通过选择某个集群的指标纬度来查看监控