導入: Kubernetes は最近大流行しており、すべての主要なクラウド サービス プロバイダーがクラウド ネイティブ アプリケーションを展開するためのソリューションとしてこれを採用しています。企業が Kubernetes を受け入れ始める重要な機能とツールの利点は何ですか?この記事の著者は体系的な要約をしています。 「オーケストレーションのない行動は燃え尽きであり、行動のないオーケストレーションは管理である。」 振り付けのない行動は失敗に終わり、行動のない振り付けはマネジメントであり、行動と振り付けがリーダーシップです。 ― オリン・ウッドワード
これは、Google が開始したオープンソース プロジェクトであり、Borg から派生し、Google 社内で数年間使用され、現在はコンテナ管理に使用されています。現在、CNCF によってホストされています。 Kubernetes(略称:K8S)は、コンテナを通じてCPUやメモリなどのリソースの使用率を最適化し、複数のノード間でアプリケーションを効率的に分散できるようにする抽象化です。 K8S は、ベアメタルまたは任意のクラウド インフラストラクチャ プロバイダー上のどこでも実行できます。新しいツールはクラウドに依存せず、ノード/ホストを直接活用するのではなく、インフラストラクチャ内でのコンテナの展開とスケジュールに重点を置いています。 K8S が提供するプラットフォーム機能の一部は次のとおりです。
Kubernetes アーキテクチャ Kubernetes クラスターは、マスター ノードとワーカー/スレーブ ノードのセットで構成されます。 Kubernetes マスター ノードのコンポーネントは次のとおりです。
Kubernetes ノードにインストールされるコンポーネントは次のとおりです。
可用性が高く、フォールト トレラントな Kubernetes の運用と展開には、複数のマスター ノードと個別の etcd クラスターが必要です。 3 台の API サーバーを実行している場合は、サーバーに負荷を適切に分散するためにネットワーク ロード バランサーが必要になります。 ***残る問題は、クラスターの状態を維持し、ノードを割り当てるために、コントローラー マネージャーとスケジューラーを管理する 3 つのロールが必要であることです。より効率的かつ確実に行うには、実際の変更は 1 人のアクターのみが実行する必要がありますが、マシンのダウンタイムに備えて他のインスタンスも必要です。この問題を解決するには、API でリース ロックを使用してリーダー選出を実行します。これを使用するためのフラグは、leader-elect です。 Kubernetes は、次のいずれかの方法で Pod 間ネットワークを実装します。
クラスター内での 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 つの種類があります。
各プローブには通常、次の 3 つの結果があります。
水平自動スケーリング機能 自動スケーリングでは、負荷に基づいてコンピューティング リソースが使用されます。 K8S スケール ポッドは、Horizontal Pod Autoscaler オブジェクトを自動的に使用します。このオブジェクトは、Heapster からメトリック データを取得し、それに応じてポッドの数を減らしたり増やしたりします。たとえば、自動スケーリングがメモリ使用率に基づいている場合、コントローラーはポッド内のメモリ使用量の監視を開始し、容量に基づいてレプリカ数をスケーリングします。 サービス検出 Kubernetes ポッドは一時的なものであり、ReplicationController は任意のノードでそれらを動的に作成するため、クラスター内のサービスを検出するのは困難です。サービスは、クラスター内で通信するために IP アドレスと動的ポートを検出する必要があります。 それを検索する主な方法は、環境変数と DNS の 2 つです。 推奨されるのは、クラスター アドオンとして利用できる DNS ベースのサービス検出です。クラスター内の新しいサービスを追跡し、各サービスの DNS レコードのセットを作成します。 ネットワーク クラスターを完全に管理するには、ネットワークを正しく設定し、次の 3 つのネットワークの問題に対処する必要があります。
Kubernetes は幅広いネットワーク オプションを提供します。また、コンテナの一般的なプラグイン アーキテクチャである Container Network Interface (CNI) プラグインもサポートされるようになりました。現在、Kubernetes、Mesos、CloudFoundry などの複数のオーケストレーション ツールをサポートしています。 さまざまなオーバーレイ プラグインがあります。
仕える Kubernetes サービスは、マイクロサービスを提供するために一連のポッドに通信をルーティングする抽象化です。 Kube-proxy は各ノード上で実行され、一連の iptable ルールを設定してサービスを管理します。 サービスを設定するには、次の 3 つのモデルがあります。
ConfigMap とシークレット ConfigMap を使用すると、複数の環境間でコンテナ イメージの一貫性を保ちながら、環境ベースの構成を挿入できるようになります。これらはマウントされたボリュームまたは環境変数を介して注入され、キー/値形式で値を保存できます。 シークレットは、パスワード、OAuth トークンなどの機密データを保存するために使用されます。 ローリングデプロイメントとロールバック デプロイメント オブジェクトは、ロールバック メカニズムをサポートするために 1 つ以上のレプリカ セットを保持します。つまり、デプロイメント構成を変更するたびに新しいレプリカ セットが作成され、ロールバック オプションが存在するように以前のバージョンが保持されます。特定の時点でアクティブになるレプリカ セットは 1 つだけです。 ローリング デプロイメントの場合、必要なポリシー タイプは RollingUpdate と minReadySecs であり、これはアプリケーションがトラフィックの処理に費やす時間を指定します。アプリケーション ポッドの準備ができていないときにデフォルト状態のままにしておくと、使用できなくなります。これは次のコマンドで実行できます。 または、 デプロイメント yaml ファイルの内容を置き換えて、次のコマンドを実行します。 新しいバージョンが期待どおりでない場合は、次のコマンドを実行して以前のバージョンにロールバックできます。 希望するバージョンが以前のバージョンと異なる場合は、次を実行します。 ログ記録 アプリケーションの動作を監視するには、ログを調べる必要があります。各ポッドは複数のログを生成します。ダッシュボード UI でログの検索を開始するには、ログを収集してログ ビューアーに集約する何らかのメカニズムが必要です。これを文脈に沿って説明すると、Fluentd は CNCF の一部でもあるオープンソース ツールであり、Elastic Search および Kibana と統合されています。 |
>>: WOT2018 シェン・ジアン:58 Express によるマイクロサービス アーキテクチャの優れた実践
Red Hat は、コミュニティの力を活用して、安定性、信頼性、高性能を備えたクラウド テクノロジー...
ほとんどのウェブマスターは、日々の業務で何をすべきかを知っていると思いますが、日々のウェブサイトのメ...
昨今、インターネットやデジタル化の発展により、データ保存の重要性が顕著になってきています。同時に、近...
現在、SEO最適化作業を行っている多くの友人は、Baiduプロモーションの背景がキーワード選択に適し...
Sentris は、3 年間で 5 ドルの VPS というビッグ ニュースを発表した後、本日、別のビ...
仮想世界でロボットを訓練して、現実世界でより優れたロボットにしましょう。メタバース(またはオムニバー...
シンガポールとオーストラリアにあるOVHの2つのデータセンターのVPSが、長い間在庫切れだったが、再...
今日のテクノロジー主導の世界では、企業が収益を増やすために人工知能を活用することが必要不可欠になって...
SEO 担当者になるのは実はとても簡単です。なぜそう言うのでしょうか? 記事を書いて外部リンクを投稿...
数日前、Lu Songsong のブログで、最近の Google PR アップデートにより、多くのウ...
[51CTO.comより引用] 2019年12月18日、第14回中国IDC業界年次式典のメインフォー...
Flink や Spark に代表される分散ストリーム バッチ コンピューティング フレームワークの...
環境: SpringBoot2.7.12この記事では、Spring Integrationが提供する...
フォーティネットが後援する 2023 年クラウド セキュリティ レポートでは、世界中のさまざまな業界...
正規表現 (コードでは regex、regexp、または RE と略されることが多い) は、コンピュ...