AKS资源管理和安全设置(还有一点趣闻)
首先
在使用AKS的过程中,我希望将我所做的事情记录下来作为纪录。具体项目如下所示:
-
- リソース管理(監視)
-
- セキュリティ
- 小ネタ集
资源管理
基于Kubernetes的多节点架构,过度部署节点会成本高昂,因此资源管理非常重要。
然而,仅使用最少资源来运营可能导致运行不稳定,同时也可能无法应对部署、CronJob和HPA导致Pod增加的需求,因此在内存和CPU的上限设置上保持适度的余量非常重要。
使用多少资源进行确认,并设置为适度的数量,以便自动进行自动扩展。
确认资源的方式
or
资源的确认方法
kubectl – kubernetes控制命令行工具
最方便的方法是使用kubectl describe node 。
通过这个命令,您可以确认CPU和内存的请求和限制。
此外,通过kubectl top node 您可以查看当前的CPU和内存使用情况。
然而,请注意,这只能获取到当前值,无法进行跟踪等操作。
Azure 门户
您可以通过门户进行确认。
前提是需要创建Log Analytics工作区。(如果没有,则无法查看下面的“分析信息”,并且有关可采集的指标的信息会受到限制)
访问Kubernetes资源,并监控两个项目:「分析信息」和「指标数据」。
分析信息可以查看基本信息,但只能查看有限的信息,并且获取所需信息需要进行一些操作,所以基本上建议使用指标数据。
将绘制的图表保存在仪表盘上,您可以随时轻松查看所需的图表。
只要使用过,我想您可能对操作方法有所了解,但是您可以按照以下方式查看每个节点的CPU使用率。
然后,如果点击“应用黄色分割”,可以将其分割为每个节点或节点池的值,所以选择它,可以选择像上面的图表那样的每个节点的CPU使用率图表。
如果在当前状态下选择右上方的“钉住”选项,您可以保存已有的仪表板或创建新的仪表板来保存图表。
可以在这里创建新的警报规则。(在下面的监控部分中将进行说明)
通过保存必要的信息在仪表盘上,您可以轻松地确认资源的使用率和每个容器的资源分配情况。
Se você solicitar somente uma opção de frase em , não conseguirei fornecer uma resposta, pois necessito de mais contexto ou informação para criar uma frase adequada e relevante em . Por favor, forneça mais detalhes sobre o que você gostaria de expressar.
Nota: A frase “他サービス” não é do idioma , parece ser uma mistura de caracteres chineses com um termo em (サービス) que significa “serviço”. No entanto, se você deseja uma tradução adequada para este termo em , preciso de mais informações para oferecer uma resposta precisa.
您还可以使用各种外部服务和库来进行资源管理和日志记录。例如,有一些著名的地方可以进行这些操作。
-
- ElasticSearch + kibana
-
- Prometheus + Grafana
- Datadog
我想大致对吧。
我之前用过ElasticSearch,但基于使用需求,它太过于强大了,所以现在不再使用。
虽然ElasticSearch可以做很多事情,比如对日志进行全文分析,但是Azure的服务完全可以满足需求。
然而,随着数据量增加,Log Analysis的工作空间费用也会成比例增加,因此,如果Pod数量或节点数量增加,可能会再次使用ElasticSearch + kibana进行操作。鉴于ElasticSearch本身使用了大量资源,最终我们需要支付增加节点所带来的费用,所以计划在当前状态下运营一段时间。
我从来没有试过Prometheus + Grafana,但Azure有官方示例,所以你可以试一试。
自动缩放
在中国,自动缩放有两种类型,一种是Pod的自动缩放,另一种是节点的自动缩放。
Pod的扩展
这只是创建水平Pod自动扩展器资源的过程,详细信息暂不提及。通过多种指标,如Pod的CPU使用率等,可以设置Pod的扩容和缩容。
节点的扩展
考虑到在AKS中具有节点的自动缩放功能,我认为最好设置这个功能。即使通过HPA来增加Pod数量,如果没有节点,也无法增加Pod数量。
在AKS的服务中,通过选择节点池(设置)并选择要进行设置的节点池,可以通过节点池的扩缩容功能来自动设置自动扩容。当Pod增加且节点资源不足时,节点会自动增加,这真是太方便了。
安全
WAF配置
虽然 Nginx-Ingress 控制器可以配置 WAF,但由于我想将 WAF 放置在 AKS 之外,我选择配置了 Front Door 并添加了 WAF。同样,也可以使用 Application Gateway 进行配置。
如果是前端门户,则在设置中有一个名为Web应用程序防火墙的选项,选择要设置WAF的服务。这样就完成了WAF的设置。
请根据您自己的环境进行设置,可以修改Azure提供的默认WAF配置,例如白名单等。
您也可以按照以下步骤设置此日志(FrontDoor的WAF日志)。
-
- 创建Log Analytics工作区
-
- 选择前端监视项的诊断设置
-
- 选择添加诊断设置
- 在显示的屏幕上选择所需项目并保存
只需在 Log Analytics 的查询界面中执行以下查询。
// Frontdoorに対するアクセスログを表示
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.NETWORK" and Category == "FrontdoorAccessLog"
// Frontdoorで設定しているWAFのログを表示
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.NETWORK" and Category == "FrontdoorWebApplicationFirewallLog"
// 同一IPによるアクセスをまとめる
// 例えばこの回数に制限を設けてアラートを表示することもできる。
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.NETWORK" and Category == "FrontdoorAccessLog"
| summarize count() by clientIp_s
另外,请参阅官方文档以获取有关WAF详细配置等的信息。
创建适用于应用程序网关的Web应用程序防火墙策略。
关于Azure应用程序网关的Web应用程序防火墙,常见问题如下。
Service Principal的身份验证信息更新
如果您在AKS上設置了Service Principal以便能夠訪問其他Azure資源(我認為很多人都會配置以便能夠訪問Azure Container Registry),則需要定期更新驗證資訊。因為默認情況下有效期為1年,所以需要注意可能會突然無法訪問的情況。
az aks update-credentials \
--resource-group myResourceGroup \
--name myAKSCluster \
--reset-service-principal \
--service-principal "$SP_ID" \
--client-secret "$SP_SECRET"
请参考以下内容以获取详细信息。
更新或轮换用于Azure Kubernetes Service(AKS)的凭据。
小笑话合集
节点选择器
在Kubernetes中,您可以将选择调度节点的选项包含在Pod的创建定义中,同时也可以指定节点池。
nodeSelector:
agentpool: pool_name
这样一来,我们也可以根据不同的服务将节点池进行分隔,是可行的方法。
日志分析费用
使用Log Analytics时,请注意如果日志量很大,费用可能会相当高。
根据按用量计费的方式,截至2021年11月5日,每GB的费用为379.825日元。
不过,这是针对东日本地区的价格。在East US创建Log Analytics将以261.556日元/GB计费。
根据我的观察,这个地区似乎是最便宜的。
AKS如果增加节点,日志的成本也会随之增加,所以我认为我们不能不利用它。
需要注意的是,
-
- 料金がいつ変わるか分からない
- クラスターが日本にあって、Log AnalyticsがEast USにある場合の影響がいまいち分かっていない(メトリクスをEast USにあるLog Analyticsのサーバーに送ってるだけなので、多少ラグがある程度なのではとは思っています。)
在不同地区的收费差异可能相当大。