Help us understand the problem. What is going on with this article?

EKSでPrivate IPが足りなくなった場合の対処

はじめに

ある日、EKSで新しいServiceを作ろうとしたところ、Subnet内に利用可能なPrivateIPが足りずに失敗した。

Warning  CreatingLoadBalancerFailed  7m12s  service-controller  Error creating load balancer (will retry): failed to ensure load balancer for service xxxxx: InvalidSubnet: Not enough IP space available in subnet-xxxxx. ELB requires at least 8 free IP addresses in each subnet.

このSubnetのサブネットマスクは255.255.255.0なので、256弱のPrivateIPが使えるはずであるが、各Node(m5.xlarge)に30のPrivateIPが割り当ていることが原因でPrivateIPが枯渇していた。

ENIの割り当て

ENIの割り当て方法については詳しくは以下を参照。

https://github.com/aws/amazon-vpc-cni-k8s#eni-allocation

要は、NodeがClusterに追加された時にENIが一つ、その後ipamDがもう一つENIをアタッチする。今回のNodeはm5.xlargeなので、1ENI辺り15のIPを割り当てられるので、計30個のIPが割り当てられていた。

解決方法

WARM_ENI_TARGETWARM_IP_TARGET の適宜修正することで、事前に割り当てるPrivateIPの数を調整できる。詳しくは以下を参照。

https://docs.aws.amazon.com/eks/latest/userguide/cni-env-vars.html

WARM_ENI_TARGET は使っていない事前に確保しておくENIの数。WARM_IP_TARGETは使っていない事前に確保しておくIPの数。

更新方法

まず以下のようなファイルを生成する。ここでは仮にtmp.yamlとする。 WARM_IP_TARGET には設定したい値に変えてください。

spec:
  template:
    spec:
      containers:
        - name: aws-node
          env:
          - name: WARM_IP_TARGET
            value: "5"

以下のコマンドを実行。

$ kubectl patch daemonset -n kube-system aws-node --patch "$(cat tmp.yaml)"

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした