fbpx

k0s1.21.2リリース:起動時間の最適化/クラスタレベルのバックアップとリストアの追加 ほか #docker #mirantis #kubernetes #k8s

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

この記事はk0sコミュニティのオフィシャルブログ「k0s Optimizes Start Time, Adds Cluster Level Backup/Restore and More」の和訳です。

Mikko Viitanen

Jun 21 · 5 min read

Image by Jiří Rotrekl from Pixabay

k0s (Zero Fricition Kubernetes)は、Kubernetesクラスタを簡単に構築できるよう、必要なすべてが1バイナリに収められた、Kubernetesディストリビューションです。今回の1.21.2(および前回の1.21.1)リリースのハイライトは、「起動時間の最適化」、「クラスタレベルのバックアップとリストア」、そして新たな「Start」および「Stop」コマンドです。 さらにその他、多くの機能強化と修正が行われました。新機能や、強化された機能の詳細については変更履歴(英語)をご参照ください。すぐに試したい方はこちらを参照してください!(英語)

起動時間の最適化

k0sのブートストラッププロセスを最適化し、起動時間を大幅に短縮しました。k0sがKubernetes API用に内部で使用しているクライアントを微調整し、システムコンポーネントのマニフェストをAPIにプッシュするプロセスを効率化しました。これによりコントローラノードの起動時間を数十秒短縮できました。

参考に、変更適用後の各所要時間を測定してみました。

  • シングルノードの起動時間: ~57秒
  • 物理的に隔離された環境におけるシングルノードの起動時間: ~50秒
  • k0sctlによるコントローラノード3つとワーカノード3つの起動時間:~79秒

注意:正確な起動時間はネットワークやハードウェアに依存するため、上記の起動時間はあくまでも目安とお考えください。

k0sctlを使ったクラスタのバックアップとリストア

バックアップとリストアの基本部分は、すでに4月のリリースでk0sに組み込まれています。その後も開発を続け、今回のリリースではマルチノードクラスタ管理用のツールであるk0sctlを用いて、クラスタレベルのバックアップとリストアを実行できるようになりました。k0sctlをクラスタの外部(MacOSやLinux)で実行し、マルチノードクラスタのデプロイやアップグレードを行うことができます。今回のリリース以降は、バックアップとリストアをオーケストレーションすることもできます。

k0sのバックアップとリストア機能も強化され、etcd (マルチノードクラスタのデフォルト)に加えて、SQLite(シングルノードクラスタのデフォルト)にも対応しました。k0sのバックアップとリストアの詳細については、k0s documentation(英語)をご参照ください。

Start と Stop コマンド

従来より簡単にk0sを起動または停止できるようになりました。以前は、k0sを起動または停止するために、Linuxのinit システムを呼び出す必要がありました(例:systemctl start k0scontroller)。今回のリリースではk0sは、init システム管理を実装しており、ユーザは、k0s startとk0s stopを呼び出すだけで、バックグラウンドの実際のinit システムに関係なく、k0sを制御することができます。現在、k0sはsystemd とOpenRC init システムをサポートしています。init システムを使用する必要があれば、この変更後もこれまでと同様にinitシステムを直接制御できます。この変更によりほとんどのユーザは、 init システムの長いコマンドを覚える必要がなくなりました。k0s install tutorials(k0sインストールのチュートリアル)は、k0sのインストールを簡素化するために適宜更新しています。

ドキュメントの整理

k0sのドキュメントの表示構成を改善しました。これまで、ドキュメントから特定のコンテンツを見つけられないという問題が起きていました。これに対し、ユースケースアプローチを採用しました。その結果お探しのコンテンツが見つかりやすくなりました。

またユーザからのご意見やご質問をもとにコンテンツを追加しています。最近追加した新しいコンテンツは次の通りです(英語)。

今後も継続的にドキュメントの改善に取り組みます。ご意見やご質問をお寄せください。またこれまでk0sのドキュメントの改善にご協力いただいた皆様、ありがとうございました。

証明書のローテーション

今回のリリースでk0sは、k0sが管理する証明書(CA証明書を除く)を自動的にローテーションするようになりました。証明書が 誤って期限切れにならないよう、常にコントローラノードの起動時に証明書のローテーションが行われます。アップグレードやコントローラノードの再起動後には、常に最新の証明書が使用されます。

Kube-Proxyのモードが設定変更可能に

Kube-Proxyモードの設定が変更可能になりました。デフォルトで設定されていた「iptablesモード」が最適でない場合があることが判明しました。1つ目の例として、非常に多くのサービスがある場合、iptablesは遅くなり、CPU時間を過剰に消費する可能性があるためです。また2つ目の例としてカーネルモジュールの数が限られている場合があります。リソースに制約のあるIoTデバイスなどでは、最小限のカーネルモジュールしか存在しない場合があるためです。これらのように「iptablesモード」が適していない場合、Kube-Proxy をユーザモードに設定することで解決できます。

そしてKube-Proxy を完全に無効にすることもできるようになりました。例えばノードのkube-proxyの代替としても機能するカスタムCNIプロバイダで実行する場合に有用です。

‘k0s ctr’ サブコマンド

k0s ctrは、containerd CRI のコンテナを検査する新しいサブコマンドです。イメージの一覧表示・プル・ラベルづけに使用できます。

  • k0s ctr images list
  • k0s ctr image pull
  • k0s ctr images label

これは実行しているイメージをチェックしたり、ワーカノード上のコンテナレベルの問題をデバッグする際などに役立ちます。

‘k0s sysinfo’ サブコマンド

k0ssysinfoは、ホストOSのカーネルバージョン、有効なカーネルモジュール、cgroupsを表示するための新しいサブコマンドです。これは、ホストOSが最低限の要件を満たしているかどうかを確認し、k0sがすべてのKubernetesコンポーネントを起動できるか否かを確認する際に便利です。必要なカーネルモジュールと設定は、クラスタレベルの設定に依存するため、別のコマンドとして実装することにしました。これは、k0sワーカのブートストラップ自体が突然失敗することを避けるためです。

アップデートしたコンポーネント

  • Kubernetes 1.21.2
  • Konnectivity 0.0.20
  • etcd 3.4.16
  • containerd 1.4.6
  • runc 1.0.0-rc95

k0sコミュニティの最新情報

k0sとは

k0sはストレスフリーなKubernetesディストリビューションです。簡潔性・安全性・モジュール性のすべてを兼ね備えた独自の価値を提供しています。k0sは100%オープンソースで、目的を問わず無料で利用できます。k0sオープンソース プロジェクトは、Kubernetes、Docker、Linuxエコシステムのパイオニアたちによって支えられています。これまでの経験と、エコシステムにおける最高のイノベーションとアイデアを組み合わせ、開発者の幸福度を最大限に高めながら、スリムでモダンかつフレッシュな生のKubernetesディストリビューションを作成しています。https://k0sproject.io

新規CTA