最近、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 がクラウド コンピューティングの人材をターゲットにしているのはなぜですか?
aim2gameは2009年3月に設立され、主にMCホスティング事業を営み、その後VPS事業も手掛け...
SEO は幅広く奥深いテーマです。本当に理解したければ、短期間でできるものではありません。長いプロセ...
最近、第6回デジタル中国建設成果展の最優秀成果選考授賞式で、天一クラウド4.0コンピューティング電力...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス2011 年のトップ 1...
みなさんこんにちは。今日もここでお会いできて嬉しいです。最近は体重の回復に忙しくて、とても疲れていま...
スターバックスはコーヒーを売っているだけだと思っていたら、実は金融業界にすでに参入しており、第3のス...
多くのオンライン マーケティング担当者は、Web サイトのプロモーションにおいて「ボトルネック期間」...
Baidu が Taobao の検索エンジンを公開するにつれて、ますます多くのオンライン ショップの...
携帯電話ユーザーにより良い閲覧体験を提供するために、ウェブサイト開発者は通常、さまざまな端末デバイス...
クラウド コンピューティングの仮想化により、クラウド コンピューティング プロバイダーはリソースの物...
みなさんこんにちは。私はMuzi Chengzhouです。 SEO に対する私の理解はそれほど深くな...
タイのデータセンターにあるformohostのタイサーバーをおすすめします。中国本土に近く、登録が不...
一般的に、無制限のトラフィックを備えたストレージ型 VPS はほとんどありません。ここでは、ZXHO...
注: この記事は、3 月 25 日に開催された Huxiu WOW! 2014 New Media ...
anynode、私はすでに知っていますが、ラスベガスのデータセンターの VPS ではブラックフライデ...