最近、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 がクラウド コンピューティングの人材をターゲットにしているのはなぜですか?
オンラインの世界には、何百億ものウェブページが存在します。検索エンジンはそれらのほとんどを分類し、ラ...
ウェブサイトの最適化に関連するトレンドや人気の発展は、インターネットの更新頻度と状況を最もよく反映し...
11月11日は一般に「独身の日」として知られていますが、昨年、アリババグループは「独身の日」を「ショ...
登録ページは、ユーザー情報を取得する主な方法です。シンプルであればあるほど良いです。デザインは、登録...
サーバー アプリケーションをコンテナ経由でクラウドに移行する場合は、コンテナ オーケストレーションを...
新しく立ち上げたWebサイトは、プロモーションと運用が何よりも大切です。いかにしてユーザーに信頼して...
クラウド ネイティブ アーキテクチャのログ監視には、従来のアプリケーションとは少し異なるアプローチが...
最近、多くのウェブマスターが、Baidu の最適化が難しくなったと不満を述べています。数か月間粘った...
Qunar.com は昨日、同業他社から公に批判された。マフェンウォ・トラベル・ネットワークのチェン...
インターネットのウェブサイトは数多くありますが、そのルールをまとめると、商品やサービスを販売すること...
ホフマン(写真提供:Sina Technology)この無精ひげを生やしたスタンフォード出身の男は、...
現在、中国でインターネットをサーフィンする場合、Baidu は基本的に欠かせないものとなっているため...
クラウドコンピューティングとビッグデータによってもたらされたデジタル変革は、経済発展に新たな推進力を...
SEO を芸術に例えるのは誇張ではありませんが、実際には私たちはそれを歪曲し、記事を書いて外部リンク...
インターネット上でウェブサイト構築の競争が激化するにつれ、一部のウェブマスターは、一定期間インターネ...