アーキテクチャから導入まで、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年にわたる自社開発技術がクラウド上に集結

推薦する

Baidu 検索 SEO プロンプト: SEO 会社の言葉や事例を信用しないでください

今日、熱心なウェブマスターが、A5 Webmaster Network の SEO 部門に、Baid...

#クリスマス+新年# kryptcloud: ロサンゼルス\サンノゼのクラウド サーバー (VPS) が Windows ライセンス付きで 25% オフ

大手ブランド「KTデータセンター」傘下のクラウドサーバーブランド「ION」が「クリスマス」+「新年」...

自作ウェブサイトのオープンソースシステムをサーバーの観点から見る

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますハイ兄弟は...

OpenStack Designate を使用した DNS as a Service (DNSaaS) の構築

[[265096]] OpenStack 用のマルチテナント DNS as a Service (D...

百度は「Tiebaモデレーター」を取り締まり、タオバオ内の反腐敗キャンペーンを引き継ぐ

百度は「店員」を取り締まることでタオバオ内の反汚職キャンペーンを引き継ぐ今年上半期、ジャック・マーは...

admin5 による外部リンクの削除をきっかけに、従来の外部リンク構築手法について考える

Baidu は最近、大きな動きを見せています。Lee 氏自身が執筆したウェブサイト品質評価の推奨文書...

クラウドコンピューティングデータセンターにおける仮想化技術の適用を分析する3つの側面

本稿では、クラウド コンピューティング データ センターのリソース使用率とユーザー QOS を向上さ...

地域不動産ネットワーク開発の考え方:不動産開発業者が活用し、政府が開発を促進

近年、不動産ウェブサイトの人気が高まっています。住宅価格は規制されていますが、住宅を購入する人の数は...

lisahost: クリスマス 10% オフ、米国 cn2 gia VPS、3 つのネットワーク必須、ネイティブ IP、1 日間の「トライアル」

Lisahostは、クリスマスに向けて、事前に米国cn2 gia vpsの10%割引を用意しました。...

ローカルフォーラムのオンラインプロモーションに関する経験の共有

Chenchen はこれまでいくつかのフォーラムを管理してきましたが、最近、私たちの郡のフォーラムと...

GDPR に備えてクラウド導入を準備するための 4 つのベスト プラクティス

[51CTO.com クイック翻訳] システム監査やプロアクティブなセキュリティなど、あらゆるレベル...

キーワードランキングをGoogleの1ページ目に素早く向上させる新しい方法

これは私が最近 Google ランキングを改善するために使用している方法であり、これを皆さんと共有し...