わずか 60 秒で k3s を使用してマルチノード K8S クラスターを作成します。

わずか 60 秒で k3s を使用してマルチノード K8S クラスターを作成します。

最近、Kubernetes 上でさまざまなテストとデプロイメントを行っています。その結果、Kubernetes クラスターを何度も作成して破棄する必要があり、場合によっては 1 時間以内に複数回作成して破棄する必要がありました。しかし、テストにはまったく新しいクラスターが必要だったため、すべてのポッド、サービス、デプロイメントなどを削除してクラスターを「新品同様」にするだけでは何も起こりませんでした。

同時に、本番環境にできるだけ近いクラスターも必要なので、すべてのローカル ソリューション (Minikube、Vagrant など) は役に立ちません。

当初は、クラウド プロバイダーのマネージド Kubernetes を使用していました。これは、デプロイが簡単で、クラスターが起動したら、ボタンをクリックするだけで kubectl 構成をダウンロードできるためです。しかし、3つの問題があります。

デプロイにはクラスターごとに約 10 分と、かなりの時間がかかります。毎日展開して破壊しなければならない場合、その時間は蓄積されていきます。

kubectl 設定ファイルを手動でダウンロードしてロードする必要があります (この操作は簡単ですが、手動で行うには少し面倒です)

これはマネージド サービスなので、クラスターへのフル アクセス権はありません。

そこで、クラウド上で Kubernetes クラスターを迅速かつ簡単にデプロイおよび破棄できるソリューションを作成することにしました。

https://github.com/DavidZisky/60sk3s

最終的に、Google Cloud 上に VM を作成し、4 ノードの Kubernetes クラスタ(マスター 1 台とワーカー 3 台)をデプロイし、kubectl 構成をダウンロードして、わずか 60 秒でシステムにロードするシンプルな Bash スクリプトが完成しました。何もない状態 (VM さえない状態) から kubectl apply -f any_deployment.yaml を実行できるようになるまで、1 分もかかりませんでした。それで、どうやってそれを行うのですか?

特定の要件

私にとって、このソリューションの重要な考慮事項は、可能な限りポータブルにすることでした。そのため、私はツールを使わないようにしています (つまり、Terraform も Ansible もインストールや構成も行いません)。これが私がこれを Bash で書いた理由であり、唯一の依存関係はインストールおよび構成された GCloud CLI (デフォルトのリージョンとプロジェクト セットを使用) です。

30秒以内に仮想マシンを起動します

仮想マシンから始めましょう。通常、クラウド上に仮想マシンを作成するには約 45 ~ 60 秒かかります。たとえば、DigitalOcean では、VM の起動 (ping が応答し始める) に 40 秒かかりますが、他のシステム サービスの起動 (最も重要なのは、SSH サーバーが接続を受信できるようになること) にはさらに 15 秒かかります。

したがって、まずプロセス全体を少なくとも 2 倍高速化する必要があります。

メモリフットプリントの小さい OS イメージを使用することでこれを実現できます。そのため、私は Google Cloud を使い続けています。Google Cloud は最小の Ubuntu イメージ (200 MB 未満) を提供しているからです。同時に、多くの軽量ディストリビューションを試しましたが、コアモジュールがなかったり、起動に時間がかかったりしました。

Google Cloud 上で Ubuntu mini VM を作成して起動するには、約 30 秒かかりました (GCloud API 呼び出しから SSH サーバーの準備ができるまで)。さて、最初のステップは完了しました。次は残りの 30 秒を見てみましょう。

30秒でK8Sクラスターをデプロイ

Kubernetes クラスターを 30 秒以内にデプロイするにはどうすればよいでしょうか?答えは、k3s を使用することです。 k3s についてまだ聞いたことがない場合は、以前の記事を読むか、今夜 8:30 にオンライン トレーニング (http://z-mz.cn/Pmwv) に登録して詳細を確認してください。

k3s を使用すると、Kubernetes の起動と実行についてあまり心配する必要がありません。k3s インストーラーが自動的に実行してくれるからです。したがって、私のスクリプトはそれをダウンロードして実行するだけです。

すべてをつなぐ

軽量 OS イメージを使用して、仮想マシンを 30 秒以内に起動します。私たちは k3s を使用しました。これにより、Kubernetes を 20 秒未満で実行できるようになりました。次に、すべての部品を接続する必要があります。これを実現するために、Bash スクリプトを準備します。

  • 仮想マシンを展開するための GCloud コマンド
  • マスターノードにk3sインストーラをダウンロードして実行する
  • k3sによって生成されたトークンを取得します。これを使用して、クラスターにノードを追加できます。
  • ワーカーノードに k3s インストーラーをダウンロードして実行します (トークンをパラメータとして使用)

唯一の課題は、生成された kubectl 構成を取得することです。Google VM 上のパブリック IP アドレスは、コンピューターからは表示/アクセスできません (「ip addr」または「ifconfig」を実行しても見つかりません)。したがって、k3s が証明書と kubeconfig を生成すると、外部からクラスターにアクセスすることは無効になります。

しかし、いろいろ調べた結果、証明書生成用の追加の IP アドレスを提供できるパラメータ「--tls-san=」を見つけました。したがって、GCloud コマンドを通じて IP アドレスを取得し、k3s をインストールするときにそれをパラメータの値として渡すことができます。 k3s がすべてのノードにデプロイされ、ワー​​カーノードがマスターノードに適切に登録されている場合、クラスターは準備完了です。

最後に残っているのは、kubectl 構成をダウンロードすることです (scp を使用してマスター ノードからファイルを取得します)。すべての手順を完了するには、わずか 55 ~ 58 秒かかります。ご覧のとおり、このソリューションには特別なことは何もありません。bash スクリプトにいくつかの GCloud コマンドと curl コマンドが組み込まれているだけです。しかし、仕事はすぐに終わります。

次は何ですか?

まず、現在、ソリューション全体は 4 ノード クラスター (マスター ノード 1 つとワーカー ノード 3 つ) を持つようにハードコードされています。設定は簡単ですが、大規模なクラスターでテストしたことはありません。しかし、そのオプションはすぐに追加される予定です。

2 番目に、kubectl 構成は現在、ダウンロードのみ可能 (つまり、kubectl コマンドに引数として渡すことができます)、または既存の kubectl 構成を上書きすることのみ可能です (長時間実行されるクラスターがないため、私のニーズにはこれで十分です)。ただし、既存の構成に構成を追加してコンテキストを変更する機能オプションを追加すると、長期的にはメリットが得られる可能性があります。

著者: Dawid Ziolkowski丨コンテナ ソリューション クラウド ネイティブ エンジニア

<<:  Google がクラウド コンピューティングの人材をターゲットにしているのはなぜですか?

>>:  エッジコンピューティングの災害復旧

推薦する

Vultr クラウド サーバーはどうですか?シンガポールのデータセンターの簡単なレビュー

Vultrはどうですか? Vultr クラウド サーバーはどうですか? Vultr シンガポール デ...

pigyun: ハイエンドネットワーク、最大14元/月の割引VPS、米国AS9929混合CN2 GIA、米国CN2 GIA(アンチアタック)、韓国CN2 BGP、香港BGP

中国商人のpigyunは2009年にVPS事業を開始し、今年で3年目になります。現在、7月夏のプロモ...

OpenStack 高性能監視ツール: Monasca

[[378345]]導入Monasca は、IT チームがログ データを分析し、アラートと通知を設定...

キーワードを正確に見つけるには、訪問者の胃の中の回虫になる必要がある

今日の訪問者の検索思考は、以前の訪問者のそれとはまったく異なります。以前は、訪問者はインターネットで...

ローカルウェブサイトが差別化を通じてどのように発展できるかについての簡単な議論

近年、テクノロジー、教育、医療、ゲーム業界、コミュニティ、小説など、多くの分野がインターネット大手の...

企業におけるマルチクラウド戦略の導入に関するベストプラクティス

クラウド コンピューティングの利点は明らかですが、クラウドの導入を始めたばかりの企業にとって、クラウ...

ゲームコミュニティに関する 3 つの理解: 「ゲームコミュニティ」にはまだ希望があるのでしょうか?

「ゲームコミュニティ」とは何ですか?近年、一時期流行ったものの、その後は静かな遺物のように感じられる...

Flux+Flagger+Istio+Kubernetes を使用して GitOps クラウドネイティブ プログレッシブ (カナリア) 配信を実装する

[[403388]]このガイドでは、Kubernetes と Istio を使用したプログレッシブ配...

Sina Weibo はトラフィックの収益化を目指し、ショッピングガイドコミュニティ Tuola.com に 1,000 万元を投資

【捜狐ITニュース】11月8日、業界関係者は、Tuola.comがSina Weibo Fundから...

ボックス検索からボックスサービスへ: 検索の進化の方向

ユーザーは、スーパーで何を食べるか、何を買うかなど、直前の行動ですぐに結果を求めるためにモバイル検索...

GoogleがChannel Intelligenceを1億2500万ドルで買収

北京時間2月7日、海外メディアの報道によると、Googleは本日、オンライン小売取引追跡会社Chan...

SDN に基づくマルチアクセス エッジ コンピューティング (MEC) について話す

データ生成とデータ処理の発展は、基盤となるインフラストラクチャ ネットワークのニーズと進化に大きな影...

エッジコンピューティングがデータ処理と IoT インフラストラクチャに与える影響

エッジ コンピューティングは、モノのインターネット (IoT) の変革をもたらすテクノロジーとなり、...

domain.com - ドメイン名が40%オフ、新しいサフィックスをサポート、長期間登録可能

EIGのドメイン名ブランドは、ドメイン名プロモーションキャンペーンを開始し、40%の割引、複数年登録...

モバイルインターネットの時代に、Taobao の顧客はどうやって収益を得るのでしょうか?

2012年、Taobao AllianceプラットフォームがウェブマスターとTaobao顧客にもたら...