開発者がKubernetesを理解する方法

開発者がKubernetesを理解する方法

  [[382171]]

この記事はWeChatの公開アカウント「JAVA Daily Knowledge」から転載したもので、著者は+++++です。この記事を転載する場合はJAVA Rizhilu公式アカウントまでご連絡ください。

概要

JAVA 開発では、独自に構築した Docker リポジトリで docker run コマンドを使用すると、JAVA サービスを簡単にデプロイできますが、Docker を使用してアプリケーションをデプロイする場合、いくつかの問題があります。

  1. docker run は、作成されるコンテナーが単一のマシン上で実行されるため、サービスをデプロイする信頼できる方法ではありません。 Docker エンジンは、コンテナがクラッシュしたときやコンピュータが再起動したときにコンテナを自動的に再起動するなどの基本的な管理機能を提供します。しかし、マシンのクラッシュには対応できません。サービスの高可用性は保証されません。
  2. もう 1 つの問題は、サービスは通常、独立して存在するのではなく、データベースやメッセージ キューなどのように相互に依存していることです。多くの場合、サービスとその依存関係を 1 つのユニットとしてデプロイまたはアンデプロイする必要があります。

開発中に特に役立つアプローチは、Docker Compose を使用することです。 Docker Compose は、YAML ファイルを使用してコンテナーのセットを宣言的に定義し、それらのコンテナーをグループとして起動および停止できるツールです。

しかし、Docker Compose を使用する場合の明らかな問題は、1 台のマシンに制限されることです。サービスを確実にデプロイするには、Kubernetes などの Docker オーケストレーション フレームワークを使用する必要があります。

Kubernetes 入門

Kubernetes は Docker オーケストレーション フレームワークであり、Docker 上のソフトウェア レイヤーで、コンピューターのハードウェア リソースのグループを、サービスを実行するための単一のリソース プールに変換します。各サービスの必要な数のインスタンスを維持し、サービス インスタンスまたはマシンがクラッシュした場合でも、それらが常にオンラインであることを保証します。コンテナの柔軟性と Kubernetes の洗練性を組み合わせることで、サービスを展開する強力な手段となります。

Kubernetes には主に 3 つの機能があります。

  • リソース管理: コンピュータのグループは、CPU、メモリ、およびストレージ ボリュームで構成されるリソース プールと見なされ、コンピュータ クラスターは単一のコンピュータと見なされます。
  • スケジュール: コンテナを実行するマシンを選択します。デフォルトでは、スケジューリングではコンテナのリソース要件と各ノードで使用可能なリソースが考慮されます。また、アフィニティを持つコンテナを同じノードにデプロイしたり、特定のコンテナを別のノードにデプロイしたままにしたりすることもできます (アンチアフィニティ)。
  • サービス管理: マイクロサービス アーキテクチャ内の特定のサービスに直接マッピングできる、名前付きおよびバージョン管理されたサービスの概念を実装します。オーケストレーション フレームワークにより、必要な数の正常なインスタンスが常に実行されるようになります。リクエストの負荷分散を実装します。オーケストレーション フレームワークでは、サービスのローリング アップグレードを実行し、古いバージョンにロールバックすることもできます。

Kubernetes アーキテクチャ

Kubernetes アーキテクチャ

Kubernetes はマシンのクラスター上で実行されます。 Kubernetes クラスター内のコンピューターの役割は、マスター ノードと共通ノードに分かれています。クラスターにはマスターノードが数個(おそらく 1 個だけ)あり、通常のノードが多数あります。

「マスターノード」はクラスターの管理を担当します。 Kubernetes の「通常のノード」は「ワーカーノード」と呼ばれ、1 つ以上のポッドを実行します。 Pod は Kubernetes のデプロイメント ユニットであり、コンテナのグループで構成されます。

マスター ノードは、次のような複数のコンポーネントを実行します。

  • API サーバー: kubectl コマンドラインなどで使用される、サービスのデプロイと管理のための REST API。
  • Etcd: クラスターデータのキー値を保存する NoSQL データベース。
  • スケジューラ: POD を実行するノードを選択します。
  • コントローラー マネージャー: コントローラーを実行し、クラスターの状態が期待される状態と一致することを確認します。たとえば、レプリケーション コントローラーと呼ばれるコントローラーは、インスタンスを起動および停止することで、必要なサービス インスタンスが実行されていることを確認します。

通常のノードは、次のような複数のコンポーネントを実行します。

  • Kubelet: ノード上で実行される Pod を作成および管理します。
  • Kube-proxy: Pod 間の負荷分散を含むネットワークを管理します。
  • ポッド: アプリケーション サービス。

次に、Kubernetes にサービスをデプロイするために習得する必要がある主要な Kubernetes の概念を見てみましょう。これらの概念を習得することで、Kubernetes の核心を理解できるようになります。

Kubernetes の主要概念

Kubernetes は非常に複雑ですが、いくつかの「主要オブジェクト」の概念を習得すれば、Kubernetes を効率的に使用できるようになります。 Kubernetes は多くの種類のオブジェクトを定義します。開発者の観点から、最も重要なオブジェクトは次のとおりです。

  • ポッド:

Pod は Kubernetes の基本的なデプロイメント ユニットです。 IP アドレスとストレージ ボリュームを共有する 1 つ以上のコンテナーで構成されます。サービス インスタンスのポッドは通常、JVM を実行するコンテナーなどの単一のコンテナーで構成されます。ただし、場合によっては、Pod にサポート機能を実装する 1 つ以上の「サイドカー」コンテナーが含まれることがあります。たとえば、Nginx サーバーには、定期的に git pull を実行して Web サイトの最新バージョンをダウンロードするサイドカー コンテナーが存在する場合があります。 Pod のコンテナまたはそれが実行されるノードがクラッシュする可能性があるため、Pod の寿命は短くなります。

  • 展開:

デプロイメント: Pod の宣言的な仕様。デプロイメントは、必要な数の Pod インスタンス (サービス インスタンス) が常に実行されていることを保証するコントローラーです。ローリングアップグレードとロールバックによるバージョン管理をサポートします。

  • サービス:

アプリケーション サービスのクライアントに提供される静的/安定したネットワーク アドレス。これは、インフラストラクチャによって提供されるサービス検出の形式です。各サービスには IP アドレスとその IP アドレスに解決される DNS 名があり、1 つ以上のポッド間で TCP および UDP トラフィックの負荷を分散します。 IP アドレスと DNS 名は Kubernetes 内からのみアクセスできます。

サービスはデフォルトで ClusterIp モードを使用します。外部からサービスにアクセスする必要がある場合は、NodePort と LoadBalancer という 2 つの他のタイプのオブジェクトを使用する必要があります。

  • 構成マップ:

1 つ以上のアプリケーション サービスの外部化された構成を定義する、名前と値のペアの名前付きコレクション。 Pod コンテナの定義では、ConfigMap を参照してコンテナの環境変数を定義できます。 ConfigMap を使用してコンテナ内に構成ファイルを作成することもできます。 Secret を使用して機密情報 (パスワードなど) を保存できます。これも ConfigMap の形式です。

<<:  Kubernetes 上の Spark を簡単に

>>:  クラウドコンピューティングの未来はどうなるのか

推薦する

ユーザーエクスペリエンスと検索エンジンの親和性の両方を考慮したウェブサイトの設計方法

長い発展と変化の期間を経て、この基礎的なインターネット業界は、検索エンジンが人々の情報検索をますます...

スタートアップ プロジェクトに適したソフト コピーを作成するにはどうすればよいでしょうか? 60 ポイントを重視しますか、それともスキルや戦術を重視しますか?

月収10万元の起業の夢を実現するミニプログラム起業支援プランコピーライティングとソフト記事執筆の道で...

UCloud が「クラウド サービス ユーザー データ保護能力評価」の権威ある認証を初めて取得

最近、国内の権威あるクラウドコンピューティング評価システムであるTrusted Cloudが北京で記...

ウェブサイトのタイトル最適化 SEOの基本

ウェブサイトのタイトルはウェブサイトの魂です。タイトルの位置付けと書き方はウェブサイトの将来の発展に...

Weiboマーケティング:成果重視のマーケティング手法

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス1. コンテンツは We...

ソフトコピーライティングを理解せずにSEOを行うと、オンラインマーケティングへの道は困難で困難なものになります。

著者はかつて、SEO はインターネット マーケティングの易経であると述べました。この文は、SEO が...

Kafka ソースコード分析とブローカーエンドのグラフィック原理

[[277321]]まず、Kafka がトピックを作成する方法から始めましょう。 kafka-top...

SEO診断: 短命キーワードランキングの分析

長い間最適化を行っていると、キーワードランキングが短命になるという現象に遭遇したことがあるはずです。...

業界のウェブサイトを構築するのは簡単ですが、維持するのは困難です。

この記事は、私が1年間業界ウェブサイトを運営してきた経験についてのみ書いています。私は失敗者なので、...

Baidu SpiderがIISログに200 0 64を返す問題についてお話しましょう

最近、ウェブサイトのスナップショットが更新されていません。ウェブサイトのログでスパイダーアクセスを確...

アメリカの老舗eコマースサイト「CafePress」:「パーソナライズされた印刷物」のロングテールロジック

現在、インターネットで最もホットな言葉は、ソーシャル ネットワーキングと電子商取引です。今日は、パー...

起業環境の悪さから「西へ」向かうしかなかった:台湾人プログラマーの心の旅

はじめに:台湾の IT 環境がどのようなものであるかについて、私たちはほとんど注目していません。この...

tragicservers - 40% オフ/メモリアルデーセール/ロサンゼルス VPS

tragicservers は、米国の戦没将兵追悼記念日を記念して、KVM 仮想、1Gbps 帯域幅...

クラウドで災害復旧を実行する 5 つの効果的な方法

[[417417]]クラウドにおける災害復旧の 5 つのアプローチは、サービス レベル契約 (SLA...