K8S 01 ----- K8S何を学びますか?

簡単な紹介

1は、KubernetesコードはGitHubの上でホストされている:https://github.com/kubernetes/kubernetes/

 

2、Kubernetesがあるオープンソースのクラスタ管理システムコンテナ、Kubernetesの目標はシンプルで効果的な(強力な)のアプリケーション展開コンテナを作ることで、Kubernetesが提供メカニズムのアプリケーション展開、計画、更新、メンテナンスをあなたができることでKubernetes:

  • アプリケーションの迅速な展開
  • 急速な拡大アプリケーション
  • 新しいアプリケーション機能のシームレスな接続
  • リソースを保存し、ハードウェアリソースの使用を最適化

 

3、コア機能が可能であるKubernetes コンテナの自己管理、(例えばユーザーなど、ユーザーの希望状態に応じて、コンテナで実行されているクラウドプラットフォームは、Apacheが実行されていたい、ユーザーは自動的に監視するために、Kubernetesそれを行う方法を心配する必要がないことを確認するために、その後、新しい、短い、聞かせてApacheが)サービスを提供してきました再起動して行く、管理者は、ミニチュアのサービスをロードプランナーが、同時に、Kubernetesもツールやシステムは、ユーザーが簡単に展開できるように、人間の側面を強化するために、適切な場所を見つけるためにさせることができます(カナリアの展開のような)独自のアプリケーション。

 

図4は、今Kubernetesは、に焦点を当て中断のないサービスの状態(例えば、Webサーバやキャッシュサーバなど)とネイティブクラウドプラットフォームのアプリケーション(のNoSQL)、近い将来、このようなバッチとして、クラウドサービスの様々な生産様々なプラットフォームをサポートしています、ワークフローと同様に、従来のデータベース。

 

5、Kubenetesにポッド内ポッドで動作するすべてのコンテナが関連する容器の一つ以上を運ぶことができ、ケースの後ろに、同じ容器内のポッドは、同じ物理マシン上に展開し、共有することができるであろう資源。ポッドはまた、これらの基は、コンテナ内のすべてのポッドによって容器にディレクトリの形で提供、または共有され、1つ以上のディスクボリュームO群(ボリューム)を含むことができる、ユーザーが作成し、システムの各ポッド健康や機械のための十分な能力を持っており、それがポッド障害やマシンであれば、その後、ただし、ノードエージェントがkubeletと呼ばれるコンテナが自動的にノード・エージェントを再起動されるコンテナの作成に失敗し、コンテナに似たコンテナを作成し、それを自動選択それは自動的に転送し、ユーザが複製コントローラを定義しない限り、起動しません。

 

図6に示すように、ユーザは、これらの操作Kubernetes簡略化するために、独自のポッドを作成して管理することができる2つの操作を:同じポッドポッドプロファイルに基づいて複数のコピーを配置、ポッドまたは吊り場合マシンハングアップしたとき或いはポッドが作成しましたKubernetes APIは移動挙動の一部が「複製コントローラー」と呼ばれて再起動する責任がある、それはテンプレートに従ってポッドを生成し、その後、システムはユーザーのニーズに合わせて、冗長性の多くを作成しますが、これらは冗長ポッドを形成アプリケーション全体、またはサービス、またはサービス・レベル。ポッドが作成されると、ソフトウェアが健康で自動的に、複製コントローラをハングアップマシンまたはをハングアップするので、システムは常に理由ならば健康ポッドとポッド、ポッドホストの状態を監視しますポッド、同じの元の状態を維持するために、ポッドの冗長性とまったく同じマシンを作成し、ポッドアプリケーションのより多くのマシンを共有することができます。

 

7、私たちはしばしば、例えば、私たちは基本的なメカニズムとして、グループのステータスを照会Kubernetesをポッドまたはポッドのグループの特定のアクションを制限したい、ポッドのセットを選択する必要があり、利用者は、API Kubernetesペーストグループの任意のオブジェクトに与えることができますキー:ラベルの値、そして私たちはラベルによって、関連Kubernetes APIオブジェクトのグループを選択することは、その後、特定の操作を実行することができるようになります、追加リソースそれぞれが(多くの)キーと値のセットがあり、その後、外部ツールこれらのキーを使用して値vluesは、注釈(コメント)と呼ばれている地図のオブジェクトを取り出します。

 

8、KubernetesはKubernetesがこれを達成するために、それは各ポッドのためのIPアドレスが割り当てられ、ユーザーが使用したい任意のポートを選択することを可能にするアドレス空間ではなく、動的に割り当てられたポートを、作成、特別なネットワークモデルをサポートしています。

 

図9に示すように、現代のインターネットアプリケーションサービスは、通常、より良いサービスのためには、建築、Kubernetesにおける抽象ようなサービスを提供して、サーバおよび対応するストレージサービスのキーと値のペアを格納するために使用されるWebスペースと受信メモリなどの多層構造を含んでそれは前に述べたラベルによって関連しているダイナミックポッド、一連の関連付けられている固定IPアドレスとDNS名を、提供し、私たちはそれに関連するポッドたち、関連付けることがしたかったポッド内のコンテナにアクセスするときこのアドレスは、要求はホームエージェント(KUBEプロキシ)に転送されますと、各マシンは、適切なバックエンドのコンテナに転送、ローカルプロキシを持っています。適切なバックエンド・コンテナの機構によって回転で選択Kubernetesは、これらの動的ポッドKUBE時間を追跡するプロキシので、IPアドレス、サービス(DNS名)、変更しない場合、置換されています。

 

10は、このようポッドなど、すべてのKubernetesリソースは、URIと呼ばれるものによって区別され、URIはUIDを持っている、URIの重要な部分です:オブジェクト、オブジェクト、という名前空間オブジェクト(ポッドなど)の名前を入力特定のオブジェクトタイプのために、同じ名前空間に、すべての名前は、オブジェクト名のみの場合には、異なっていて、名前空間を提供していません、この場合は、デフォルトの名前空間を想定しています。UIDは、時間的にも空間的にもユニークです

 

機能

1、ポータブル:パブリッククラウド、プライベートクラウド、ハイブリッドクラウド、クラウド複数(マルチクラウド)をサポート

、モジュラー、プラグイン技術を実装することができる、組み合わせることができる:図2は、拡張することができます

3、自動化:自動展開、自動再起動、自動レプリケーション、自動開閉式/拡張

 

デザインアーキテクチャ

Kubernetesのクラスタはノード剤含有kubelet マスター成分(APIは、スケジューラなど)、すべてが分散ストレージシステムに基づいています。下の写真は、Kubernetes アーキテクチャ図。

このシステムアーキテクチャ図では、サービスに入れワーキングノード上でサービスを実行すると、クラスタ化されたサービスレベルの制御ボード

②Kubernetesのノードは、実行中のアプリケーションコンテナを受けている必要不可欠なサービス、持っているマスターコントロール。

コースの各ノードでは、ドッカーを実行する必要がありますドッカーは、コンテナをダウンロードして実行するには、すべての特定の画像を担当することにします。 

④ Kubernetes主要由以下几个核心组件组成:

  • etcd 保存了整个集群的状态;
  • apiserver 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
  • controller manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
  • scheduler 负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
  • kubelet 负责维护容器的生命周期,同时也负责VolumeCVI)和网络(CNI)的管理;
  • Container runtime 负责镜像管理以及Pod和容器的真正运行(CRI);
  • kube-proxy 负责为Service提供cluster内部的服务发现和负载均衡;

除了核心组件,还有一些推荐的Add-ons

  • kube-dns 负责为整个集群提供DNS服务
  • Ingress Controller 为服务提供外网入口
  • Heapster提供资源监控
  • Dashboard提供GUI
  • Federation提供跨可用区的集群
  • Fluentd-elasticsearch提供集群日志采集、存储与查询

相关名词

(1kubelet

kubelet负责管理pods和它们上面的容器,images镜像、volumesetc

 

(2kube-proxy

  每一个节点也运行一个简单的网络代理和负载均衡(详见services FAQ )PS:官方 英文)。 正如Kubernetes API里面定义的这些服务(详见the services doc)(PS:官方 英文)也可以在各种终端中以轮询的方式做一些简单的TCPUDP传输。

  服务端点目前是通过DNS或者环境变量( Docker-links-compatible Kubernetes{FOO}_SERVICE_HOST  {FOO}_SERVICE_PORT 变量都支持)。这些变量由服务代理所管理的端口来解析。

 

(3Kubernetes控制面板

  Kubernetes控制面板可以分为多个部分。目前它们都运行在一个master 节点,然而为了达到高可用性,这需要改变。不同部分一起协作提供一个统一的关于集群的视图。

 

(4etcd

  所有master的持续状态都存在etcd的一个实例中。这可以很好地存储配置数据。因为有watch(观察者)的支持,各部件协调中的改变可以很快被察觉。

 

(5Kubernetes API Server

  API服务提供Kubernetes API PS:官方 英文)的服务。这个服务试图通过把所有或者大部分的业务逻辑放到不两只的部件中从而使其具有CRUD特性。它主要处理REST操作,在etcd中验证更新这些对象(并最终存储)。

 

(6Scheduler

  调度器把未调度的pod通过binding api绑定到节点上。调度器是可插拔的,并且我们期待支持多集群的调度,未来甚至希望可以支持用户自定义的调度器。

 

(7Kubernetes控制管理服务器

  所有其它的集群级别的功能目前都是由控制管理器所负责。例如,端点对象是被端点控制器来创建和更新。这些最终可以被分隔成不同的部件来让它们独自的可插拔。

  replicationcontroller(PS:官方 英文)是一种建立于简单的 pod API之上的一种机制。一旦实现,我们最终计划把这变成一种通用的插件机制。

 

おすすめ

転載: www.cnblogs.com/jinyuanliu/p/11272114.html