Talos を使用して Kubernetes を簡単に使用する方法を学びましょう。
著者 Ritesh のMaking Kubernetes Simple with Talosから翻訳。
今年、Kubernetes は v1.30.0 のリリースで 10 周年を迎え、選ばれるクラウド プラットフォームとしての地位を固めました。Dynatraceで説明されているように、EKS、GKS、AKS などの自己管理型 Kubernetes クラスターがクラスター全体の 73% を占め、残りの 27% が自己管理型です。過去 10 年間はパブリック クラウドの時代でしたが、コストの上昇により、一部の企業はハイブリッド クラウドとのバランスを模索しています。VMwareによると、現在、組織の約 76% がパブリック クラウドとプライベート クラウドを組み合わせた複数のクラウドを利用しています。 Kubernetes を使用すると、特定のクラウドにコミットすることなく、選択したハードウェア上にマルチクラウド層とプライベート クラウド層を構築でき、コスト効率よく構築できます。
Kubernetes の導入は拡大し続けていますが、コスト効率、信頼性、セキュリティに関する懸念は依然として残っています。 Kubernetes VM からベアメタル インフラストラクチャに移行すると、ハイパーバイザー層が不要になり、トラブルシューティング プロセスが簡素化され、アプリケーションのリソース可用性が最大化されるため、パフォーマンス上の利点が得られます。ベアメタル設定により、組織はハードウェア コンポーネントを完全に制御して、特定のワークロードに合わせてカスタム最適化を行うことができます。適切なエンジニアリング手法と Kubernetes の統合により、組織はパブリック クラウド製品と同等の機能を実現できます。これまで、ベアメタル上で Kubernetes を実行すると、運用の複雑さ、特にクラスターのライフサイクル管理において課題が生じてきました。ただし、これらの障害はTalosの導入によって克服されており、この記事でさらに詳しく説明します。
Talos は、Golang で書かれた非常に合理化されたオペレーティング システムです。 Talos は、Kubernetes クラスタを維持するためのオペレーティング システム固有のオペレーティング システムとして設計されています。 Kubernetes インフラストラクチャの信頼性を高めるには、各ノードが同じバージョンのオペレーティング システムを実行していることを確認する必要があります。 Talos は、Talos の構築に基づいた不変の哲学を追加することで、Kubernetes インフラストラクチャの信頼性と一貫性を維持するのに役立ちます。
Talos は常に、Linux の読み取り専用ファイル システムである SquashFS イメージとして実行されます。 Talos SquashFS イメージの合計サイズは約 80M です。 Talos は、攻撃対象領域を最小限に抑え、セキュリティ脆弱性の可能性を減らすために、systemd、GNU ユーティリティ、コンソール パッケージ、bash または SSH バイナリなどのコンポーネントを意図的に省略しています。代わりに、システム操作を管理するための最新の API に依存します。
Talos には必要なものだけが含まれています。代わりに、すべてが最新の API によって管理されます。 Talos は、不変のインフラストラクチャという考えに非常に重点を置いています。
不変のインフラストラクチャとは何ですか?
不変のインフラストラクチャ システムがデプロイされると、それに変更を加えることはできません。この概念は、不変のインフラストラクチャと呼ばれます。不変のインフラストラクチャに変更が必要な場合は、既存のインフラストラクチャを変更するのではなく、必要な変更を加えて新しいインフラストラクチャが作成されます。不変のインフラストラクチャを使用すると、ステージング環境、ステージング環境、実稼働環境の一貫性が高まります。ベアメタル k8s インフラストラクチャでは、ノード間の一貫性を維持することが最も重要です。このタイプのインフラストラクチャでは、アプリケーションはオペレーティング システムに密接に結合されていますが、これが不変システムの欠点です。
Talos を使用する利点
- Talos はシステム全体の一貫性を維持し、構成の変更を回避します。 Talos はこれを「予測可能性」と呼んでいます。
- Talos は、Kubernetes インフラストラクチャを完全に不変にし、それによって信頼性、セキュリティ、一貫性を強化することを目指しています。このため、Talos は Kubernetes を実行するベアメタル サーバに最適です。
- Talos は不変になるように設計されているため、ディスクではなく RAM 上で実行されます。 Talos は SquashFS イメージであるため、書き込みポイントが少なく、本質的に一時的です。
- Talos は非常に安全です。
- Talos は、約 12 個のバイナリを備えた非常に軽量のオペレーティング システムで、すべて Kubernetes の実行に使用されます。
- Talos は API 駆動型です。
- Talos は、KSPP (Kernel Self-Protection Project) によって与えられた推奨事項に従っています - KSPP ドキュメント
例
Talos は Kubernetes クラスタの自己管理に最適ですが、CIVOなどのプラットフォームはTalos を使用した Kubernetes クラスタの展開をサポートします。 Talos で Kubernetes を実行する場合のいくつかのユースケースを次に示します。
1. エッジアプリケーション:
エッジ デバイスの大規模なクラスターを管理するには、コンテナ オーケストレーション用に設計されているだけでなく、エッジ デバイスを効率的に管理できる Kubernetes が最適なオプションの 1 つです。エッジ アプリケーションの信頼性とセキュリティを確保するには、安全で信頼性の高い Kubernetes を使用します。
2. ベアメタル上の Kuberntes:
ベアメタル上で Kubernetes を使用すると、不要な抽象化が削除され、アプリケーションがハードウェアを完全に制御できるようになります。 Talos は、ベアメタル サーバに Kubernetes を導入する場合に最適な選択肢です。これにより、不必要な構成やトラブルシューティングが不要になり、ベアメタル上での Kubernetes のデプロイが容易になります。
3. AI と機械学習のワークロード:
Kubernetes は、新しい機械学習モデルのテストとトレーニングに理想的なプラットフォームであることが証明されており、大規模な環境へのシームレスな導入が可能になります。安全で安定したモデルの展開を確保するには、展開の一貫性を維持することが重要です。 Talos は、需要に基づいて信頼性の高いモデルのスケーリングを可能にする一貫した環境を提供することで、このプロセスにおいて重要な役割を果たします。
建築とデザイン
Talos アーキテクチャは、定義された gRPC インターフェイスを備えたさまざまなコンポーネントで構成されています。すべての Talos コンポーネント間の通信は gRPC 経由で行われます。
Talos ファイル システム パーティション
- EFI: EFI ブート データを保存します。
- BIOS: GRUB の第 2 段階のブートに使用されます。
- ブート: ブート ローダーに使用され、initramfs とカーネル データを保存します。
- Meta: Talos ノードに関するメタデータを保存します。
- 状態: マシン構成を保存します。
- 一時的: /var にマウントされ、一時データの保存に使用されます。
Talos のファイル システムには 3 つの層があります。
- rootfs: 読み取り専用のコア squashfs 層です。次に、Squashfs をループ デバイスとしてメモリにマウントします。
- tmpfs: このファイル システムは、ランタイム固有のニーズに使用されます。
- system: 内部操作に必要です。
たとえば、Talos は /system/etc/hosts に書き込み、それを /etc/hosts にバインドします。 Talos は /etc を書き込み可能にせず、/etc の特定の部分のみを書き込み可能にします。 /system は起動するたびに完全に再作成されます。起動時に永続性を実現するために、Talos はオーバーレイ ファイル システムを作成します。 Kubernetes は /var を所有します。このディレクトリは、etcd がデータを書き込むために使用します。アップグレード時にこのデータが削除されないようにするために、「--preserve」オプションを追加しました。このデータは、マシンがアップグレードまたはリセットされた場合にのみ削除されます。
コンポーネント
talosctl
は、Talos のすべてのコンポーネントと対話するための CLI ツールです。 kube-apiを使用してapid と対話するkubectl
方法と似ています。talosctl
- apid: Talos は API 主導型であり、
apid
さまざまなコンポーネントと対話するための gRPC エンドポイントを提供する役割を果たします。apid
コントロール プレーンを含むすべてのノードに存在します。
タロスのアーキテクチャ
- machined: apid からの API リクエストを処理し、リソースとコントロールの管理を実行します。
- trustd: システム内で信頼を確立するために使用されるデーモン プロセスです。ノード間の信頼を確立するために使用されます。
- udevd: /dev に必要なリンクを設定するために使用されます。
コントローラーとリソース
- リソース: これらは Kubernetes のリソースに似ており、リソースにはさまざまなタイプがあり、名前空間、タイプなどのメタデータが含まれています。リソースは、名前空間によって一意に識別されます。 「マシン構成」リソースは、現在のマシン構成を反映します。
- コントローラ: Talos では、コントローラはスレッドとして実行されます。コントローラーは複数のリソース タイプを管理でき、各リソース タイプには多くのリソースを含めることができます。競合を避けるため、名前空間内の特定のリソース タイプの管理を担当するコントローラーは 1 つだけです。 Talos は、コントローラに定義されたリソース タイプをメタ名前空間に保存します。
デモ
ベアメタルはまだ利用できないため、この記事では Docker を使用してこの機能を実証します。今後の記事でベア メタル上で Talos を実行する方法について説明する予定なので、ブログを購読してください。 Docker を使用して Kubernetes クラスターを作成する方法を学びます。
Docker クラスタと Talos クラスタをセットアップする
前提条件
続行する前に、次のソフトウェアがインストールされていることを確認してください。
注: talosctl と Talos オペレーティング システムの ISO イメージのバージョンは同じである必要があります。詳細については、リリース情報をご覧ください。
マック:
brew install siderolabs/tap/talosctl
Linux:
wget https://github.com/siderolabs/talos/releases/download/v1.7.0/talosctl-linux-amd64
chmod +x talosctl-linux-amd64
./talosctl-linux-amd64
sudo mv ./talosctl-linux-amd64 /usr/local/bin
docker と talosctl を使用して 3 ノード クラスターをインストールします。次のコマンドは、3 ノードのクラスター (コントロールプレーン、ワーカーノード 1、ワーカーノード 2) を作成します。
talosctl cluster create --workers 2
作成されたノード数とOS情報を確認してみましょう
kubectl get nodes -o wide
kubectl get node talos-default-worker-1 -o json | jq -r '.status.nodeInfo.osImage'
クラスターをクリーンアップして削除しましょう
結論は
Talos は、Kubernetes 環境の管理において重要な役割を果たします。そのシンプルさにより、Kubernetes クラスターの構成が大幅に簡素化されます。 Talos の不変の哲学により、インフラストラクチャのセキュリティと一貫性が大幅に強化されます。
よくある質問
Talos と k3s
Talos と k3s を直接比較することはできません。ただし、Kubernetes クラスターのデプロイを検討する場合、k3s にはオペレーティング システムが必要であり、基盤となるオペレーティング システムによって異なるその他の依存関係もあります。 Talos は、不変の哲学を使用して Kubernetes クラスタを実行し、セキュリティと信頼性を維持することに重点を置いています。 Talos を使用すると、Kubernetes の導入が容易になります。
Talos にはどのようなバイナリが含まれていますか?
- Talos のバイナリは
init
、kubelet とコンテナ ランタイムの実行を担当します。 - Containerd は、runc と同様に Talos のランタイムです。
- Modprobe は、特定のバイナリのモジュールをロードするために使用されます。モジュールは Talos に追加することも、Image Factoryから事前に構築されたモジュールを使用することもできます。
- ボリューム管理には、lvm を使用します。
- udevd は、カーネルからメッセージを収集し、他のシステムに渡すために使用されます。
- xfs_repair などのバイナリは、XFS ファイル システムを修復するために使用されます。
タロスは無料ですか?
Talos は、商用利用が許可されている Mozilla Public License バージョン 2.0 の対象となる無料のオープンソース オペレーティング システムです。詳細については、Talos Github リポジトリを参照してください。
タロスを使用する理由
Talos により、Kubernetes 環境の安全性と信頼性が向上します。ご存知のとおり、Talos は Kubernetes などの分散システムに適しています。Kubernetes 環境の安全性と信頼性を高めたい場合は、Talos を使用する必要があります。
Talos をベアメタル上で実行できますか?
Talos は、ベアメタル上で Kubernetes を構成する場合に最適です。 Talos をベアメタルに展開する方法を学び、投稿を購読するか、この問題についてさらに詳しく話し合うために直接お問い合わせください。
Talos に追加のサポートを提供するのは誰ですか?
- シデロ研究所
- CloudRaft は実装とサポートに使用されます。詳細については、お問い合わせください。
RustDesk、不正行為横行のため国内サービスを一時停止 Apple、M4チップを発売 タオバオ(taobao.com)、Webバージョン の最適化作業を再開 高校生が成人への贈り物として独自のオープンソースプログラミング言語を作成 - ネチズンの批判的なコメント:防衛 Yunfeng 氏は Alibaba を退職し、将来的には Windows プラットフォーム上で 独立したゲーム プログラマー向けの。 Visual Studio Code 1.89 は Java 17 をリリースします。これは、最も一般的に使用されている Java LTS バージョンです。Windows 10 の市場シェアは 70 です。 %、そして Windows 11 は減少し続けている。Google は、Hongmeng のオープンソースである Rabbit R1 の引き継ぎを支持している。Haier Electric はオープン プラットフォームを閉鎖している。この記事はYunyunzhongsheng ( https://yylives.cc/ ) で最初に公開されたもので、どなたでもご覧いただけます。