Closed5
[EKS] kubeletに--pod-max-pidsを設定する
(bootstrap.shの)必須となる引数は、クラスター名 (my-cluster) のみです。
locals {
userdata = <<-USERDATA
#!/bin/bash
set -ex
/etc/eks/bootstrap.sh ${var.cluster_name} \
--kubelet-extra-args '--pod-max-pids=1000' \
USERDATA
}
data "aws_ssm_parameter" "ami_al2_x86_64" {
# https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/retrieve-ami-id.html
name = "/aws/service/eks/optimized-ami/${var.cluster_version}/amazon-linux-2/recommended/release_version"
}
resource "aws_launch_template" "eks_worker_templates" {
name = "hoge"
image_id = data.aws_ssm_parameter.ami_al2_x86_64.value
user_data = base64encode(local.userdata)
...
}
これまでaws_eks_node_group
のrelease_version
でAMIのバージョンを指定していた場合、そちらは消す
ノードグループがmust be replaced
になるので、名前を変えて、古いグループはdestroyed、新しいグループがcreatedになるようにする
古いノードグループ上のPodのダウンタイム防止が必要な場合、stateを削除してterraform apply
時に削除されないようにし、あとでkubectl drain
とノードグループ削除を行う
(DeleteNodeGroup API内で実行されるdrainにはタイムアウトがあり、到達すると強制終了されるため)
Before each instance is terminated, Amazon EKS sends a signal to drain the pods from that node and then waits a few minutes. If the pods haven't drained after a few minutes, Amazon EKS lets Auto Scaling continue the termination of the instance.
--pod-max-pids
を設定したのはdatadog-agentのバグを踏んでdev/stgでクラスターがダウンしたため
このスクラップは2022/10/05にクローズされました