常见问题解答: Amazon EKS 插件
我对 Amazon Elastic Kubernetes Service (Amazon EKS) 插件有一些疑问。
**注意:**如果在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 Troubleshoot AWS CLI errors(AWS CLI 错误故障排除)。此外,请确保您使用的是最新版本的 AWS CLI。
**问:**如何检查在我的 Amazon EKS 集群中部署 Amazon EKS 插件失败的原因?
要检查失败的原因,请使用 Amazon EKS 控制台或 AWS CLI。
在 Amazon EKS 控制台上,完成以下步骤:
- 打开 Amazon EKS 控制台。
- 在导航窗格中,选择 Clusters(集群)。然后,选择要为其创建插件的集群的名称。
- 选择 Add-ons(插件)选项卡。
- 选择处于 Degraded(降级)、Pending(待处理)或 Inactive(非活动)状态的插件。您可以在 Health issues(运行状况问题)部分找到失败的原因。
或
运行 AWS CLI describe-addon 命令:
$ aws eks describe-addon --cluster-name example-cluster --addon-name coredns
您可以在 Addonissue 对象中找到失败的原因。
输出示例:
{ "addon": { "addonName": "coredns", "clusterName": "eksn", "status": "DEGRADED", "addonVersion": "v1.8.7-eksbuild.4", "health": { "issues": [ { "code": "InsufficientNumberOfReplicas", "message": "The add-on is unhealthy because it doesn't have the desired number of replicas." } ] } "addonArn": "arn:aws:eks:us-east-2:acc-ID:addon/EKS_CLUSTER/coredns/76c68b04-0804-2419-8da6-90d8318af308", "createdAt": "2024-01-17T06:07:23.826000+00:00", "modifiedAt": "2024-04-19T04:40:03.537000+00:00", "tags": {} } }
**问:**我收到以下错误消息: “The add-on is unhealthy because it doesn't have the desired number of replicas.” 如何对此错误进行故障排除?
要检查集群中相应容器组 (pod) 的状态,请运行以下命令:
kubectl get pods -n kube-system kubectl describe pod pod-name -n kube-system kubectl logs pod-name -n kube-system
请将 pod-name 替换为您的容器组 (pod) 的名称。
要解析输出中容器组 (pod) 的状态,请参阅我如何排查 Amazon EKS 中的容器组 (pod) 状态问题?
**问:**我收到以下错误消息: “Conflicts found when trying to apply.Will not continue due to resolve conflicts mode.” 如何对此错误进行故障排除?
在 JSON 文件中写入配置。然后,将文件应用于插件。有关详细信息,请参阅 如何避免在创建或更新 Amazon EKS 托管插件时出现配置冲突?
**问:**如何自定义我的 Amazon EKS 插件的配置?
要为您的插件创建自定义配置,请使用 CreateAddon API 中的 ConfigurationValue 参数。
要检查 CoreDNS 插件的配置选项,请运行 describe-addon 命令:
aws eks describe-addon-configuration --addon-name coredns --addon-version v1.9.3-eksbuild.2 --query configurationSchema --output text | jq
输出示例:
{ "$ref": "#/definitions/Coredns", "$schema": "http://json-schema.org/draft-06/schema#", "definitions": { "Coredns": { "additionalProperties": false, "properties": { "computeType": { "type": "string" }, "corefile": { "description": "Entire corefile contents to use with installation", "type": "string" }, "nodeSelector": { "additionalProperties": { "type": "string" }, "type": "object" }, "replicaCount": { "type": "integer" }, "resources": { "$ref": "#/definitions/Resources" } }, "title": "Coredns", "type": "object" }, "Limits": { "additionalProperties": false, "properties": { "cpu": { "type": "string" }, "memory": { "type": "string" } }, "title": "Limits", "type": "object" }, "Resources": { "additionalProperties": false, "properties": { "limits": { "$ref": "#/definitions/Limits" }, "requests": { "$ref": "#/definitions/Limits" } }, "title": "Resources", "type": "object" } } }
输出中的 configurationSchema 元素为选定版本的 CoreDNS 插件提供了可配置元素。
要更新此插件,请根据 JSON 架构指定自定义配置。例如,为了帮助在一组特定的节点上调度 CoreDNS 部署容器组,您可以自定义 nodeSelector 参数中的 selector_value。
示例:
{ "nodeSelector": { "selector_key": "selector_value" } }
问: 当我尝试使用自定义配置创建或更新插件时,为什么会收到以下错误: “ConfigurationValue provided in request is not supported: Json schema validation failed with error”?
以下配置会导致此错误:
... "Limits": { "cpu":"100m", "memory":"500Mi" } ...
确认您的高级配置遵循插件版本支持的 configurationSchema 格式。要指定 CoreDNS 插件的资源配额和请求,请运行以下架构:
... { "resources": { "limits": { "cpu": "200m", "memory": "200Mi", }, "requests": { "cpu": "100m", "memory": "100Mi" } } } ...
**问:**更新插件后,为什么 Amazon EKS 将带有自定义参数的插件 JSON 架构恢复为默认参数?
在 UpdateAddon API 操作期间,如果您未在 configurationValues 字段中包含插件的自定义参数,则该插件将恢复为默认参数。
要在更新插件时保持对配置的编辑,请执行以下操作之一:
在每次 UpdateAddon API 操作期间,将自定义参数包含在 configurationValues 参数中。
或
在 UpdateAddon 操作中使用 --resolve-conflicts PRESERVE 选项。
**问:**如何检查插件是由 Amazon EKS 管理的还是自行管理的?
要检查在集群中部署的插件的类型,请运行 AWS CLI describe-addon 命令:
aws eks describe-addon --cluster-name example-cluster --addon-name example-addon --query addon.addonVersion --output text
**注意:**将 example-cluster 替换为您的集群名称,将 example-addon 替换为您的插件名称。
如果输出提供有关您的插件的信息,则 Amazon EKS 会管理该插件。如果您在输出中收到错误消息,则该插件是自行管理的。
**问:**如何将集群中的自行管理插件迁移到 Amazon EKS 插件?
使用适当的冲突解决方法创建 Amazon EKS 插件。
当您创建 Amazon EKS 插件时,您可以在 configurationSchema 字段中传递您的自定义配置。
要保持集群内配置的更改,请在更新或删除插件时使用 PRESERVE 选项。要保持 Kubernetes API 对 Amazon EKS 插件无法管理的字段所做的更改,请使用 PRESERVE 选项。如果架构不支持此托管字段,则可以在插件部署或 DaemonSet 中手动添加自定义项。然后,使用 PRESERVE 选项进行下一次更新操作。
当您为冲突解决方法选择 OVERWRITE 时,Amazon EKS 会恢复插件的自定义设置,并使用其默认值覆盖您的值。
**问:**如何将 Amazon EKS 插件迁移到自行管理的插件?
您必须从 Amazon EKS 集群中移除 Amazon EKS 插件,然后运行 delete-addon 命令:
aws eks delete-addon --cluster-name example-cluster --addon-name example-addon --preserve
**注意:**将 example-cluster 替换为您的集群名称,将 example-addon 替换为您的插件名称。使用 --preserve 标志来保留底层 Kubernetes 资源。
- 语言
- 中文 (简体)

相关内容
AWS 官方已更新 3 年前