Kubernetes以降の時代におけるK8Sの12の主要機能を紹介します

Kubernetes以降の時代におけるK8Sの12の主要機能を紹介します

導入:

Kubernetes は最近大流行しており、すべての主要なクラウド サービス プロバイダーがクラウド ネイティブ アプリケーションを展開するためのソリューションとしてこれを採用しています。企業が Kubernetes を受け入れ始める重要な機能とツールの利点は何ですか?この記事の著者は体系的な要約をしています。

「オーケストレーションのない行動は燃え尽きであり、行動のないオーケストレーションは管理である。」

振り付けのない行動は失敗に終わり、行動のない振り付けはマネジメントであり、行動と振り付けがリーダーシップです。 ― オリン・ウッドワード

  • Kubernetes は、リソースの使用率を最適化し、ノードのクラスター全体にアプリケーションを効率的に分散できるようにする抽象化です。
  • 舵取り役のKubernetes!
  • Kubernetes は「舵取り」を意味するギリシャ語です。

これは、Google が開始したオープンソース プロジェクトであり、Borg から派生し、Google 社内で数年間使用され、現在はコンテナ管理に使用されています。現在、CNCF によってホストされています。

Kubernetes(略称:K8S)は、コンテナを通じてCPUやメモリなどのリソースの使用率を最適化し、複数のノード間でアプリケーションを効率的に分散できるようにする抽象化です。 K8S は、ベアメタルまたは任意のクラウド インフラストラクチャ プロバイダー上のどこでも実行できます。新しいツールはクラウドに依存せず、ノード/ホストを直接活用するのではなく、インフラストラクチャ内でのコンテナの展開とスケジュールに重点を置いています。

K8S が提供するプラットフォーム機能の一部は次のとおりです。

  • ポッドを使用してコンテナをグループ化する
  • 自己治癒
  • 自動スケーリング
  • DNS管理
  • 負荷分散
  • ローリングアップデートまたはロールバック
  • リソースの監視とログ記録

Kubernetes アーキテクチャ

Kubernetes クラスターは、マスター ノードとワーカー/スレーブ ノードのセットで構成されます。

Kubernetes マスター ノードのコンポーネントは次のとおりです。

  1. API サーバー: ユーザーは、REST 操作または kubectl cli を通じて manifestyaml と対話します。これは、ポッドの作成などのすべての API オブジェクト関連の操作に使用され、etcd に必要な状態を保存する最初のコンポーネントです。
  2. スケジューラ: ユーザーは kubectl cli を使用して、API サーバーにコマンドを発行し、ポッドを作成します。これを実行した後、スケジューラはリソース要件に基づいて利用可能なノードにポッドを割り当てます。
  3. コントローラー マネージャー: コントローラー マネージャーは、クラスターの状態に基づいてリソースを操作し、マニフェスト yaml に基づいて変更を加えて、現在の状態のアプリケーションを目的の状態に導きます。つまり、コントローラー マネージャーは実際の状態と目的の状態を調整できます。コントローラー マネージャーには、クラスターの管理を簡素化するための専用コントローラーが複数あります。たとえば、ノード コントローラーは現在実行中のノードがダウンしていないかどうかを確認し、修正アクションを実行します。一方、レプリケーション コントローラーは、必要な数のポッドがノードで実際に実行されていることを確認します。
  4. etcd: クラスターのステータスに関するすべての構成情報は、キー/値のペアの形式で etcd に保存されます。このコンポーネントは CoreOS によって実装されています。これらの状態は、クラスターに含まれるノードと、その上で実行する必要があるポッドを示します。
  5. アドオン: Kubernetes にサーバー DNS レコードを追加するには、クラスター DNS アドオンが必要です。このプラグインは、Kubernetes クラスターまたはノードに関連する機能を拡張するのに役立ちます。ログ用の fluntd、ロールベースのアクセス用の rbac など、他にも多くのプラグインがあります。

Kubernetes ノードにインストールされるコンポーネントは次のとおりです。

  • Docker: Docker デーモンは各ノードで実行されます。コンテナ イメージが存在しない場合は、Docker レジストリからプルされて実行されます。
  • Kubelet: Kubelet ノード エージェントは、コンテナ内のコンテナの正常性を定期的にチェックします。さらに、ボリュームがマニフェストに従ってマウントされていることを確認し、コンテナの実行に必要な機密情報をダウンロードします。また、ノードを API サーバーにリンクします。
  • Kube-proxy: Kube-proxy は各ノードで実行され、ポッド間で負荷を分散し、外部ホストでサービスを利用できるようにします。 iptable ルールまたはラウンドロビン スケジューリングを使用して、リクエストを適切なコンテナーに転送します。

可用性が高く、フォールト トレラントな Kubernetes の運用と展開には、複数のマスター ノードと個別の etcd クラスターが必要です。 3 台の API サーバーを実行している場合は、サーバーに負荷を適切に分散するためにネットワーク ロード バランサーが必要になります。 ***残る問題は、クラスターの状態を維持し、ノードを割り当てるために、コントローラー マネージャーとスケジューラーを管理する 3 つのロールが必要であることです。より効率的かつ確実に行うには、実際の変更は 1 人のアクターのみが実行する必要がありますが、マシンのダウンタイムに備えて他のインスタンスも必要です。この問題を解決するには、API でリース ロックを使用してリーダー選出を実行します。これを使用するためのフラグは、leader-elect です。

Kubernetes は、次のいずれかの方法で Pod 間ネットワークを実装します。

  • レイヤー2(スイッチングソリューション)
  • レイヤー 3 (ブリッジング ソリューション)
  • オーバーレイソリューション(織りとフランネル)

クラスター内での Pod 間の通信を可能にし、各 Pod に一意の IP アドレスを提供します。

Kubernetesの主な機能

ポッド: コンテナのコレクション

ポッドは K8S のデプロイメント ユニットであり、単一の IP アドレスを持ちます。内部的には、Pause コンテナはネットワーク名前空間、ポート、および IP アドレスを保持してネットワークを処理し、これらはポッド内のすべてのコンテナによって使用されます。

レプリケーションコントローラ

ReplicationController は、指定された時間に必要な数のコンテナが稼働していることを確認します。 Pod テンプレートは、コンテナ イメージ識別子、ポート、およびラベルを定義するために使用されます。ライブネスプローブを使用すると、ポッドを自動的に修復し、目的の状態に応じてポッドの数を維持できます。 kubectl を使用してレプリカ数を手動で制御することも可能です。

ストレージ管理

ポッドは本質的に一時的なものであり、ポッドまたはコンテナに保存された情報はすべて失われます。データを保存するには、ポッドが強制終了または再スケジュールされた後でも、Amazon Elastic Block Storage (EBS)、Google GCE PD、またはネットワーク ファイル システム (NFS) や Gluster ファイル システム (GFS) などの分散ファイル システムなどの永続的なシステムが必要です。

リソース監視

監視は、インフラストラクチャを正常に実行するための鍵の 1 つであり、信頼性レベルの基礎となります。 Heapster は、kubelet からメトリックを収集し、cAdvisor と統合するプラグインです。 cAdvisor は、実行中のコンテナの CPU、メモリ、I/O、ネットワーク統計に関連するメトリックを収集するために使用されます。 Heapster によって収集されたデータは Influx DB に保存され、Grafana を使用して UI に表示されます。データを保存してユーザー インターフェイスに表示するために使用できる Kafka や Elastic Search などの他のシンクも利用できます。

健康チェック

Kubernetes のヘルスチェックは kubelet エージェントによって実行されます。これは、活性プローブと準備プローブに分かれています。

ハンドラーには主に 3 つの種類があります。

  1. ExecAction: シェル コマンドを実行します。結果の終了コードが 0 の場合、インスタンスは正常であることを意味します。それ以外の場合、インスタンスは不健全です。
  2. TCPAction: Kubelet は指定されたポートへの接続を試行し、指定されたソケットへの接続を確立すると、診断は成功します。
  3. HTTPGetAction: アプリケーションによって公開された HTTP エンドポイントに基づいて、kubelet は指定されたパスのコンテナ IP アドレスに対して HTTP GET 要求を実行します。 200 ~ 300 の応答コードが返された場合、診断は成功です。

各プローブには通常、次の 3 つの結果があります。

  • 成功: コンテナは診断に合格しました。
  • 失敗: コンテナの診断に失敗しました。
  • 不明: 診断に失敗しました。何もアクションを実行しないでください。

水平自動スケーリング機能

自動スケーリングでは、負荷に基づいてコンピューティング リソースが使用されます。 K8S スケール ポッドは、Horizo​​ntal Pod Autoscaler オブジェクトを自動的に使用します。このオブジェクトは、Heapster からメトリック データを取得し、それに応じてポッドの数を減らしたり増やしたりします。たとえば、自動スケーリングがメモリ使用率に基づいている場合、コントローラーはポッド内のメモリ使用量の監視を開始し、容量に基づいてレプリカ数をスケーリングします。

サービス検出

Kubernetes ポッドは一時的なものであり、ReplicationController は任意のノードでそれらを動的に作成するため、クラスター内のサービスを検出するのは困難です。サービスは、クラスター内で通信​​するために IP アドレスと動的ポートを検出する必要があります。

それを検索する主な方法は、環境変数と DNS の 2 つです。

推奨されるのは、クラスター アドオンとして利用できる DNS ベースのサービス検出です。クラスター内の新しいサービスを追跡し、各サービスの DNS レコードのセットを作成します。

ネットワーク

クラスターを完全に管理するには、ネットワークを正しく設定し、次の 3 つのネットワークの問題に対処する必要があります。

  1. コンテナ間通信: ポッドは localhost を介して通信し、Pause コンテナ ネットワーク名前空間を使用してこの問題を解決します。
  2. ポッド間通信: 上記のアーキテクチャ図に示すように、ソフトウェア定義ネットワークによって解決されます。
  3. ポッド外部との通信: サービスによってカバーされます。

Kubernetes は幅広いネットワーク オプションを提供します。また、コンテナの一般的なプラグイン アーキテクチャである Container Network Interface (CNI) プラグインもサポートされるようになりました。現在、Kubernetes、Mesos、CloudFoundry などの複数のオーケストレーション ツールをサポートしています。

さまざまなオーバーレイ プラグインがあります。

  1. Flannel は CoreOS から提供されており、非常にシンプルな etcd ベースのオーバーレイ ネットワークです。アンダーレイ ネットワーク上で実行される、別の仮想のルーティング可能な IP/Pod ネットワークを作成します。したがって、オーバーレイ ネットワークと呼ばれます。このオーバーレイ ネットワークでは、各ポッドに IP アドレスが割り当てられ、その IP を使用して直接通信します。
  2. Weave は、CNI プラグインを介して Kubernetes 互換のオーバーレイ ネットワークを提供します。

仕える

Kubernetes サービスは、マイクロサービスを提供するために一連のポッドに通信をルーティングする抽象化です。 Kube-proxy は各ノード上で実行され、一連の iptable ルールを設定してサービスを管理します。

サービスを設定するには、次の 3 つのモデルがあります。

  1. ClusterIP (内部アクセスのみ)
  2. NodePort (ポートでファイアウォールを開く必要があります。パブリック アクセスは推奨されません)
  3. ロードバランサ(AWS や GKE などのパブリッククラウドプロバイダーが所有)

ConfigMap とシークレット

ConfigMap を使用すると、複数の環境間でコンテナ イメージの一貫性を保ちながら、環境ベースの構成を挿入できるようになります。これらはマウントされたボリュームまたは環境変数を介して注入され、キー/値形式で値を保存できます。

シークレットは、パスワード、OAuth トークンなどの機密データを保存するために使用されます。

ローリングデプロイメントとロールバック

デプロイメント オブジェクトは、ロールバック メカニズムをサポートするために 1 つ以上のレプリカ セットを保持します。つまり、デプロイメント構成を変更するたびに新しいレプリカ セットが作成され、ロールバック オプションが存在するように以前のバージョンが保持されます。特定の時点でアクティブになるレプリカ セットは 1 つだけです。

ローリング デプロイメントの場合、必要なポリシー タイプは RollingUpdate と minReadySecs であり、これはアプリケーションがトラフィックの処理に費やす時間を指定します。アプリケーション ポッドの準備ができていないときにデフォルト状態のままにしておくと、使用できなくなります。これは次のコマンドで実行できます。

または、

デプロイメント yaml ファイルの内容を置き換えて、次のコマンドを実行します。

新しいバージョンが期待どおりでない場合は、次のコマンドを実行して以前のバージョンにロールバックできます。

希望するバージョンが以前のバージョンと異なる場合は、次を実行します。

ログ記録

アプリケーションの動作を監視するには、ログを調べる必要があります。各ポッドは複数のログを生成します。ダッシュボード UI でログの検索を開始するには、ログを収集してログ ビューアーに集約する何らかのメカニズムが必要です。これを文脈に沿って説明すると、Fluentd は CNCF の一部でもあるオープンソース ツールであり、Elastic Search および Kibana と統合されています。

<<:  Amazon RDS の紹介

>>:  WOT2018 シェン・ジアン:58 Express によるマイクロサービス アーキテクチャの優れた実践

推薦する

Kubernetes アプリケーションの問題に対する一般的なトラブルシューティングのアイデア

[[428799]]この記事はWeChatの公開アカウント「Mingge's IT Essa...

中国のインターネットヘルスケアに関する年次調査

インターネット+医療健康政策が導入され、医薬品や医療保険などの関連政策が次々と発表され、市場では徐々...

sharktech: オランダのサーバー、60g の高防御、最低 58 ドル、+1Gbps\10Gbps の無制限トラフィック、Alipay が利用可能

オランダの Sharktech アムステルダム データ センターは、ここ数年補充や拡張が行われていま...

bluehost-14周年記念/仮想ホスティング40%オフ、月額2.65ドル、無料ドメイン名

bluehostさん、彼は何歳だと思いますか?今から午後 18:59 (北京時間午後 19:00) ...

ウェブサイトを最適化するためのテクニックは本当に存在するのでしょうか?

A5 フォーラムで、SEO 最適化のためのコツがあるかどうか尋ねる初心者を見ました。私の答えは、はい...

Google、Amazon、Alibaba がいずれもこの市場に参入しました。エッジコンピューティングの可能性は何でしょうか?

注: CBinsights は最近、エッジ コンピューティング レポートをリリースしました。著者はい...

マイクロソフト、Bingショッピング検索を促進するために反グーグルウェブサイトScroogledを立ち上げ

クリスマスが近づくにつれ、米国ではショッピングシーズンが始まり、Google ショッピング検索にもす...

情報ストリーム広告チャネルの引用と掲載に関する 7 つの実践ガイド (2016 年更新)

この記事の内容:情報フロー広告とは?情報フロー広告入門表示フォームチャネル引用申請プロセス舞台裏の運...

検索エンジンアルゴリズム開発動向の分析

百度の現在の国内検索エンジン市場における独占状態は、短期間で覆される可能性は低い。しかし、アルゴリズ...

SEO基準を満たすウェブサイトのホームページのタイトルの書き方

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますSEO 基...

IPO前に知乎を解体

「招待ありがとうございます。私は今モンゴルにいて、空母から降りたところです。」 「サークルが小さすぎ...

vpscheap-$28/年/512MBメモリ/10GB SSD/2コア/1000MB/無制限トラフィック

vpscheap.netは現在、シカゴデータセンターのVPSのプロモーションを行っています。メモリを...

液浸冷却と AIML 統合がエッジ コンピューティングに革命をもたらす

急速に進化する今日のテクノロジー環境では、人工知能 (AI) と機械学習 (ML) とエッジ コンピ...

Appleは、ユーザーのプライバシーの収集に関するCCTVの質問に回答

7月11日、CCTVは「ニュースライブ」番組で、アップルの携帯電話でこのソフトウェアが使用されている...

エッジコンピューティングのセキュリティ上の懸念: ローカル IT の脅威を軽減する

コンピューティング デバイスをデータ ソースの近くに配置することで IT の脅威の状況が変わり、エッ...