Kubernetes、パートIV、自動スケーリングを学んでください


私に従って、トピックや改善についてのご提案を取るに満足

This fourth part aims to show you how you can utilize auto-scaling as your scaling strategy. We've shown you scaling with a desired state but this is probably even more powerful


  • この部分では、Kubernetes、いくつかの歴史と展開、ノード、ポッドのような基本的な概念の理由を説明します.

  • この部分では、ポッドとノードの知識を深める.また,ラベルを用いたサービスやラベルを紹介し,アーティファクトを問い合わせる.

  • この部分では、所望の状態を用いてスケーリングを見る.私たちはどのように多くのポッドを指定し、Kubernetesはあなたのポッドは、所望の数にスケールアップされていることを確保するための重荷を行うことができますが、また、それを維持することを指定して何かを使用して自己治癒と呼ばれる.
  • Part IV -オートスケーリング
  • この記事では、次のように説明します

  • オートスケーリングについては、望ましい状態で静的に定義するよりもオートスケーリングに依存するように、異なるシナリオを議論します

  • どのように、我々は弾力的な方法でスケールすることができます概念/機能を水平方向の自動スケーリングについて話すことができます.

  • Let -レッツスケール、我々は実際にどのようにこれを設定する方法を見てkubectl そして、着信リクエストのトンをシミュレートします.その後、結果を検証し、Kubernetesは我々が考える方法を行うことを参照してください

  • 資源

  • Horizontal Pod Auto scale これは、すべてがどのように働くかについて詳細に説明します.フローとAPIレベル

  • Free Azure Account あなたがAK、Azure Kubernetesサービスを試してみたいならば、あなたは無料のAzure口座を必要とします

  • Kubernetes.io
    Kubernetesについて学ぶ最良のリソースの一つは、Googleによる公式公式Kubernetesサイトです.

  • Kubernetes overview Kubernetesのすべての部分とその仕組みの概観

  • Kubernetes in the Cloud あなたはKubernetesについてのすべてを知っていると感じるだけで管理サービスを使用する方法を学びたいですか?次に、このリンクはあなたのためです

  • Documentation on AKS, Azure Kubernetes Service
    Azure Kubernetesサービス,管理されたKubernetes

  • Best practices on AKS あなたはすでにAKを知っているし、どのようにそれを使用する方法を学びたいですか?

  • なぜでしょう
    それで、我々の最後の部分で、我々は望ましい状態について話しました.何か予期せぬ出来事が起こるまで、それはOK戦略です、そして、突然、あなたは交通の大きな流入を得ました.これは、人気のイベントにチケットをリリースするときに大きな販売やチケットベンダーの周りの電子商取引などのビジネスに発生する可能性があります.
    これらのようなイベントは、すぐにスケールアップすることを強制異常です.コインの反対側は、しかし、いくつかの時点でスケールダウンする必要がありますか、突然あなたが支払う必要があります大容量を持っている.あなたが本当に望むものはスケーリングのために弾力的な方法で行動するので、それがあなたがそれを必要とするときスケールアップして、より少ない交通があるとき、縮小します.

    ハウ
    水平自動スケーリング、それは何を意味しますか?
    それは、我々が必要とするポッドの数を縮めることができるKubernetesの概念です.それはそうすることができますreplication controller , deployment or replica set . 通常はCPU利用を見るが、何かを使用して他のものを見るために作ることができるcustom metrics support , それで、それはカスタマイズ可能です.
    それは2つの部分から成りますresourcecontroller . The controller レプリカの数があなたの仕様に合っていることを確認するために、あなたが決めたメトリックをチェックします.必要があればもっとポッドをスピンしたり、削除します.デフォルトは15 秒が、フラグを見て変更することができますと呼ばれる--horizontal-pod-autoscaler-sync-period .
    複製の数を決定する基礎となるアルゴリズムは次のようになります.
    desiredReplicas = ceil[currentReplicas * ( currentMetricValue / desiredMetricValue )]
    

    レット・スケール
    OK、まず最初に必要なのは、展開した展開を希望の状態以外のものを使うようにすることです.
    オートスケーリングを行うときには、二つのことを指定する必要があります.

  • min/max ,我々はどのように多くのポッドに関して最小と最大を定義する

  • CPUは、このバージョンでは、特定のCPUの利用率を設定します.それが上に行くとき、それは必要に応じて拡大します.これを考えるIF 節の値より大きい場合、

  • 設定する
    スケーリング実験を試みる前に、正しいアドオンが有効になっていることを確認する必要があります.簡単に入力を有効にすることができます.
    minikube addons list
    

    それが上記のように見えるならば、我々はすべて良いです.なぜ私はそれを言っていますか?さて、我々が必要とするものは、自動スケールができるために、それですheapster and metrics-server アドオンが有効になります.
    Hapsterはコンテナクラスタ監視と性能解析を可能にする
    メトリクスサーバーは、リソースメトリクスAPI経由でメトリクスを提供します.水平のポッドAutoscalerは、メトリックを集めるために、このAPIを使用します
    以下のコマンドを簡単に有効にすることができます(正しいデータを表示するオートスケーリングを行う必要があります).
    minikube addons enable heapster
    
    and
    minikube addons enable metrics-server
    
    もう一つのことをする必要があるenable カスタムメトリックを開始することによってminikube このようなフラグで
    minikube start --extra-config kubelet.EnableCustomMetrics=true
    
    OK、今私たちは行くのが良いです.

    実験の実行
    我々は実験を実行するために以下を行う必要がある

  • 展開の作成

  • 自動スケーリング

  • 着信要求で配備を破棄する

  • オートスケーリングを見る

  • num展開を作成する
    kubectl run php-apache --image=k8s.gcr.io/hpa-example --requests=cpu=200m --expose --port=80
    
    上記の展開を作成しますphp-apache ポートのサービスとして公開する80 . 我々は、我々がイメージを使っているのを見ることができますk8s.gcr.io/hpa-example次のように教えてください.
    service/php-apache created
    deployment.apps/php-apache created
    

    オートスケーリング
    次にコマンドを使いますautoscale . 以下のように使います:
    kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10
    
    次のようにしてください.
    horizontalpodautoscaler.autoscaling/php-apache autoscaled
    
    上記では、展開に自動スケーリングを適用していますphp-apache そして、あなたが見ることができるようにmin-max and cpu 自動スケーリングによって、オートスケーリングがどのように行われるかについての規則を与えます.

    If CPU load is >= 50% create a new Pod, but only maximum 10 Pods. If the load is low go back gradually to one Pod



    要求による爆撃
    次のステップは、展開に対する要求のトンを送信し、その作業を行う私たちの自動スケーリングを参照してくださいです.では、どうやってそれを行うのですか?
    まず最初に、私たちの水平方向のポッドオートスケーラーまたはhpa 以下のように入力します.
    kubectl get hpa
    
    これは以下のようになります.

    以上が2つの情報を示している.第一はTARGETS 我々のCPU利用を示すコラム.actual usage/trigger value . 次のビットはカラムですREPLICAS それはコピー数を示しています1 現時点で.
    次のトリックは、別のターミナルのタブを開きます.我々は、我々は要求のトンを送信できるように物事を設定することです.
    次に、このコマンドを使用してコンテナを作成します.
    kubectl run -i --tty load-generator --image=busybox /bin/sh
    
    これは、コンテナ内のプロンプトに私たちを取る必要があります.これに続いて
    while true; do wget -q -O- http://php-apache.default.svc.cluster.local; done
    
    上記のコマンドは、このように見えます.

    これは、あなたがヒットするまでに行くCTRL+C , しかし、それは現在のままにします.
    これは、2010年に要求にトンを投げるwhile true ループ.

    I thought while true loops were bad?


    しかし、自動スケーリングが起こることができるように、我々はほんの少しの間それを実行するだけです.はい、CPUはたくさん聞こえますが、心配しないでください.

    次のコマンドを最初の端末のタブに入力してください.
    kubectl get hpa
    
    次のように表示します.

    上記のコラムからわかるようにTARGETS ルックス別と今言う339%/50% これはCPU上の現在の負荷とREPLICAS is 7 それは1から7のレプリカに行ったことを意味します.あなたが見ることができるように、我々はそれをとても激しく爆撃していました.
    今すぐ2番目の端末に行くとヒットCTRL+C または、このような状況になります.

    それは実際にクールにオフにKubernetesの数分かかるし、正常に戻って値を取得します.ポッド状況の最初の観察は、我々に以下を示します
    kubectl get pods
    

    見ることができるように、我々は7つのポッドを持っていて、まだ走っています、しかし、1分か2分を待ちましょう、そして、それはこれのように見えなければなりません:

    を、今は正常に戻っています.

    概要
    今この記事ではいくつかの素晴らしいものをしました.私たちは、自動スケーリングを設定し、リクエストでそれを爆撃しました.
    私たちはまた、いくつかの新しいKubernetesコマンドを学ぶことができたし、私たちの仕様に基づいて新しいポッドを与える仕事で自動スケーリングを見て得た.