Kubernetes には Feature Gates という「アルファ機能または実験的機能を記述するkey=valueのペアのセット」があります。
古参の Kubernetes ユーザーの方々からすれば「何を今更」という感じでしょうが、新参の私からしたら Feature Gates で使えるようになる機能を有効にする方法が全然わからなかったので、同じように悩んでいる方のために使い方をまとめておきたいと思います。
まずは公式ドキュメント
各コンポーネントはそれぞれのコンポーネント固有のフィーチャーゲートの設定をサポートします。すべてのコンポーネントのフィーチャーゲートの全リストを表示するには
-h
フラグを使用します。kubeletなどのコンポーネントにフィーチャーゲートを設定するには以下のようにリストの機能ペアを--feature-gates
フラグを使用して割り当てます。
公式ドキュメントには上のように書かれており、その下には使える Feature Gates の一覧があります。
上の説明を見るとわかる通り、Feature Gates で機能を有効化するには、その機能に関連するコンポーネントのコマンドに --feature-gates
フラグを付けてあげれば良さそうです。
では、「どのコンポーネントのコマンドにつければいいの?」という点で、私はつまずきました。
答えは
このように書くと明らかに当然のことですが、各コンポーネントのヘルプを見ればわかります。
Component tools のページにある下記コンポーネントの --feature-gates
オプションで使える値の説明を見れば、どのコンポーネントにフラグを追加すればよいかがわかります。
例えば、Kubernetes 1.24 で alpha として追加された機能 CronJobTimeZone を使うには、kube-apiserver, kube-controller-manager, kube-proxy, kube-scheduler に CronJobTimeZone の記載があるので、上記コンポーネントのコマンドにフラグを付ければよいとわかります。
ちなみに kubeadm で構築した場合の各コンポーネントのオプション付与方法は
- kubelet:
/var/lib/kubelet/kubeadm-flags.env
に追記してsystemctl restart kubelet
- kube-proxy:
kubectl -n kube-system edit ds kube-proxy
- kube-apiserver, kube-controller-manager, kube-scheduler:
/etc/kubernetes/manifests/kube-*.yaml
を編集
という感じです。
それではよい k8s ライフを~。