最近、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 スクリプトを準備します。
唯一の課題は、生成された 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 シンガポール デ...
中国商人のpigyunは2009年にVPS事業を開始し、今年で3年目になります。現在、7月夏のプロモ...
[[378345]]導入Monasca は、IT チームがログ データを分析し、アラートと通知を設定...
今日の訪問者の検索思考は、以前の訪問者のそれとはまったく異なります。以前は、訪問者はインターネットで...
近年、テクノロジー、教育、医療、ゲーム業界、コミュニティ、小説など、多くの分野がインターネット大手の...
クラウド コンピューティングの利点は明らかですが、クラウドの導入を始めたばかりの企業にとって、クラウ...
「ゲームコミュニティ」とは何ですか?近年、一時期流行ったものの、その後は静かな遺物のように感じられる...
[[403388]]このガイドでは、Kubernetes と Istio を使用したプログレッシブ配...
【捜狐ITニュース】11月8日、業界関係者は、Tuola.comがSina Weibo Fundから...
ユーザーは、スーパーで何を食べるか、何を買うかなど、直前の行動ですぐに結果を求めるためにモバイル検索...
北京時間2月7日、海外メディアの報道によると、Googleは本日、オンライン小売取引追跡会社Chan...
データ生成とデータ処理の発展は、基盤となるインフラストラクチャ ネットワークのニーズと進化に大きな影...
エッジ コンピューティングは、モノのインターネット (IoT) の変革をもたらすテクノロジーとなり、...
EIGのドメイン名ブランドは、ドメイン名プロモーションキャンペーンを開始し、40%の割引、複数年登録...
2012年、Taobao AllianceプラットフォームがウェブマスターとTaobao顧客にもたら...