Amazon Elastic Kubernetes Service (EKS) 中带有次要 VPC CIDR 的最大 Pod 计算

0

【以下的问题经过翻译处理】 Amazon EKS 包括在 bootstrap.sh 文件中的脚本,以根据接口数量和每个接口的 IP 数来传递每个实例类型的最大 Pod 数,对于单个CIDR VPC 这个工作得很好。

但是,当使用次要CIDR范围时,每个节点的实例最终会少一个可用的 ENI(弹性网络接口),这可能会影响 Pod 的调度。

是否有人有解决此问题的方法?

参考链接:

profile picture
专家
已提问 3 个月前14 查看次数
1 回答
0

【以下的回答经过翻译处理】 以下是一个解决方案,可以放置在工作节点用户数据中以动态计算Pod的最大数量。

# 获取实例详细信息,用于引导程序
az=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone)
instance_type=$(curl -s http://169.254.169.254/latest/meta-data/instance-type)
    
# 设置AWS CLI的区域
aws configure set region `curl -s http://169.254.169.254/latest/dynamic/instance-identity/document | jq -r .region`
    
# 计算最大Pod数量
# https://docs.aws.amazon.com/eks/latest/userguide/cni-custom-network.html
max_if=$(aws ec2 describe-instance-types  --instance-types $${instance_type} --query  InstanceTypes[*].NetworkInfo.MaximumNetworkInterfaces --output text)
max_ips_per_if=$(aws ec2 describe-instance-types  --instance-types $${instance_type} --query  InstanceTypes[*].NetworkInfo.Ipv4AddressesPerInterface --output text)
max_pods=$((($${max_if} -1) * ($${max_ips_per_if} -1 ) + 2))
    
/etc/eks/bootstrap.sh  --use-max-pods false --kubelet-extra-args "--node-labels=k8s.amazonaws.com/eniConfig=$${az} --max-pods=$${max_pods}" '${cluster_name}

profile picture
专家
已回答 3 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则