K8s と kubernetes の導入とクラスター アーキテクチャを始めるための必読書

Kubernetes とクラスター アーキテクチャの概要

1. コンテナオーケストレーションツールについて理解する

  • ドッカーマシン
    • 主にDockerホストを準備するために使用されます
    • 現在は非推奨になりました
    • docker デスクトップの使用をお勧めします
  • ドッカー構成
    • Compose は、複数コンテナーの Docker アプリケーションを定義および実行するためのツールです。
    • Compose を使用すると、YAML ファイルを使用してアプリケーションのサービスを構成できます。
    • 単一のコマンドを使用して、構成からすべてのサービスを作成および開始できます。
  • ドッカーの群れ
    • Dockerエンジンに組み込まれています
    • Docker エンジンのクラスターレベルの管理
  • 分散設計により、クラスターがより多くのリソースを持ち、より多くのホストを管理できるようになります。
    • YAML ファイルを通じてアプリケーション サービスの必要な状態を定義する宣言型サービス モデル
    • ユーザーの期待を維持するために、サービスの規模を拡大または縮小することができます。
    • サービスディスカバリ
    • 負荷分散
    • ローリングアップデートなど
    • ドッカーサービス
    • ドッカースタック
  • Kubernetes
    • コンテナ クラスタ管理システムとして、Kubernetes は、コンテナ クラウド プラットフォーム内の複数のホスト上のコンテナ アプリケーションを管理するために使用されます。Kubernetes の目標は、コンテナ化されたアプリケーションのデプロイをシンプルかつ効率的にすることであり、Kubernetes はアプリケーションのデプロイ、計画、および更新を提供します。メンテナンスメカニズムの完全なセット。
    • Kubernetes は固定のコンテナ形式を必要としませんが、Kubernetes はコンテナ オーケストレーションに独自の API とコマンド ライン インターフェイスを使用します。
    • Docker コンテナに加えて、Kubernetes は Containerd、rkt、CoreOS などの他のさまざまなコンテナもサポートしています。
    • Kubernetes は、コンテナのスケジューリング、リソース管理、サービス検出、ヘルスチェック、自動スケーリング、更新とアップグレードなどを実装できる自己完結型の管理ツールです。また、コピー数、サービス要件 (IO 優先度、パフォーマンス優先度、など) アプリケーション テンプレート設定内)、リソース使用間隔、期待される状態を達成するための特定の要件に一致するラベル (ラベルなど) など。これらの機能は開発者を征服するのに十分であり、さらに Kubernetes には非常に活発なコミュニティがあります。これにより、ユーザーのニーズに合わせてオーケストレーション コンテナーを拡張するためのより多くのオプションが提供されます。ただし、Kubernetes は独自の API インターフェースを使用するため、コマンド体系が別システムとなり、アプリケーションの敷居が比較的高くなります。
  • メソス+マラソン
    • Apache Mesos は、分散システム カーネル用のオープン ソース クラスター マネージャーであり、Docker Swarm や Kubernetes よりもずっと早くに登場しました。
    • コンテナベースのアプリケーション用のオーケストレーション フレームワークである Marathon と組み合わせることで、Docker Swarm や Kubernetes に代わる効果的な代替手段を提供します。
    • Mesos は、同じクラスター マシン上で複数の分散システム タイプを実行し、リソースをより動的かつ効率的に共有できます。
    • Messos は、サービス障害チェック、サービス公開、サービス追跡、サービス監視、リソース管理、リソース共有も提供します。
    • Messo は数千のノードまで拡張できます。
    • Mesos は、多数のサーバーがあり、大規模なクラスターを構築したい場合に便利です。
    • ビッグ データ フレームワーク Hadoop、Kafka、Spark など、多くの最新のスケーラブルなデータ処理アプリケーションを Mesos 上で実行できます。
    • しかし、大規模で包括的であるということは、それに対応する複雑さと困難を意味することがよくあります。これは Messos に関してはまったく当てはまります。同じ API を使用する Docker と Docker Swarm とは異なり、Mesos とマラソンは独自の API を持っているため、他のオーケストレーターよりも優れています。システムはさらに複雑です。Apache Mesos は、混合環境に最適なオーケストレーション ツールです。Apache Mesos には、コンテナー アプリケーションと非コンテナー アプリケーションが含まれているため、Messos は非常に安定していますが、ユーザーがアプリケーションを迅速に学習することがより困難になり、アプリケーションとデプロイメントのシナリオで促進することも困難になります。 . 理由の一つ。
分散リソース管理フレームワーク 主な特徴 述べる
Apache メソス 強力だがシステムが複雑で使いにくい Twitterが2019年の廃止を発表
Docker Swarm Docker エンジンに統合されており、個別にインストールする必要はありませんが、機能は少なくなります Alibaba Cloud は 2019 年に廃止を発表
Google Kubernetes 強力な機能だが学習コストと管理コストが高い 現在のところ代替品はなく、多くの分野で使用できます。

2. Kubernetes について理解する

2.1 kubernetesの意味、起源、帰属

2.1.1 意味

ギリシャ語: 操舵手、パイロット

ここに画像の説明を挿入します

2.1.2 起源

  • Google Borg より

  • golang言語を使用して開発

  • k8sと呼ばれます

2.1.3 帰属

現在はCNCFに所属

  • クラウド ネイティブ コンピューティング基盤

  • クラウド コンピューティングをユビキタスかつ持続可能なものにすることに特化したオープンソース ソフトウェア基盤です。

  • 公式: http://www.cncf.io

ここに画像の説明を挿入します

2.2 Kubernetes バージョン

  • 2014 年 9 月に最初の正式バージョンがリリース
  • バージョン 1.0 は 2015 年 7 月に正式にリリースされました
  • 安定版は 1.23 になりました
  • 主な貢献者: Google、Redhat、Microsoft、IBM、Intel
  • コードホスティング github: https://github.com/kubernetes/

ここに画像の説明を挿入します

2.3 Kubernetes ユーザー

  • 2017 年、docker は kubernetes のネイティブ サポートを正式に発表しました。
  • RedHat の PaaS プラットフォーム OpenShift の中核は kubernetes です
  • Rancher プラットフォームの中核は kubernetes です
  • 現在、ほとんどの国内企業は kubernetes を使用して従来の IT サービスを変換し、効率的な管理を実現できます。

2.4 Kubernetes URL

  • 公式ウェブサイト

https://kubernetes.io/

ここに画像の説明を挿入します

https://kubernetes.io/zh/

ここに画像の説明を挿入します

  • 中国人コミュニティ

ここに画像の説明を挿入します

3. Kubernetes アーキテクチャ

3.1 ソフトウェアアーキテクチャの説明

  • セントラルノードを備えた分散アーキテクチャ

    • Hadoopクラスタ
    • セフクラスタ
  • 中央ノードのない分散アーキテクチャ

    • グルスターFS
  • Kubernetes は中央ノードを備えた分散アーキテクチャです。つまり、マスター管理ノードが存在します。

    • マスターノード
      • 中央ノード
      • マネージャー
      • シンプルな名前
        • マスターノード
    • ミニオンノード
      • 作業ノード
      • ワーカー
      • 電話するだけ
        • ノードノード
        • ワーカーノード

3.2 Kubernetes アーキテクチャ図

ここに画像の説明を挿入します

ここに画像の説明を挿入します

4. Kubernetes クラスターノードのコンポーネント

4.1 マスターノードコンポーネント

マスター ノードはクラスター管理センターです。そのコンポーネントはクラスター内のどのノードでも実行できます。ただし、管理の便宜上、マスターのすべてのコンポーネントは 1 つのホストで実行され、ユーザー コンテナーはこのホストでは実行されません。

マスターコンポーネントには次のものが含まれます。

  • APIサーバーへ

kubernetes API を公開するために使用され、リソースのリクエスト/呼び出し操作はすべて、kube-apiserver によって提供されるインターフェイスを通じて実行されます。

  • kube-コントローラー-マネージャー

コントローラー マネージャーはコントローラーの管理に使用され、クラスター内の通常のタスクを処理するバックグラウンド スレッドです。

  • kubeスケジューラー

    ノードに割り当てられていない新しく作成されたポッドを監視し、ポッドを実行するノードを選択します。

  • ETCD

    すべてのクラスター データを保存するためのデフォルトのストレージ システムを提供するのは kubernetes です。

4.2 Node ノードコンポーネントの概要

ノード ノードは、ポッドの実行と保守、ボリューム (CVI) とネットワーク (CNI) の管理、およびポッドとサービス情報の保守に使用されます。

ノードのコンポーネントには次のものが含まれます。

  • キュベレット
    • コンテナのライフサイクルの維持 (ポッドの作成、ポッドの破棄) を担当し、ボリューム (CVI) とネットワーク (CNI) の管理も担当します。
  • 代理人になる
    • ホスト上でネットワーク ルールを維持し、接続転送を実行することにより、サービス (iptables/ipvs) を実装します。
    • いつでも apiserver と通信し、サービスまたはポッドの変更を apiserver に送信し、それらを etcd に保存し (高可用性クラスターとして使用可能)、サービスの実装を担当し、内部ポッドからサービスへ、および外部ノードからサービスへアクセスします。 。
  • コンテナランタイム
    • コンテナランタイム
    • ポッドやコンテナのイメージ管理と実際の運用を担当します。
    • docker/containerd/Rkt/Pouch/Kata などの複数のランタイムをサポート

ここに画像の説明を挿入します

4.3 アドオンの概要

アドオン(付属品)により機能が豊富になりますが、無くても実際の使用に影響はなく、本体プログラムと併用してご利用いただけます。

  • coredns/kube-dns: クラスター全体に DNS サービスを提供する責任を負います。
  • Ingress Controller は、クラスターへの外部アクセスを備えたサービスを提供します
  • Heapster/Metries-server はクラスター リソースの監視を提供します (コンテナーの監視には prometheus を使用できます)
  • ダッシュボードはクラスター GUI を提供します
  • フェデレーションはアベイラビリティーゾーン全体にクラスターを提供します
  • Fluentd-elasticsearch はクラスター ログの収集、保存、クエリを提供します

おすすめ

転載: blog.csdn.net/weixin_47758895/article/details/130566564