0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

eksctl で overrideBootstrapCommand を使ったカスタマイズをしてみた

Posted at

はじめに

EKS を構成するときに、kubelet の Configuration や、カーネルパラメータの変更をしたい時があります。独自に AMI を作成しても良いのですが、都度 AMI を作成するのは何かと手間なので、eksctl では overrideBootstrapCommand を指定することでカスタマイズを行える仕組みがあります。kubelet に関する config を変更できたり、任意のコマンドを実行させることができます。sysctl でカーネルパラメータを変更したり、独自の変更が容易になっています。

また、kubelet に関する Config を変更するために、EKS で利用する AMI に 簡単なカスタマイズを行える仕組みとして /etc/eks/bootstrap.sh があります。/etc/eks/bootstrap.sh の引数に --kubelet-extra-args と指定することで、kubelet に関する設定のカスタマイズが可能です。

kubelet に関するコンフィグレーションに関する情報は以下の URL をご確認ください。

例えば、次の指定を行ったとします。

/etc/eks/bootstrap.sh my-cluster --kubelet-extra-args '--registry-qps=20 --registry-burst=40'

registry-qps は、1秒あたりの Registry Pull の上限を指定しています。デフォルトは 5 になっていますが、20 と指定することで、秒間あたり 20 回の Pull が可能になります。このように、kubelet の動作をカスタマイズする仕組みがあります。

eksctl で overrideBootstrapCommand の指定

eksctl で、EKS を作成する際の挙動を設定可能です。例えば、次のような YAML ファイルを準備します。

apiVersion: eksctl.io/v1alpha5
iam:
  withOIDC: true
kind: ClusterConfig
kubernetesNetworkConfig:
  ipFamily: IPv4
managedNodeGroups:
  - amiFamily: AmazonLinux2
    ami: ami-08ba895a802ee90a8
    desiredCapacity: 2
    name: ng-containerd
    ssh:
      allow: true
      publicKeyPath: /home/ec2-user/.ssh/id_rsa.pub
    overrideBootstrapCommand: |
      #!/bin/bash
      sudo sysctl -w kernel.sched_rt_runtime_us=-1 >> /etc/sysctl.conf
      /etc/eks/bootstrap.sh eks-bootstrap01 --container-runtime containerd --kubelet-extra-args "--cpu-manager-policy=static"
metadata:
  name: eks-bootstrap01
  region: ap-northeast-1
  version: "1.23"
vpc:
  autoAllocateIPv6: false
  cidr: 10.0.0.0/16
  clusterEndpoints:
    privateAccess: false
    publicAccess: true
  id: vpc-0b8b2123a16d03528
  manageSharedNodeSecurityGroupRules: true
  nat:
    gateway: Disable
  subnets:
    private:
      ap-northeast-1a:
        az: ap-northeast-1a
        cidr: 10.0.100.0/24
        id: subnet-0c414bf2d11f17bba
      ap-northeast-1c:
        az: ap-northeast-1c
        cidr: 10.0.101.0/24
        id: subnet-09023225144fa1c62
      ap-northeast-1d:
        az: ap-northeast-1d
        cidr: 10.0.102.0/24
        id: subnet-0cf48d891b1bea31c
    public:
      ap-northeast-1a:
        az: ap-northeast-1a
        cidr: 10.0.0.0/24
        id: subnet-0d9a1ae8571fa7c30
      ap-northeast-1c:
        az: ap-northeast-1c
        cidr: 10.0.1.0/24
        id: subnet-0355f72e6534092bf
      ap-northeast-1d:
        az: ap-northeast-1d
        cidr: 10.0.2.0/24
        id: subnet-0c4b7c352a610baf4

細かい部分は説明を省略しますが、一番重要な部分は overrideBootstrapCommand です。Bash 形式で、EKS の Node に実行したい設定をカスタマイズしています。

  • sudo sysctl -w kernel.sched_rt_runtime_us=-1 >> /etc/sysctl.conf : カーネルパラメータの変更
  • /etc/eks/bootstrap.sh eks-bootstrap01 --container-runtime containerd --kubelet-extra-args "--cpu-manager-policy=static" : CPU Manager を static に指定。排他的な CPU の利用を許可する設定。
    overrideBootstrapCommand: |
      #!/bin/bash
      sudo sysctl -w kernel.sched_rt_runtime_us=-1 >> /etc/sysctl.conf
      /etc/eks/bootstrap.sh eks-bootstrap01 --container-runtime containerd --kubelet-extra-args "--cpu-manager-policy=static"

このように、Bash 形式で、好きなコマンドを任意に変更可能です。適宜、ユースケースに合わせてカスタムされるのが良いと思います。

なお、上記のファイルを準備したあとに、eksctl create cluster で実際に EKS クラスターを作成できます。

eksctl create cluster \
-f eksctl-configure.yaml

参考 URL

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?