在EKS上安装CloudWatch Container Insights | Kubernetes

时间:2020-02-23 14:31:40  来源:igfitidea点击:

CloudWatch是一项服务,可在AWS Cloud平台中以日志,指标和事件的形式收集运营和监控数据。然后,它通过使用自动化仪表板来可视化数据,以便我们可以统一查看在AWS和本地运行的AWS资源,应用程序和服务。

部署EKS或者Kubernetes集群后,需要配置Container Insights将数据发送到CloudWatch。

此设置的准备工作是功能正常的Amazon EKS或者Kubernetes集群。

检查以确认kubectl可以连接到Kubernetes API Server。

$kubectl get nodes
NAME                                            STATUS   ROLES    AGE   VERSION
ip-192-168-138-244.eu-west-1.compute.internal   Ready    <none>   9d    v1.17.9-eks-4c6976
ip-192-168-176-247.eu-west-1.compute.internal   Ready    <none>   9d    v1.17.9-eks-4c6976

创建策略并将其添加到工作节点的IAM角色

通过以下网址打开Amazon EC2控制台:https://console.aws.amazon.com/ec2/,然后选择一个Worker节点。

在描述中选择IAM角色。在" IAM角色"页面上,选择"添加策略"。

选中CloudWatchAgentServerPolicy复选框并添加策略。

在Amazon EKS上设置容器Insights

将策略添加到EKS辅助节点角色后,继续在Amazon EKS上部署Container Insights。

将群集名称和区域另存为变量。

EKS_CLUSTER_NAME="prod-eks-cluster"
EKS_CLUSTER_REGION="eu-west-1"

下载安装列表:

curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/quickstart/cwagent-fluentd-quickstart.yaml

更新文件以设置正确的群集和区域名称。

sed -ie "s/{{cluster_name}}/${EKS_CLUSTER_NAME}/;s/{{region_name}}/${EKS_CLUSTER_REGION}/" cwagent-fluentd-quickstart.yaml

使用以下命令在Amazon EKS上安装Container Insights。

kubectl apply -f ./cwagent-fluentd-quickstart.yaml

如命令执行输出所示,创建了许多资源:

namespace/amazon-cloudwatch unchanged
serviceaccount/cloudwatch-agent unchanged
clusterrole.rbac.authorization.k8s.io/cloudwatch-agent-role unchanged
clusterrolebinding.rbac.authorization.k8s.io/cloudwatch-agent-role-binding unchanged
configmap/cwagentconfig unchanged
daemonset.apps/cloudwatch-agent unchanged
configmap/cluster-info unchanged
serviceaccount/fluentd unchanged
clusterrole.rbac.authorization.k8s.io/fluentd-role unchanged
clusterrolebinding.rbac.authorization.k8s.io/fluentd-role-binding unchanged
configmap/fluentd-config unchanged
daemonset.apps/fluentd-cloudwatch unchanged

获取amazon-cloudwatch命名空间中所有资源的状态。

$kubectl get all -n amazon-cloudwatch
NAME                           READY   STATUS    RESTARTS   AGE
pod/cloudwatch-agent-lqtfw     1/1     Running   0          5m21s
pod/cloudwatch-agent-lsz92     1/1     Running   0          5m21s
pod/fluentd-cloudwatch-6j2jf   1/1     Running   0          5m17s
pod/fluentd-cloudwatch-dzrdq   1/1     Running   0          5m17s

NAME                                DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
daemonset.apps/cloudwatch-agent     2         2         2       2            2           <none>          5m22s
daemonset.apps/fluentd-cloudwatch   2         2         2       2            2           <none>          5m18s

我们可以看到所有Pod都处于运行状态,它们是由守护程序集创建的。

查看容器Insights指标

设置Container Insights并收集指标后,可以在CloudWatch控制台中查看这些指标。

在导航窗格中选择"性能监视",从中可以选择要查看的资源类型指标。