アーキテクチャから導入まで、K3sの包括的な理解

アーキテクチャから導入まで、K3sの包括的な理解

Kubernetes は、開発者のラップトップ、Raspberry Pi、クラウド、データセンター、ハイブリッド クラウド、さらには複数のクラウドなど、あらゆる場所に存在します。これは、基盤となるコンピューティング、ストレージ、ネットワーク サービスを抽象化し、最新のインフラストラクチャの基盤となっています。 Kubernetes は、さまざまなインフラストラクチャ環境間の違いを隠し、マルチクラウドを実現します。

Kubernetes は、コンテナ オーケストレーションだけでなく、仮想マシン、データベース、さらには SAP Hana インスタンスなどのさまざまなリソースのオーケストレーションのためのユニバーサル コントロール プレーンにもなっています。

Kubernetes は急速に発展していますが、開発者やオペレーターにとって依然として多くの課題が生じています。重要な課題の 1 つは、エッジで Kubernetes を実行することです。エッジはクラウドやデータセンターとは大きく異なります。非常に制約のある環境の遠隔地で動作します。エッジ デバイスには、データ センターで実行される同様のデバイスのコンピューティング、ストレージ、およびネットワーク リソースのほんの一部しかありません。エッジ デバイスはクラウドへの接続が断続的であり、主にオフライン環境で動作します。これらの要因により、エッジでの Kubernetes クラスターの展開と管理が困難になります。

これを基に、業界で最も広く使用されている K8S 管理プラットフォームの作成者である Rancher Labs は、エッジ向けに高度に最適化された Kubernetes ディストリビューションである K3s をリリースしました。 K3s は Kubernetes の簡略化されたミニバージョンですが、API の一貫性と機能性には影響しません。 kubectl から Helm、Kubernetes まで、クラウド ネイティブ エコシステム内のほぼすべてのツールを K3s とシームレスに接続できます。実際、K3s は CNCF 認定の準拠 Kubernetes ディストリビューションであり、実稼働環境に導入できます。完全な Kubernetes クラスターで実行されるほぼすべてのワークロードは、K3s クラスターでも動作することが保証されています。

10 文字の単語 Kubernetes は、コミュニティでは K8S として知られています。 K3s は Kubernetes のメモリのちょうど半分なので、Rancher は新しいディストリビューションを表す 5 文字の単語を見つけ、単に K3s と名付けました。

K3sアーキテクチャの深い理解

K3sの魅力はそのシンプルさにあります。単一のバイナリ ファイル (約 100 MB) としてパッケージ化およびデプロイされるため、わずか数秒で本格的な Kubernetes クラスターを取得できます。インストール手順は、クラスター内の各ノードでスクリプトを実行するだけです。

K3s バイナリは、API サーバー、スケジューラ、コントローラなど、Kubernetes クラスターのほぼすべてのコンポーネントを実行する自己完結型のパッケージ エンティティです。デフォルトでは、すべての K3s インストールには、Kubernetes ワークロードを実行するのに十分なコントロール プレーン、kubelet、および containerd ランタイムが含まれています。もちろん、kubelet エージェントと containerd ランタイムのみを実行してポッドのライフサイクルをスケジュールおよび管理する専用のワーカーノードを追加することもできます。

従来の Kubernetes クラスターと比較すると、K3s のマスターノードとワーカーノードの間に明らかな違いはありません。ポッドは、その役割に関係なく、任意のノードでスケジュールおよび管理できます。したがって、マスターノードとワーカーノードの命名方法は、k3s クラスターには適用されません。

k3s クラスターでは、コントロール プレーン コンポーネントと kubelet を実行するノードはサーバーと呼ばれ、kubelet のみを実行するノードはエージェントと呼ばれます。サーバーとエージェントの両方に、クラスター全体のトンネルとネットワーク トラフィックを管理するためのコンテナ ランタイムと kubeproxy があります。

一般的な k3s 環境では、サーバーと複数のエージェントを実行します。インストール中にサーバー URL を渡すと、ノードはエージェントになります。そうしないと、独自のコントロール プレーンを持つ別の独立した k3s クラスターを実行することになります。

では、Rancher はどのようにして k3s のメモリ使用量を削減したのでしょうか?まず、最小限のクラスターを実行するために必須ではない Kubernetes のオプション コンポーネントを多数削除しました。次に、containerd、Flannel、CoreDNS、CNI、Traefik イングレス コントローラー、ローカル ストレージ、組み込みサービス ロード バランサー、統合ネットワーク ポリシー コントローラーなどの必要な要素を追加します。これらのコンポーネントはすべて単一のバイナリにパッケージ化され、同じプロセスで実行されます。これらに加えて、ディストリビューションは Helm チャートもすぐにサポートします。

アップストリームの Kubernetes ディストリビューションは肥大化しており、削除できるコードが多数あります。たとえば、ストレージ ボリューム プラグインやクラウド プロバイダー API によって、ディストリビューションのメモリ フットプリントが大幅に増加する可能性があります。 K3s はバイナリ サイズを最小限に抑えるためにこれらすべてを省略します。

もう 1 つの重要な違いは、クラスターの状態の管理方法です。 Kubernetes は、クラスター全体の状態を保存するために分散キー値データベース etcd に依存しています。 K3s は、etcd を、組み込みシナリオ向けの成熟したデータベースである SQLite と呼ばれる軽量データベースに置き換えます。多くのモバイル アプリケーションでは、状態を保存するために SQLite がバンドルされています。

少なくとも 3 つのノードで etcd を実行すると、Kubernetes コントロール プレーンの可用性が高まります。一方、SQLite は分散データベースではありません。コントロール プレーンの高可用性を実現するために、K3s サーバーは外部データベース エンドポイントを指すことができます。サポートされているデータベースには、etcd、MySQL、PostgreSQL などがあります。 K3s は、状態を外部データベースに効果的に委任することにより、複数のコントロール プレーン インスタンスをサポートし、クラスターの可用性を高めます。

Rancher は、DQLite と呼ばれる SQLite の分散バージョンを実験しており、最終的には K3s のデフォルトのデータ ストアになる可能性があります。

K3s の最大の強みは、「バッテリーが付属しているが交換可能」というアプローチです。たとえば、containerd ランタイムを Docker CE ランタイムに、Flannel を Calico に、ローカル ストレージを Longhorn に置き換えることができます。

K3s アーキテクチャの詳細な説明については、KubeCon North America 2019 での K3s アーキテクトの Darren Shepherd のプレゼンテーションを視聴することを強くお勧めします: https://youtu.be/-HchRyqNtkU

K3s の展開シナリオとトポロジ

K3s ディストリビューションは、AMD64、ARM64、ARMv7 を含む複数のアーキテクチャをサポートしています。一貫したインストール エクスペリエンスにより、K3s は Raspberry Pi Zero、NVIDIA Jetson Nano、Intel NUC、または Amazon EC2 a1.4xlarge インスタンスで実行できます。

マニフェストをデプロイするための同じワークフローを維持するために単一ノードの Kubernetes クラスターが必要な環境では、サーバーまたはエッジ デバイスに K3s をインストールします。これにより、既存の CI/CD パイプラインやコンテナ イメージ、Helm チャートや YAML ファイルを柔軟に使用できるようになります。

AMD64 または ARM64 アーキテクチャで実行される高可用性クラスターが必要な場合は、3 ノードの etcd クラスターをインストールし、その後に 3 つの K3s サーバーと 1 つ以上のエージェントをインストールします。これにより、本番環境レベルの環境が提供され、コントロール プレーンに HA が提供されます。

クラウドで K3s クラスターを実行する場合は、サーバーを Amazon RDS や Google Cloud SQL などのマネージド データベースにポイントして、複数のエージェントを備えた高可用性のコントロール プレーンを実行します。各 K3s サーバーは、最大の稼働時間を実現するために、異なる可用性ゾーンで実行できます。

信頼性の高い常時接続を備えたエッジ コンピューティング環境で K3s を実行する場合、サーバーをクラウドで実行し、エージェントをエッジで実行します。これにより、リモート環境でエージェントを実行しながら、クラウドで可用性が高く管理しやすいコントロール プレーンを柔軟に実行できるようになります。

最後に、エージェントをデバイス上で実行しながら、AWS Wavelength や Azure Edge Zones 環境などの 5G エッジ ロケーションに K3s HA コントロール プレーンを展開できます。このトポロジは、スマート ビルディング、スマート ファクトリー、スマート ヘルスケアのシナリオを反映しています。

<<:  企業はクラウドコンピューティングを適切に管理および制御するにはどうすればよいでしょうか?

>>:  IaaSからSaaSまで、テンセントの20年にわたる自社開発技術がクラウド上に集結

推薦する

マルチアクセス エッジ コンピューティング (MEC) 標準化団体についてどの程度ご存知ですか?

マルチアクセス エッジ コンピューティング (MEC) は、クラウド コンピューティングに続くもう ...

Python スクリプトを使用して OpenStack Overcloud の問題を発見する

[[314897]] LogTool は、オーバークラウド ノードの問題の根本原因を見つけるのに役立...

Sina Micro Magazine がウェブマスターにもたらす価値とインスピレーションの分析

新浪微博は私にとって何の役に立つのか? どのように運営するのか? どのように発行部数を増やすのか? ...

中国エレクトロニクスのCloudFlying Engine + Lanxinが政府サービスの加速に貢献

政府や企業のデジタル変革の文脈に適応し、俊敏に開発・展開でき、モバイル端末にシームレスに接続でき、安...

Baidu Newsは新たな改訂を完了したが、一部のウェブサイトのデータ更新に影響する可能性がある。

Baidu 製品の改訂速度は加速しています。たとえば、数日前、Baidu MP3 が Baidu M...

記事キーワードが上位にランクインした理由の分析

記事のキーワードのランキングは非常に複雑なトピックです。なぜそう言うのでしょうか? 記事内のキーワー...

5d6d フォーラムの戦略的調整は私たちにどのような考えを与えるのでしょうか?

最新ニュースによると、閉鎖されたと言われていた5d6d領土フォーラムがついに終了しました。本日、新し...

心理的な戦術を通じてターゲット消費者を獲得する方法を説明します

今日、もっと効果的なマーケティングの方法があるかと聞かれたら、私は、ターゲットとなる消費者の心理に立...

推奨: prometeus-39 ユーロ/8 GB RAM/320 GB HDD/8 TB Flow/イタリア

18 年の歴史を持つホスティング会社 prometeus.net は、基本的にサーバーとして使用でき...

Kubernetes を 2500 ノードに拡張する際に発生する問題と解決策

Kubernetes はバージョン 1.6 以降、5,000 を超えるノードをサポートできると主張し...

教育・研修ウェブサイトのキーワードデータ分析

検索エンジンで最も人気のある業界は、ヘルスケア、不動産、教育、B2C であり、最も多くの投資と検索が...

technobros: エチオピア VPS+サーバー、東アフリカのデータセンター

Technobros は 2006 年に設立され、エチオピアの首都アディスアベバに拠点を置いています...

ブランド活用マーケティングの根底にあるロジック!

多くのブランドは、マーケティングカレンダーを参考にして適切なノードを選択し、年間マーケティング計画を...

現在の SEO トレーニングはあなたにとってどのような価値がありますか?

SEO トレーニングは現在すでに非常に人気があります。インターネット初心者で SEO でお金を稼ぎた...

推奨: m247-4 Euro/Xen/256M メモリ/10G ハードドライブ/G ポート無制限/ルーマニア

m247 は 2001 年に設立され、ISO 9001:2008 品質管理システムと ISO2700...