アーキテクチャから導入まで、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 のスナップショット ロールバックの原因はデータベース障害です。Web マスターはパニックになる必要はありません。

今日は木曜日なのでいい日です。ウェブサイトの改訂は1か月ほど続いていて、スパイダーは先週リリースされ...

中国における自律制御型クラウドコンピューティングの開発動向に関する議論

[[405847]]世界各国の技術競争が激化する中、企業のデジタル変革の基盤となるクラウドコンピュー...

cloudcandyhost - $3.4/128m メモリ/5g SSD/200g トラフィック/g ポート

cloudcandyhost はインドの業者です。一般化しないでください。信頼できるインドの業者も存...

Yidianyun:香港CN2クラウドはたった1.5元(更新料15元)、高防御専用サーバーは199元(24コア/32Gメモリ/240gSSD/30M帯域幅)

新興企業である易電雲計算は、主にクラウドサーバー、クラウドストレージ、独立サーバーなどの事業を手掛け...

digital-vm: 月額 9 ドル、10Gbps の帯域幅、無制限のトラフィック、日本/シンガポールの 12 のデータセンターなど。

新しい販売業者である digital-vm (年に設立、ルーマニアに登録、登録番号 J40/3876...

ウェブサイトの内部リンクを合理的に増やすには、まず詳細から始めましょう

外部リンクと内部リンクは一対の翡翠のペンダントのようなものです。外部リンクと内部リンクの協調効果は、...

2021年にクラウドコンピューティング業界はどのように発展するか

2020年、私たちは新型コロナウイルス感染症のパンデミックによってデジタルトランスフォーメーションが...

上: 高速伝送ソフトウェアの比較分析: Aspera と Raysync

Aspera は IBM の高速転送ソフトウェアです。ファイル サイズ、形式、転送距離、ネットワーク...

SEO最適化における「正規」タグの使用に関する簡単な説明

「canonical」タグは、ウェブ上で類似性の高いコンテンツを持つページを標準化するために Goo...

ウェブサイトを構築してから30日後、重量2が1位になり、詳細で優勝しました

古いウェブサイトの場合、良いランキングは必須です。しかし、新しいウェブサイトの場合、1 か月以内の短...

Infrastructure as Code (IaC) に注意を払わないと、失敗します。

[[406325]]これまで、IT インフラストラクチャの管理は困難な作業でした。システム管理者は、...

launchvps: 米国東海岸のペンシルバニア州にある信頼性の高い KVM 仮想 VPS。大幅な割引あり

Launchvps は 2003 年の運営開始以来、全体的に非常に控えめな運営をしており、製品ライン...