选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

混合节点 nodeadm 参考

聚焦模式
混合节点 nodeadm 参考 - Amazon EKS

帮助改进此页面

想为本用户指南做出贡献? 选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。您的贡献有助于我们的用户指南为每个人提供更充分的参考。

帮助改进此页面

想为本用户指南做出贡献? 选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。您的贡献有助于我们的用户指南为每个人提供更充分的参考。

用于混合节点生命周期管理的 Amazon EKS 混合节点功能 CLI (nodeadm),与用于引导 Amazon EC2 实例以作为 Amazon EKS 集群中节点的 nodeadm 版本不同。请按照相应 nodeadm 版本的文档和参考进行操作。本文档页面针对混合节点 nodeadm 版本,混合节点 nodeadm 版本可在 GitHub 上的 eks-hybrid 存储库中获取。有关用于 Amazon EC2 实例的 nodeadm 版本,请参阅 nodeadm – Amazon EKS AMI 文档

下载 nodeadm

nodeadm 的混合节点版本在 Amazon S3 中托管,由 Amazon CloudFront 分发。要在每台本地主机上安装 nodeadm,您可以在本地主机上运行以下命令。

x86_64 主机:

curl -OL 'https://hybrid-assets.eks.amazonaws.com/releases/latest/bin/linux/amd64/nodeadm'

ARM 主机

curl -OL 'https://hybrid-assets.eks.amazonaws.com/releases/latest/bin/linux/arm64/nodeadm'

将可执行文件权限添加到每台主机上下载的二进制文件。

chmod +x nodeadm

命令

重要

您必须使用具有 root/sudo 权限的用户运行 nodeadm

安装

install 命令用于安装运行和将混合节点加入 Amazon EKS 集群所需的构件和依赖项。install 命令可以在每个混合节点上单独运行,也可以在映像生成管道期间运行,以便在操作系统映像中预装混合节点依赖项。

使用量

nodeadm install [KUBERNETES_VERSION] [flags]

定位参数

(必需)KUBERNETES_VERSION 要安装的 EKS Kubernetes 的主要.次要版本,例如 1.31

Flags

名称 必需 描述

-p,

--credential-provider

TRUE

要安装的凭证提供者。支持的值为 iam-rassm。请参阅准备用于混合节点的凭证了解更多信息。

-s,

--containerd-source

FALSE

containerd 的来源。nodeadm 支持从操作系统发行版、Docker 软件包安装 containerd 以及跳过 containerd 安装。

distro:这是默认值。nodeadm 将安装由节点操作系统分发的 containerd 软件包。distro 不是 Red Hat Enterprise Linux(RHEL)操作系统支持的值。

dockernodeadm 将安装由 Docker 生成和分发的 containerd 软件包。docker 不是 Amazon Linux 2023 支持的值

nonenodeadm 不会安装 containerd 软件包。您必须首先手动安装 containerd,然后再运行 nodeadm init

-t,

--timeout

FALSE

安装命令的最大持续时间。输入遵循持续时间格式。例如 1h23m。安装命令的默认下载超时设置为 20 分钟。

-h, --help

FALSE

显示带有可用标志、子命令和位置值参数的帮助消息。

示例

安装 Kubernetes 版本 1.31,并将 AWS Systems Manager(SSM)作为凭证提供者

nodeadm install 1.31 --credential-provider ssm

安装 Kubernetes 版本 1.31,并将 AWS Systems Manager(SSM)作为凭证提供者,将 Docker 作为 containerd 源,下载超时设置为 20 分钟。

nodeadm install 1.31 --credential-provider ssm --containerd-source docker --timeout 20m

安装 Kubernetes 版本 1.31,并将 AWS IAM Roles Anywhere 作为凭证提供者

nodeadm install 1.31 --credential-provider iam-ra

安装的文件

Artifact 路径

IAM Roles Anywhere CLI

/usr/local/bin/aws_signing_helper

Kubelet 二进制包

/usr/bin/kubelet

Kubectl 二进制包

usr/local/bin/kubectl

ECR 凭证提供者

/etc/eks/image-credential-provider/ecr-credential-provider

AWS IAM 身份验证器

/usr/local/bin/aws-iam-authenticator

SSM 安装 CLI

/opt/ssm/ssm-setup-cli

SSM Agent

在 Ubuntu 上:/snap/amazon-ssm-agent/current/amazon-ssm-agent

在 RHEL 和 AL2023 上:/usr/bin/amazon-ssm-agent

Containerd

在 Ubuntu 和 AL2023 上:/usr/bin/containerd

在 RHEL 上:/bin/containerd

Iptables

在 Ubuntu 和 AL2023 上:/usr/sbin/iptables

在 RHEL 上:/sbin/iptables

CNI 插件

/opt/cni/bin

安装的构件跟踪器

/opt/nodeadm/tracker

配置检查

config check 命令会检查提供的节点配置是否存在错误。此命令可用于确认和验证混合节点配置文件的正确性。

使用量

nodeadm config check [flags]

Flags

名称 必需 描述

-c,

--config-source

TRUE

nodeadm 配置的来源。对于混合节点,输入应遵循带文件架构的 URI。

-h, --help

FALSE

显示带有可用标志、子命令和位置值参数的帮助消息。

示例

nodeadm config check --config-source file:///root/nodeConfig.yaml

init

init 命令会启动混合节点并将其连接到配置的 Amazon EKS 集群。

使用量

nodeadm init [flags]

Flags

名称 必需 描述

-c,

--config-source

TRUE

nodeadm 配置的来源。对于混合节点,输入应遵循带文件架构的 URI。

-s,

--skip

FALSE

要跳过的 init 阶段。除非有助于解决问题,否则不建议跳过任何阶段。

install-validation 会跳过检查正在进行的安装命令是否成功运行。

-h, `--help

FALSE

显示带有可用标志、子命令和位置值参数的帮助消息。

示例

nodeadm init --config-source file://root/nodeConfig.yaml

安装的文件

名称 路径

Kubelet kubeconfig

/var/lib/kubelet/kubelet/kubecconfig

Kubelet config

/etc/kubernetes/kubelet/config.json

Kubelet systemd 单元

/etc/systemd/system/kubelet.service

映像凭证提供者配置

/etc/eks/image-credential-provider/config.json

Kubelet 环境文件

/etc/eks/kubelet/environment

Kubelet 证书

/etc/kubernetes/pki/ca.crt

Containerd 配置

/etc/containerd/config.toml

Containerd 内核模块配置

/etc/modules-load.d/contianerd.conf

AWS 配置文件

/etc/aws/hybrid/config

AWS 凭证文件(如果启用了凭证文件)

/eks-hybrid/.aws/credentials

AWS 签名助手系统单元

/etc/systemd/system/aws_signing_helper_update.service

Sysctl conf 文件

/etc/sysctl.d/99-nodeadm.conf

docker 存储库的 Apt 管理器文件(如果 containerd 源是 docker)

Ca-certificates

/etc/ssl/certs/ca-certificates.crt

Gpg 密钥文件

/etc/apt/keyrings/docker.asc

Docker 存储库源文件

/etc/apt/sources.list.d/docker.list

升级

nodeadm upgrade 命令会将所有已安装的构件升级到最新版本,启动节点以配置升级后的构件并加入 AWS 上的 EKS 集群。对于在节点上运行的工作负载,升级是一个中断性命令。在运行升级之前,请将您的工作负载转移至其他节点。

使用量

nodeadm upgrade [KUBERNETES_VERSION] [flags]

定位参数

(必需)KUBERNETES_VERSION 要安装的 EKS Kubernetes 的主要.次要版本,例如 1.31

Flags

名称 必需 描述

-c,

--config-source

TRUE

nodeadm 配置的来源。对于混合节点,输入应遵循带文件架构的 URI。

-t,

--timeout

FALSE

下载构件超时。输入遵循持续时间格式。例如,1h23m。升级命令的默认下载超时设置为 10 分钟。

-s,

--skip

FALSE

要跳过的升级阶段。除非有助于解决问题,否则不建议跳过任何阶段。

pod-validation 会跳过检查除进程守护程序集和静态容器组外,是否节点上的所有容器组都在运行。

node-validation 会跳过检查节点是否已被封锁。

init-validation 会跳过检查节点在运行升级之前是否已成功初始化。

-h, --help

FALSE

显示带有可用标志、子命令和位置值参数的帮助消息。

示例

nodeadm upgrade 1.31 --config-source file:///root/nodeConfig.yaml
nodeadm upgrade 1.31 --config-source file:///root/nodeConfig.yaml --timeout 20m

卸载

nodeadm uninstall 命令会停止并移除在 nodeadm install 期间安装的构件 nodeadm,包括 kubelet 和 containerd。请注意,卸载命令不会从集群中清空或删除混合节点。您必须分别运行清空和删除操作,有关更多信息,请参阅移除混合节点。默认情况下,如果节点上还有容器组,则 nodeadm uninstall 不会执行。同样,nodeadm uninstall 也不会移除 CNI 依赖项或您在集群上运行的其他 Kubernetes 附加组件的依赖项。要从主机上完全移除 CNI 安装,请参阅为混合节点配置 CNI 中的说明。如果将 AWS SSM 混合激活作为本地凭证提供者,则 nodeadm uninstall 命令将从 AWS SSM 托管式实例中注销您的主机。

使用量

nodeadm uninstall [flags]

Flags

名称 必需 描述

-s,

--skip

FALSE

要跳过的升级阶段。除非有助于解决问题,否则不建议跳过任何阶段。

pod-validation 会跳过检查除进程守护程序集和静态容器组外,是否节点上的所有容器组都在运行。

node-validation 会跳过检查节点是否已被封锁。

init-validation 会跳过检查节点在运行升级之前是否已成功初始化。

-h,

--help

FALSE

显示带有可用标志、子命令和位置值参数的帮助消息。

示例

nodeadm uninstall
nodeadm uninstall --skip node-validation,pod-validation

Debug

nodeadm debug 命令可用于对运行不正常或配置有错误的混合节点进行故障排除。此命令可以验证以下要求是否已经满足。

  • 该节点具有必需 AWS API 的网络访问权限以获取凭证,

  • 该节点能够获取所配置混合节点 IAM 角色的 AWS 凭证,

  • 该节点具有对 EKS Kubernetes API 端点的网络访问权限,并且 EKS Kubernetes API 端点证书的有效,

  • 该节点能够通过 EKS 集群身份验证,其在集群中的身份有效,并且该节点可以通过为 EKS 集群配置的 VPC 访问 EKS 集群。

如果发现错误,该命令的输出会提供故障排除步骤建议。某些验证步骤会显示子进程。如果这些子进程失败,则输出将显示在验证错误下的 stderr 部分中。

使用量

nodeadm debug [flags]

Flags

名称 必需 描述

-c, --config-source

TRUE

nodeadm 配置的来源。对于混合节点,输入应遵循带文件架构的 URI。

-h, --help

FALSE

显示带有可用标志、子命令和位置值参数的帮助消息。

示例

nodeadm debug --config-source file://nodeConfig.yaml

节点配置 API 参考

AWS SSM 混合激活

以下是将 AWS SSM 混合激活作为混合节点凭证的示例 nodeConfig.yaml

apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: # Name of the EKS cluster region: # AWS Region where the EKS cluster resides hybrid: ssm: activationCode: # SSM hybrid activation code activationId: # SSM hybrid activation id

AWS IAM Roles Anywhere

以下是将 AWS IAM Roles Anywhere 作为混合节点凭证的示例 nodeConfig.yaml

如果将 AWS IAM Roles Anywhere 作为本地凭证提供者,您在 nodeadm 配置中使用的 nodeName 必须与您为混合节点 IAM 角色设定的权限范围一致。例如,假设混合节点 IAM 角色的权限仅允许 AWS IAM Roles Anywhere 在角色会话名称等于主机证书的 CN 时代入该角色,则 nodeadm 配置中的 nodeName 必须与证书的 CN 相同。您使用的 nodeName 长度不能超过 64 个字符。有关更多信息,请参阅 准备用于混合节点的凭证

apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: # Name of the EKS cluster region: # AWS Region where the EKS cluster resides hybrid: iamRolesAnywhere: nodeName: # Name of the node trustAnchorArn: # ARN of the IAM Roles Anywhere trust anchor profileArn: # ARN of the IAM Roles Anywhere profile roleArn: # ARN of the Hybrid Nodes IAM role certificatePath: # Path to the certificate file to authenticate with the IAM Roles Anywhere trust anchor privateKeyPath: # Path to the private key file for the certificate

(可选)Kubelet 配置

您可以在 nodeadm 配置中传递 kubelet 配置和标志。有关如何添加额外节点标签 abc.amazonaws.com/test-label 和配置,以将 shutdownGracePeriod 设置为 30 秒的信息,请参阅以下示例。

apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: # Name of the EKS cluster region: # AWS Region where the EKS cluster resides kubelet: config: # Map of kubelet config and values shutdownGracePeriod: 30s flags: # List of kubelet flags - --node-labels=abc.company.com/test-label=true hybrid: ssm: activationCode: # SSM hybrid activation code activationId: # SSM hybrid activation id

(可选)Containerd 配置

您可以在 nodeadm 配置中传递自定义 containerd 配置。nodeadm containerd 配置接受内联 TOML。要了解如何配置 containerd 以禁用删除 containerd 内容存储中未打包的映像层,请参阅以下示例。

apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: # Name of the EKS cluster region: # AWS Region where the EKS cluster resides containerd: config: | # Inline TOML containerd additional configuration [plugins."io.containerd.grpc.v1.cri".containerd] discard_unpacked_layers = false hybrid: ssm: activationCode: # SSM hybrid activation code activationId: # SSM hybrid activation id

您还可以使用 containerd 配置来实现 SELinux 支持。在 containerd 上启用 SELinux 后,确保在节点上调度的容器组启用了正确的 securityContext 和 seLinuxOptions。有关配置安全上下文的更多信息,请参阅 Kubernetes 文档

注意

Red Hat Enterprise Linux(RHEL)8 和 RHEL 9 在主机上默认启用了 SELinux 并设置为严格模式。Amazon Linux 2023 默认启用 SELinux 并设置为宽松模式。当主机上的 SELinux 设置为宽容模式时,在 containerd 上启用此功能不会阻止请求,但会根据主机上的 SELinux 配置记录请求。

apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: # Name of the EKS cluster region: # AWS Region where the EKS cluster resides containerd: config: | # Inline TOML containerd additional configuration [plugins."io.containerd.grpc.v1.cri"] enable_selinux = true hybrid: ssm: activationCode: # SSM hybrid activation code activationId: # SSM hybrid activation id

本页内容

下一主题:

故障排除

上一主题:

配置代理
隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。