第一次学习Kubernetes

Kubernetes是什么?

这是一个容器编排工具。

在中文中的原生释义是这样的:它的发音可以是 “库贝内提斯”、”库巴内提斯”等,没有固定的形式。它也被简写为 “k8s”。因为在 “kubernetes” 中的 “k” 和 “s” 之间有8个字符。

顺便提一下,Docker是另一种软件。

Docker 是一个单一的容器化平台,而 Kubernetes 则是一个用于管理多个容器的编排工具。

只有使用Docker或其他容器运行时,Kubernetes本身才无法创建容器。

容器编排是什么?

这是一种用于捆绑多个服务器(带有容器的主机)并控制其中容器的工具。

作为优点,能够整合地管理容器的管理、部署、扩容以及监视等方面。

控制Node和其中的容器的工具被称为编排器。

关于构成

k8s_構成.png

节点指的是

指的是物理或虚拟机器。

※根据角色不同,Node分为两种类型。

    • Master Node

 

    Node(Woker Node)

主节点 (zhǔ

    • オーケストレーションを行うNodeです。

 

    • 監視やインフラ(APP,DB,内部DNS,NW)を提供します。

 

    • コンテナはありません。

 

    コントロールプレーンであり、以下で構成されています。
master_node.png

节点(工作节点)

    • アプリケーションなどのコンテナが動作するNodeです。

 

    • クラスター内の計算リソースを提供し、アプリケーションコンテナの実行環境を提供します。

 

    kubelet、kube-proxyが入っています。
node.png

Pod 。
胶囊。

Pod.png

kubectl -> kubectl命令

    • Master NodeへのAPIで制御します。

 

    ⇒コマンドやスクリプトを指します。

聚集

    • Kubernetes全体の環境を指します。

 

    • Nodeの集まりです。

 

    • ※ClusterとしてNodeをまとめることで、以下のようなメリットがあります。

 

    • ・スケーラビリティ : Cluster内の Node は、アプリケーションの負荷に合わせて自動的にスケーリングできます

 

    • ・フェイルオーバーと冗長性 : Cluster 内の Node が障害を起こした場合、他のノードにワークロードを自動的に移行させることができます。

 

    ・ロードバランシング : Cluster 内の複数の Node が負荷を分散するため、トラフィックの均等な分散が可能です。

资源

在某个节点集群内部部署和管理的计算资源和应用程序的抽象表达,这就是指Kubernetes的组成要素的理解程度应该是可以的。

每个资源都可以通过Kubernetes API进行定义,并可以使用Kubectl或Manifest(YAML格式或JSON格式)进行操作和管理。

下面是资源的例子。

    • NameSpace

 

    • Deployment

 

    • ReplicaSet

 

    • Service

 

    Volume

命名空间

    • Cluster内のリソース(Pod、Service)を論理的に分離する仮想的なセグメントです。

 

    • クラスター内のリソース管理のための論理的なコンテナを指します。

 

    リソースの隔離、セキュリティ、リソース管理、プロジェクトの分離などの目的で使用されます。

部署

    • デプロイ管理の仕組みを提供するリソースです。

 

    • 主な機能としては、ローリングアップデート、ロールバックなどです。

 

    ⇒あるべき姿の定義することで、自動的にコンテナ化されたアプリケーションの管理します。

复制集

    • 指定された数のpodを維持するリソースです。

 

    Deploymentによって生成および管理されることで上記を実現します。
構成_01.png

服务

    • 永続的なIPアドレスを持たないNode,Podへの通信を提供するリソースです。

 

    • アプリケーションの可用性、ロードバランシング、セキュリティ、名前解決などのネットワーキング関連の機能を提供します。

 

    →用途によっていくつかのServiceType(後述)があります。
構成_02.png

※服务类型 (这里将解释以下类型)

    • ClusterIP

 

    • NodePort

 

    LoadBalancer

首先,作为基本说明,k8s的网络有以下几种选项。

    • External Network

 

    • →Kubernetesクラスターとその外部環境(通常はクラウドプロバイダーのネットワークまたは企業のデータセンターなど)のネットワークです。

 

    • Internal Network

 

    →Kubernetesクラスターにあるノード内に構成されるPod間を通信するためのネットワークです。
構成図_05.png

簇IP

    • Internal Network用のロードバランサーを提供するリソースです。

 

    クラスター内部用の仮想IPを提供します。
cluster_ip.png

节点端口

    • Kubernetesクラスター内のポッドに外部からアクセスするためのリソースです。

 

    • クラスター内の各ノード上の指定されたポートでリッスンし、そのポートを介して外部トラフィックをポッドに転送します。

 

    ※InternalNetworkに外部用のPortを作るイメージです。
ndoe_port.png

负载均衡器

    • クラスタ外からトラフィックを受け取るリソースです。

 

    • クラウドサービス(AWS,Azure,GCPなど)の利用します。

 

    • Serviceの公開、外部トラフィックの負荷分散(L4)、冗長化を行います。

 

    ※”LoadBalancer”という名前から負荷分散や冗長化はもちろんですが、ここではクラスタ外から通信を可能にする機能もあります。
loadbalncer.png

如果需要进行外部通信,下面是整体情况。

service_全体.png

入口

    • L7のロードバランシングを提供するリソースです。

 

    • 主な機能としては、外部疎通可能なURL、URL負荷分散、SSL端末、名前ベースの仮想ホスティングがあります。

 

    前述した LoadBalancer は L4 であるのに対して、Ingress は L7 のロードバランシングを行います。

※内部控制器

    • 実際に Kubernetes クラスター内の HTTP および HTTPS トラフィックをルーティングし、サービスへ転送するためのリソースおよびコンポーネントです。

 

    • 下記の公式ドキュメントのように様々な Ingress Controller があります。

 

    https://kubernetes.io/ja/docs/concepts/services-networking/ingress-controllers/

以下是使用 Nginx Ingress 的配置。
在 Nginx Ingress 中,将实际的负载均衡处理作为 Pod 进行。

Ingress.png

音量

    • コンテナのデータを永続的に保存するリソースです。

 

    コンテナの制約として、終了時にコンテナ内のデータが消えてしまいます。そのためデータを保存するためには永続化する必要があります。

※永续化是指将容器化应用程序内的数据与容器的生命周期独立开来,永久保存和管理的过程。

以下是Kubernetes的卷类型。

    • pod内のディスクを利用…データは永続化は不可です。

 

    • Nodeのディスクを利用…Nodeのディスク領域をPodにマウント。データの永続化が可能だが、Pod が別ノードで動作した場合にはデータの再利用不可です。

 

    外部ストレージを利用…iSCSIやNFS、クラウドプロバイダーの外部ストレージを利用する方法。データの永続化が可能。再利用可能です。

(1)。Volume
(2)。持久卷轴(PV)
(3)。持久卷轴请求(PVC)
(4)。存储类(SC)

(1).体积

    • emptyDir…Nodeのディスクを一時的に利用する仕組みです(単一のpodのコンテナ間のみ共有可能)。

 

    hostPath…Nodeのディスクを一時的に利用する仕組みです(異なるpodのコンテナ間のみ共有可能)。
構成図_03.png

(2). 持久存储卷 (PV)

    • 永続化領域として確保される外部のボリュームを抽象化するリソースです。

 

    • PersistentVolumeClaim(後述)経由で利用します。

 

    • ⇒欲しいVolume情報を事前に登録するイメージです。

 

    ⇒クラスタにボリュームを登録するだけのオブジェクトのため、これだけではVolumeとして利用不可です(後述のPVCが必要)。

(3). 持久卷索赔 (PVC)

    • 作成された PV から利用要求するためのリソースです

 

    ⇒PVC が利用要求をして、PVから実際のVolumeを作成します。

(4). 存储类别(SC)→用于动态配置。

※动态供应

动态供应是指在不需要手动创建PV的情况下,根据所需条件自动生成PV,并创建PVC。
在此过程中,StorageClass提供供应规则,生成相应的PV。

由于有些难以理解,我会通过插图进行解释。

    • 手動で行う場合、Persistent Volume Claim リソースの条件に従ったものが PV から適した Volume を割り当てられます。

 

    Dynamic Provisioning を利用する場合、Persistent Volume Claimを作成した時点で、Persistent Volume が自動的に作成されて割り当てられます。
構成図_04.png

以上是关于Kubernetes基础的记述。

如果对这篇文章有任何错误或疏漏之处,请指正,我将非常高兴。

bannerAds