ホーム テクノロジー DEVOPS 非公開: Kubernetes 入門: 初心者向けの入門

Kubernetes 入門: 初心者向けの入門


Kubernetes は、コンテナ開発プロセスを自動化する最も人気のあるオープンソース ソフトウェアです。

Cloud Native Computing Foundation (CNCF) による年次調査によると、96% の組織が K8 を使用しているか、使用を検討しています。よく観察すると、世界中で 580 万人の開発者が Kubernetes を使用しており、これは世界中のバックエンド開発者の 31% に相当します。

スケーラビリティ、可用性の向上、導入時間の短縮を通じてテクノロジーを活用できるため、好まれています。多くの開発者は、Docker (CLI に依存して一度に 1 つずつコンテナと対話する包括的なツール) を使用してコンテナの軌道を開始しますが、K8s は、回路図を通じてアプリケーションとそのインフラストラクチャを定義するための高レベルの抽象化を提供します。協力することができます。

この記事は、Kubernetes を初めて使用する場合に向けて、入門部分を支援し、開始するための洞察を共有するように特別に作成されています。 K8 が開発者としてデジタル製品を大幅に強化するのにどのように役立つかを学びます。

Kubernetes とは何ですか? なぜそれが必要なのでしょうか?

Kubernetes は、コンテナ化されたアプリケーションの展開、スケーリング、管理の自動化に使用されるオープンソースの調整エンジン (フレームワーク) です。これには、予測可能性と可用性の処理が含まれます。

簡単に言えば、コンテナ化したアプリケーションについて考えてみましょう。アプリケーション ユーザーにサービスを提供するには、複数のコンテナを実行する必要があります。これらのコンテナを管理する必要がある場合、心配が生じます。コンテナーは必ずしも同じマシン上にあるとは限らないため、作業がより複雑になります。では、この問題の解決策は何でしょうか?

Kubernetes は、これらすべてのプロセスをシームレスに処理する効率的な方法を提供することで役に立ちます。 K8 を Docker のようなコンテナ エンジンに喩えるかもしれませんが、それはコンテナ オーケストレーターです。これから開発を始める人は、K8s がオーケストレーションをどのように行うかについて心配する必要はありません。アプリケーション用に K8s クラスターをセットアップすることはおそらくありません。これについては後ほど詳しく説明します。

ただし、インフラストラクチャ チームがセットアップしたクラスターと対話することになります。操作するオブジェクトについてよく理解しておくことが重要です。ただし、その前に、その下で何が起こっているのかを理解するために、そのアーキテクチャの概要を理解する必要があります。

Kubernetesの特徴

Kubernetes には、コンテナーやその他の関連インフラストラクチャを実行するための幅広い機能を備えた機能がいくつかあります。以下にリストを示します。

  1. 自動化されたロールアウト、スケーリング、ロールバック– K8s は、指定された数のレプリカの作成、適切な (最適な) ハードウェアへの分散、ノードがダウンタイムの場合のコンテナーの再スケジュールをロボット化します。需要や CPU 使用率などのニーズの変化に基づいて、レプリカを即座にスケールできます。
  2. サービスの検出、負荷の安定化、ネットワークへのエントリ– Kubernetes は、内部サービスの検出やパブリック コンテナの公開など、独自のネットワーキング ソリューションを提供します。
  3. ステートのあるアプリケーションとステートのないアプリケーション– 初期の頃、K8 は主にステートレス コンテナーに焦点を当てていました。テクノロジーがさまざまな分野で進化するにつれて、ステートフル アプリケーションを表す組み込みオブジェクトに対応できるようになりました。承認されているため、あらゆるアプリケーションを Kubernetes 上で実行できます。
  4. ストレージ規制– ローカル ファイル システム、ネットワーク共有、クラウドのいずれであっても、Kubernetes はコンテナ上で実行されているアプリケーションに永続ストレージを提供 (抽象化) します。また、抽象化により、基盤となるインフラストラクチャに関係なくストレージ要件を定義できるようになります。これはこの記事の範囲を超えていますが、永続ボリューム (PV)、永続ボリューム要求 (PVC)、ストレージ クラス、ボリューム プラグインなどの原則を通じて機能します。
  5. 宣言的状態– K8s は、オブジェクト マニフェストと呼ばれる Yet Ain’t Markup Language (YAML) ファイルを使用して、クラスターに望ましい状態を指定します。マニフェストは、クラスターの外観を決定します。これには、必要なアプリケーション インスタンスやネットワーク ルール、その他の構成が含まれますが、これらに限定されません。マニフェストを適用すると、K8s はすべての状態遷移を自動的に処理します。これを行うためのスクリプトを記述する必要はありません。
  6. 複数の作業環境– Kubernetes の使用は、クラウドまたは開発者ワークステーションに限定されません。ほぼすべてのディストリビューションが、特定のユースケースに合わせて利用できます。 Amazon Web Services、Google Cloud、Microsoft Azure などの主要なクラウド テクノロジー プロバイダーに注目してください。これらはすべてマネージド Kubernetes サービスを提供する一方、 MinikubeK3などの単一ノードのディストリビューションはローカルで使用できることがわかります。
  7. 超拡張性– K8s は多くの機能を集めたものです。それだけでは十分ではないかのように、拡張機能を使用してその機能を加速できます。カスタムのオブジェクト タイプ、演算子、およびコントローラーを構築して、ワークロードを合理化できます。

Kubernetes アーキテクチャ

Kubernetes アーキテクチャの中核は、1 つのマスター ノードと 2 つのワーカー ノードで構成されます。マスター ノードはクラスター内のショットを呼び出し、ワーカー (スレーブ) ノードはマスターの決定に従ってアプリケーションを実行します。

出典: kubernetes.io

さらに詳しく説明します。

マスターノード

マスター ノードはクラスターの状態を決定し、特定の各ノードのアクションを決定します。マスターノードのセットアップにはいくつかのプロセスが必要です。

  1. APIサーバー
    すべてのクラスター通信はここに基づいています。これは、すべてのクラスター コンポーネントが情報を交換できるようにするゲートウェイです。 Kubernetes API を公開します。ここで果たされる主な役割は 2 つあります。 1 つ目は、ユーザーがクラスターと対話できるようにするエントリー ポイントです。たとえば、 Kubectl を使用するときに requ5est を送信します。 2 つ目は、リクエストを認証および検証するためのゲートキーピングです。この場合、特定のユーザーのみがリクエストを実行できます。
  2. スケジューラ
    スケジューラは、アプリケーションまたは Kubernetes ワークロード オブジェクトをワーカー ノードに割り当てます。ここで、スケジューラはリソース要件に基づいてノードにポッドを配置します。ポッドについて話す場合、それは Kubernetes におけるデプロイメントの小さな単位にすぎません。
  3. コントローラーマネージャー
    このユニットは、ノード障害などのクラスターを維持して、正しい数のポッドを維持します。ポッドの停止などのクラスター状態の変化を検出し、ポッドを元の状態に復元しようとします。たとえば、ポッドが誤って停止した場合、コントローラー マネージャーはスケジューラに、どのノードが代わりに新しいポッドをスピンアップするかを承認するよう要求し、 kubelet が新しいポッドをスピンアップします。
  4. etcd
    クラスター脳とも呼ばれます。ユニットは、クラスター構成のキー値ストアです。これは、クラスターのすべての変更がここで行われることを意味します。キー値分散ストアを保存することで、クラスターをバックアップできます。ただし、ここにはクラスター状態データのみが保存され、アプリケーション データは保存されないことに注意してください。このユニットは、特にクラスターの状態情報を保持し、それを前のプロセスに利用してクラスターに関する認識を確立するために使用されます。

スレーブノード

すべてのスレーブ ノードには 3 つのノード プロセスがインストールされており、K8 がスレーブ ノードと対話し、すべてのノード内で個別にポッドを起動できるようになります。必要なプロセスは次のとおりです。

  1. キュベレット
    これは、コンテナー実行レイヤーの実行を実行する Kubernetes の主要なサービスです。この部分を取り出すと、Kubernetes は Key-Value ストアで承認された REST API に他なりません。デフォルトでは、K8s はコンテナ アプリケーションを実行します。コンテナーは常に相互に隔離され、また基盤となるホスト システムからも隔離されます。これは、個々のアプリケーション管理を相互に分離したり、物理または仮想インフラストラクチャから分離したりするための分析効果があることが証明されています。

    API アドミッション コントロールはポッドを拒否したり、追加の制約を追加したりできますが、特定のノードでどのポッドが実行されるかを最終的に承認するのは、スケジューラやデーモンセットではなく、 kubeletです。要約すると、 kubelet はノードとコンテナーと対話します。また、構成ファイルを取得し、コンテナー ランタイムを使用してポッドを起動します。
  2. コンテナランタイム
    このセクションではコンテナを実行します。たとえば、Docker、rkt、または containered を使用して、コンテナーの仕組みのセクションをもう少し詳しく説明します。
  3. キューブプロキシ
    このユニットは、ロード バランシングの場合など、共通のポリシーに基づいてノード ポッド グループの抽象化レイヤーを提供します。すべてのノードは Kube プロキシを適用して、動的ポッドにアクセスするクライアントに仮想 IP アドレスを提供します。この構造は、低パフォーマンスのオーバーヘッドを維持しながら負荷分散を実現するソリューションです。

コンテナ化の仕組み

コンテナ化では、ソフトウェア アプリケーションの必要なすべての部分を 1 つのユニットに仮想化することが必要になります。コンテナーの下には、ライブラリ、バイナリ、および必要なすべてのアプリケーション構成のコレクションがあります。ただし、カーネル リソースや仮想化ハードウェアは含まれません。

最終的には、リソースの概要を示すコンテナ ランタイムを「上で」実行します。コンテナーには基本的なコンポーネントとアプリの依存関係のみが含まれるため、他の仮想マシンとは異なり軽量で高速です。

関連記事:コンテナと仮想マシン: 違いの説明

Kubernetes をインストールしてセットアップする方法

私は理論的なことに多くの時間を費やしてきました。カスケード セクションは戦術的なもので、コンテナーの実践的な経験が必要になります。このチュートリアルでは、特に Windows オペレーティング システムへのインストールについて説明します。

Windows を使用する場合、インストールを行う方法は複数あります。コマンド ラインまたはグラフィカル ユーザー インターフェイスを選択できます。ただし、次の要求仕様を満たしていることを確認する必要があります。

ハードウェアには、少なくとも 2 GB のメモリとワーカー ノード用に 700 MB を備えたマスター ノードが必要です。ソフトウェア要件については、Hype-v、デスクトップ用 Docker、一意の Mac アドレス、およびすべてのノードの一意の製品 UUID です。ここでは段階的なアプローチを示します。

Hyper-V のインストールとセットアップ

Hyper-V は Windows のデフォルトの仮想化ソフトウェアです。本質的に、これは強化された VirtalBox です。これにより、Microsoft GUI またはコマンド ラインで仮想マシンを管理できるようになります。 Hyper-V を有効にするには、次の手順に従います。

  1. コントロールパネルを開きます。
  2. 左側のパネルからプログラムをクリックします。
  3. [プログラムと機能] ページで、[Windows の機能の有効化または無効化] をクリックします。
  4. Windows の Hyper-V およびハイパーバイザー機能を選択します。
  5. 次に、このステップで [OK] を選択します。新しい設定を有効にするには、マシンを再起動する必要があります。

場合によっては、すべてが適切に構成されていることを確認するために、PC が複数回再起動されることがあります。 Power Shell で次のコマンドを入力すると、インストールが成功したことを確認できます。

Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V

画面に'enabled 」状態が表示されていることを確認します。

Docker のインストール

すでに学習したように、K8s はコンテナ上に構築されたコンテナ オーケストレーション ツールです。この場合、Docker が良い選択です。 K8s は Docker と通信し、エンタープライズ レベルですべてを管理します。 Windows 用Docker をダウンロードして、動き始めましょう。なぜ Docker Desktop を使用する必要があるのか​​疑問に思っている場合は、Docker 化された (コンテナー化された) アプリケーションの開発、配布、実行を簡素化するために Docker Desktop が推奨されています。

これは、Hyper-V とネットワークを使用して Windows 上で Docker アプリを構築する最速の方法でもあります。インストールが成功すると、Docker が実行されている限り、どの端末からでも常に Docker にアクセスできるようになります。インストールに関する詳細なガイドについては、 Docker の公式ドキュメントを参照してください。インストール後にアイコンが隠れるなどの問題が発生した場合は、マシンを再起動することで問題を解決できます。

Kubernetesのインストール

Docker GUI を使用すると、設定を構成し、Kubernetes をインストールして有効にすることができます。 K8 をインストールするには、次の手順に従います。

  1. Docker トレイ アイコンを右クリックし、プロパティを選択します。
  2. 「プロパティ」をクリックした後、ドロップダウンメニューから「設定」を選択します。
  3. 左側のパネルで「Kubernetes」を選択し、「適用」をクリックします。

その後、Docker はいくつかの追加のパッケージと依存関係をインストールします。インターネットの速度に応じて、このプロセスには約 5 ~ 10 分かかります。 Docker アプリを使用すると、すべてが正しく動作していることを確認できます。

Kubernetes アプリは CLI を使用してデプロイできるため、デフォルトではインストールされていない K8s ダッシュボードのインストールが必要になる場合があります。次の手順に従ってダッシュボードをインストールします。

  1. YAML 構成をダウンロードします。
  2. 次のコードを使用してアプリケーションをデプロイします. Kubectl apply -f .\recommended.yaml
  3. kubectl.exe get -f .\recommended.yaml.txtによって、すべてが適切に設定されていることを確認します。

ダッシュボードにアクセスするには、Power Shell (CMD ではなく) で次のコマンドを実行します。

  1. 次のコードを実行します((kubectl -n kube-system describe secret default | select-string “token:”) – split “+”)[1]
    • 生成されたトークンをコピーし、 kubectl proxyを実行します。
  2. ブラウザでこのリンクを開きます。
  3. 「トークン」をクリックして、ここにトークンを貼り付けます。
  4. サインイン。

ここまでたどり着けば、画面に K8s ダッシュボードが表示されるはずです。 CLI を使用して難しい作業を行わなくてもアプリを管理できるようになりました。

こちらもお読みください: Ubuntu 18 に Kubernetes をインストールする方法

Kubernetes クラスターを作成および管理する方法

ここでフォローアップを行った場合は、ホストに Kubernetes が正常にインストールされているはずです。次に、次の手順に従って、クラスター上で簡単な管理を作成して実行します。

  1. ネットワークの構成– ここでは、クラスター ノード間のネットワークを設定する必要があります。相互に通信できるようにします。
  2. クラスター認証のセットアップ– クラスターアクセスのための認証および認可メカニズムを作成します。
  3. マスターコンポーネントをセットアップします。 API サーバー、スケジューラー、コントローラー マネージャーが関係します。
  4. ワーカー ノードに参加する– クラスター セットアップ プロセスによって提供される構成ファイルを使用して、ワーカー ノードをクラスターに接続します。
  5. アドオンの展開– 拡張機能をインストールしてクラスターの機能を強化できます。
  6. ワークロードの管理– アプリをデプロイする時期が来ました。

これはクラスター作成プロセスの概要にすぎませんが、いくつかのコマンドを含む多くの手順が必要です。デプロイ前にクラスターを作成する方法に関する公式ドキュメント ガイドは次のとおりです。それはあなたの導きの手となるはずです。

Kubernetes を使用して最初のアプリケーションをデプロイする方法

K8s を使用する場合の最も一般的なコマンドはkubectl action resourceです。これを使用すると、指定したリソースの作成や削除などの特定のアクションを実行できます。

行き詰まった場合は、特定のサブコマンドの後に--helpを使用すると、追加情報を取得できます。

たとえば、 Kubernetes get nodes --helpkubectl create deployment Kubernetes-bootcamp –image=gcr.io/google-samples/Kubernetes-bootcamp:v1コマンドを使用して、最初の K8s アプリをデプロイします。

最後の言葉

このガイドは、Kubernetes テクノロジーへの入り口となります。 Kubernetes の利点、機能、アーキテクチャについて学習しました。幸いなことに、作業を進めるには、いくつかのポインタ (外部リソース) を参照する必要があったかもしれません。物事が内部でどのように機能するかを説明しました。

初心者にとって技術スタック全体を把握するのは大変なことのように思えるかもしれませんが、この投稿は K8s を始めるためのスムーズなガイドラインです。このテクノロジーを自信を持って使用できるようになるには、少し練習する必要があるため、参照として Kubernetes の公式ドキュメントを参照してください。練習すればするほど、より早く K8 のエキスパートになれるでしょう。

次に、初心者がマスターできる Kubernetes チュートリアルを確認してください。

「 Kubernetes 入門: 初心者向けの入門」についてわかりやすく解説!絶対に観るべきベスト2動画

Kubernetes 超入門