eksctl 0.17.0 发布解析:公网子网默认启用 MapPublicIpOnLaunch、Kubernetes 1.15 成为默认版本与 kubeReserved 默认值机制

发布时间:2026/10/14 15:20:29
eksctl 0.17.0 发布解析:公网子网默认启用 MapPublicIpOnLaunch、Kubernetes 1.15 成为默认版本与 kubeReserved 默认值机制 云原生容器编排DevOps【免费下载链接】eksctlThe official CLI for Amazon EKS项目地址https://gitcode.com/gh_mirrors/ek/eksctl点击查看免费下载本文围绕 eksctl 0.17.0 版本的发布说明docs/release_notes/0.17.0.md展开逐项解析该版本引入的 6 项改进与 1 项缺陷修复公网子网默认启用MapPublicIpOnLaunch的 IP 映射行为变更、配套的eksctl utils update-legacy-subnet-settings存量集群修复命令、Kubernetes 1.15 成为默认集群版本、kubeletkubeReserved默认值按实例规格自适应以及客户端 Kubernetes 依赖升级到 1.15.10 等。读完后你将理解这些变更背后的底层实现位置VPC 构建器、子网校验逻辑、节点引导配置并能正确处理用旧版 eksctl 创建的老集群上新增节点组失败这一典型问题。0.17.0 版本变更总览以下是 docs/release_notes/0.17.0.md 中记录的全部变更条目本文后续各节逐一展开分类变更条目对应 PR主题ImprovementsNew default IP mapping settings for public subnets#2002公网子网默认启用MapPublicIpOnLaunchImprovementsAdd documentation about alternative ways to delete clusters#1770补充集群删除的替代方式文档ImprovementsImprove help of update cluster command#2009改善update cluster命令帮助文本ImprovementsMake kubernetes 1.15 the default version#1997默认集群版本提升为 1.15ImprovementsSet kubeReserved defaults according to instance type#1986kubelet 资源预留默认值按实例规格设置ImprovementsUpgrade kubernetes dependencies to 1.15.10#1964客户端 Kubernetes 依赖升级Bug FixesFix code generation path issues#2007修复代码生成路径问题该版本由 Weaveworks 发布发布说明中致谢了 rndstr、sayboras、sean-abbott 三位贡献者。核心变更一公网子网默认 IP 映射行为PR #2002变更内容0.17.0 起eksctl 新建集群时的默认 IP 映射行为发生了两处联动调整官方文档 userdocs/src/usage/vpc-networking.md 中有明确标注Fromeksctlversion0.17.0and onwards公网子网默认启用MapPublicIpOnLaunch实例在该子网中启动时自动获得公网 IP这是节点访问互联网下载基础组件如 CNI 插件、kube-proxy 镜像等的前提节点组 Auto Scaling Group 的AssociatePublicIpAddress属性默认禁用不再在 ASG 层面为实例单独叠加公网 IP改为统一由子网属性决定。这个设计的意义在于把节点能否拿到公网 IP的控制权收敛到子网属性这一个地方旧版本中 ASG 的AssociatePublicIpAddresstrue可以掩盖子网缺少MapPublicIpOnLaunch的问题新版本移除这层冗余后在旧版本 eksctl 创建的存量集群上新建节点组时其公网子网必须显式启用MapPublicIpOnLaunch否则新节点无法联网、无法下载基础组件也就无法加入集群。源码印证在当前仓库中公网子网的这一默认行为由 VPC 的 CloudFormation 构建器实现。pkg/cfn/builder/vpc_ipv4.go 在构建 IPv4 子网资源时按子网拓扑分别处理私有子网api.SubnetTopologyPrivate关联私有路由表打上kubernetes.io/role/internal-elb1标签公网子网api.SubnetTopologyPublic打上kubernetes.io/role/elb1标签并设置subnet.MapPublicIpOnLaunch gfnt.True()见 pkg/cfn/builder/vpc_ipv4.go。因此凡是由 0.17.0 及以后版本创建的集群其公网子网在 CloudFormation 模板中天然带有该属性只有更早版本创建的集群其子网是裸的、不带该属性才会踩到后文所述的校验失败问题。存量集群修复eksctl utils update-legacy-subnet-settings问题场景假设你的集群是用 0.17.0 之前的 eksctl 创建的现在升级到新版本后要执行eksctl create nodegroup。新版本会在创建前校验目标公网子网的MapPublicIpOnLaunch而旧集群子网没有该属性命令会直接失败并提示修复方法。这段校验逻辑位于 pkg/vpc/vpc.go校验发现公网子网未启用MapPublicIpOnLaunch时如果集群启用了私有端点访问HasPrivateEndpointAccess节点仍可能通过 VPC 内端点连接控制平面因此只输出警告、不阻断否则输出 Critical 错误并中止提示subnets for one or more new nodegroups dont meet requirements. To fix this, please runeksctl utils update-legacy-subnet-settings --cluster name。命令说明与实现修复方式就是运行该版本新引入的工具命令eksctl utils update-legacy-subnet-settings --cluster cluster-name命令的实现位于 pkg/ctl/utils/update_legacy_subnet_settings.go其自述为Update the configuration of the clusters public subnets with MapPublicIpOnLaunch enabled. MapPublicIpOnLaunch is a new property for subnets that is required for creating new nodegroups in them即更新集群公网子网的配置启用MapPublicIpOnLaunch该属性是这些子网中创建新节点组所必需的。从源码结构看其执行流程为通过cmdutils.NewMetadataLoader加载集群元数据支持--config-file与位置参数/--cluster二选一传集群名两者同时给出会报冲突错误NewProviderForExistingCluster获取存量集群 ProviderstackManager.DescribeClusterStack读取集群 CloudFormation 栈ctl.LoadClusterVPC载入 VPC 配置确定子网清单stackManager.EnsureMapPublicIPOnLaunchEnabled(ctx)对该集群全部公网子网批量开启MapPublicIpOnLaunchEC2 侧的修改由 pkg/vpc/vpc.go 中定义的EnsureMapPublicIPOnLaunchEnabled完成成功后打印 public subnets up to date。命令支持的常用 flag 包括--region、--wait-timeout、--config-file及通用 AWS 凭证 flag见 pkg/ctl/utils/update_legacy_subnet_settings.go。兼容性回归测试该修复路径同样被纳入集成测试的回归清单integration/tests/backwards_compat/backwards_compatibility_test.go 的兼容性命令列表中明确包含update-legacy-subnet-settings确保后续大版本演进不会破坏这条对存量用户的修复链路。官方用户文档 userdocs/src/usage/vpc-networking.md 也以 important 醒目标注了上述行为变更与修复命令可视为这一迁移场景的权威说明。默认集群版本提升为 Kubernetes 1.15PR #19970.17.0 将eksctl create cluster在未显式指定metadata.version时使用的默认版本提升为 Kubernetes 1.15。版本常量定义在 pkg/apis/eksctl.io/v1alpha5/types.goconst ( Version1_10 1.10 ... Version1_15 1.15 ... )需要说明适用前提上述版本清单是配置 API 层面的版本常量当前仓库 HEAD 处的DefaultVersion已随后续版本演进指向更新的大版本因此1.15 是默认版本这一事实仅适用于 0.17.0 及其相邻时代的发行版在现行版本上运行create cluster得到的默认版本会更高。如果你需要复现 0.17.0 的行为最稳妥的方式是在配置文件中显式声明apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: us-west-2 version: 1.15kubeletkubeReserved默认值按实例规格设置PR #1986背景与动机Kubernetes 最佳实践建议在 kubelet 上预留系统资源kubeReserved、systemReserved并配置驱逐阈值在资源耗尽时如果 kubelet 自身被挤占可能无法驱逐 Pod、最终导致节点NotReady。0.17.0 之前的 eksctl 写入节点的kubelet.yaml使用固定的一组预留值从 0.17.0 起PR #1986kubeReserved的默认值会根据节点使用的 EC2 实例规格动态计算避免小规格机器预留过多、大规格机器预留不足的偏差。官方用户文档 userdocs/src/usage/customizing-the-kubelet.md 描述了对应行为values specified in the config file for the fields inkubeletExtraConfigwill completely overwrite the default values specified by eksctl. However, omitting one or morekubeReservedparameters will cause the missing parameters to be defaulted to sane values based on the aws instance type being used.用户侧覆盖方式要修改/覆盖这些默认值在 ClusterConfig 的节点组中使用自由格式的kubeletExtraConfig字段其内容会被嵌入节点上的kubelet.yamlapiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: dev-cluster-1 region: eu-north-1 nodeGroups: - name: ng-1 instanceType: m5a.xlarge desiredCapacity: 1 kubeletExtraConfig: kubeReserved: cpu: 300m memory: 300Mi ephemeral-storage: 1Gi kubeReservedCgroup: /kube-reserved systemReserved: cpu: 300m memory: 300Mi ephemeral-storage: 1Gi evictionHard: memory.available: 200Mi nodefs.available: 10% featureGates: RotateKubeletServerCertificate: true # has to be enabled, otherwise it will be disabled几个注意点均来自 userdocs/src/usage/customizing-the-kubelet.md配置文件中显式给出的kubeletExtraConfig字段整体覆盖eksctl 的默认值而非逐项合并address、clusterDomain、authentication、authorization、serverTLSBootstrap等字段由 eksctl 固定设置不可被覆盖默认启用featureGates.RotateKubeletServerCertificatetrue但一旦你自定义了featureGates该默认项会被取消需要手动补回对于混合实例规格的节点组后续版本0.24.0见 docs/release_notes/0.24.0.md进一步规定kubeReserved按InstanceDistribution.InstanceTypes中最小的实例规格计算防止在小实例上预留过多资源。从源码结构看这些 kubelet 配置最终经由节点引导node bootstrap链路下发到节点CloudFormation 模板把 kubelet 配置、kubeconfig、CA 证书等作为userData写入节点相关设计说明见 docs/current-001-node_bootstrap.md该设计文档标注自 0.47.0 起被 pkg/nodebootstrap/README.md 取代仅作历史参考。客户端 Kubernetes 依赖升级到 1.15.10PR #1964这一项升级的是 eksctl 仓库内部引用的 Kubernetes 客户端/库代码如k8s.io/client-go等 Go 依赖到 1.15.10 patch 版本与集群控制平面的版本无关主要带来 bug 修复与安全补丁收益。适用前提说明该结论基于发布说明条目本身仓库现阶段的go.mod中 Kubernetes 依赖已随后续版本大幅演进无法直接印证当时的具体依赖版本。其余改进与修复集群删除替代方式文档PR #1770新增文档说明除eksctl delete cluster之外删除/清理集群资源的替代途径。当前文档体系中对应的操作参考 userdocs/src/usage/creating-and-managing-clusters.mdeksctl delete cluster -f cluster.yaml、--wait、--disable-nodegroup-eviction等 flag 的说明。update cluster命令帮助文本改善PR #2009优化该命令的--help输出帮助用户理解集群控制平面升级操作。注意在现行版本中update cluster已被标记为弃用并指向upgrade cluster见 pkg/ctl/update/cluster.goDEPRECATED: use upgrade cluster instead。修复代码生成路径问题PR #2007Bug Fix修正生成代码时的路径问题属于工具链/构建层面的缺陷修复。小结0.17.0 是一个以网络默认行为 版本基线 节点资源预留三条主线演进的小版本公网子网默认启用MapPublicIpOnLaunch并简化 ASG 的公网 IP 叠加逻辑pkg/cfn/builder/vpc_ipv4.go同时提供eksctl utils update-legacy-subnet-settings修复存量集群pkg/ctl/utils/update_legacy_subnet_settings.go该修复路径至今仍被兼容性集成测试覆盖默认集群版本基线提升到 Kubernetes 1.15客户端 Kubernetes 依赖同步升级到 1.15.10kubelet 的kubeReserved默认值改为按实例规格自适应计算并保留通过kubeletExtraConfig完整覆盖的能力。对于使用 0.17.0 时代代码库的读者建议在升级后重点验证两件事存量集群新增节点组前运行一次update-legacy-subnet-settings以及确认自己的kubeletExtraConfig配置在显式字段整体覆盖默认值语义下是否符合预期。赞分享云原生容器编排DevOps【免费下载链接】eksctlThe official CLI for Amazon EKS项目地址https://gitcode.com/gh_mirrors/ek/eksctl点击查看免费下载相关推荐eksctl 0.115.0 发布解析Karpenter CloudFormation 策略更新与默认 Kubernetes 版本切换至 1.23eksctl 0.115.0 发布解析Karpenter CloudFormation 策略更新与默认 Kubernetes 版本切换至 1.23 导读 本文云原生容器编排DevOpsaxios 配置默认值详解全局默认值、实例默认值与配置优先级附源码解析axios 配置默认值详解全局默认值、实例默认值与配置优先级附源码解析 axios 允许为每个请求指定配置默认值包括 baseURL 、 headers网络后端前端EF Core默认值为字段设置默认值的多种方式EF Core默认值为字段设置默认值的多种方式 你是否曾经在开发中遇到过这样的问题当创建新记录时某些字段需要自动填充默认值而不是让用户手动输入或者需要ORM后端数据库创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询