Closed4
EKSでノード毎の最大pod数を増やす試み
概要
EKSのノードはインスタンスタイプによってpodの上限数が設定されている
例えばt3.mediumの場合
❯ k describe node <t3.mediumのノード> | grep 'pods\|PrivateIPv4Address'
pods: 17
1つのノードに17までpodを立てることが出来る。
これをなんとかできたらノード数が減らせてお得になりそう
※こちらでインスタンス毎の上限を確認することもできた
バージョン
EKS Kubernetes 1.29
下調べ
0. Amazon VPC CNI plugin for Kubernetesの確認
問題なさそう
❯ kubectl describe daemonset aws-node --namespace kube-system | grep Image | cut -d "/" -f 2
amazon-k8s-cni-init:v1.16.0-eksbuild.1
amazon-k8s-cni:v1.16.0-eksbuild.1
1. ENABLE_PREFIX_DELEGATION
trueにする必要がありそう
❯ k describe daemonset aws-node -n kube-system | grep ENABLE_PREFIX_DELEGATION
ENABLE_PREFIX_DELEGATION: false
2. userdataに--max-pods=110を追加
t3/t3a.mediumを使っているため必要
これterraformでなんとかなる...?
とりあえずterraformでENABLE_PREFIX_DELEGATIONをtrueとする
resource "aws_eks_addon" "vpc-cni" {
cluster_name = aws_eks_cluster.main.name
addon_name = "vpc-cni"
addon_version = "v1.18.2-eksbuild.1"
configuration_values = jsonencode({
env = {
ENABLE_PREFIX_DELEGATION = "true"
}
})
}
他の記事を見るとこの設定で完結していそうだが、自分の環境では適用できなかった
ノードグループを変更
terraformで管理していたノードグループをこんな感じで変更
-data "aws_ssm_parameter" "eks_ami_release_version" {
- name = "/aws/service/eks/optimized-ami/${aws_eks_cluster.main.version}/amazon-linux--2/recommended/release_version"
-}
resource "aws_eks_node_group" "main" {
cluster_name = aws_eks_cluster.main.name
node_group_name = "example-node-group"
- version = aws_eks_cluster.main.version
- release_version = nonsensitive(data.aws_ssm_parameter.eks_ami_release_version.value)
node_role_arn = aws_iam_role.worker.arn
subnet_ids = [var.sub1, var.sub2]
version/release_version
を利用しないことで
起動テンプレートがない場合、または AMI ID が指定されていない起動テンプレートを使用する場合 —「マネージド型ノードグループの作成」の手順を完了します。マネージド型ノードグループは、Amazon EKS で推奨される max-pods の値を自動的に計算します。
に該当したため...?とりあえずうまくいった
⬢ [Docker] ❯ k describe nodes | grep pod
pods: 110
pods: 110
Normal NodeAllocatableEnforced 26s kubelet Updated Node Allocatable limit across pods
このスクラップは4ヶ月前にクローズされました