第一次学习Kubernetes
Kubernetes是什么?
这是一个容器编排工具。
在中文中的原生释义是这样的:它的发音可以是 “库贝内提斯”、”库巴内提斯”等,没有固定的形式。它也被简写为 “k8s”。因为在 “kubernetes” 中的 “k” 和 “s” 之间有8个字符。
顺便提一下,Docker是另一种软件。
Docker 是一个单一的容器化平台,而 Kubernetes 则是一个用于管理多个容器的编排工具。
只有使用Docker或其他容器运行时,Kubernetes本身才无法创建容器。
容器编排是什么?
这是一种用于捆绑多个服务器(带有容器的主机)并控制其中容器的工具。
作为优点,能够整合地管理容器的管理、部署、扩容以及监视等方面。
控制Node和其中的容器的工具被称为编排器。
关于构成

节点指的是
指的是物理或虚拟机器。
※根据角色不同,Node分为两种类型。
-
- Master Node
- Node(Woker Node)
主节点 (zhǔ
-
- オーケストレーションを行うNodeです。
-
- 監視やインフラ(APP,DB,内部DNS,NW)を提供します。
-
- コンテナはありません。
- コントロールプレーンであり、以下で構成されています。

节点(工作节点)
-
- アプリケーションなどのコンテナが動作するNodeです。
-
- クラスター内の計算リソースを提供し、アプリケーションコンテナの実行環境を提供します。
- kubelet、kube-proxyが入っています。

Pod 。
胶囊。

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によって生成および管理されることで上記を実現します。

服务
-
- 永続的なIPアドレスを持たないNode,Podへの通信を提供するリソースです。
-
- アプリケーションの可用性、ロードバランシング、セキュリティ、名前解決などのネットワーキング関連の機能を提供します。
- →用途によっていくつかのServiceType(後述)があります。

※服务类型 (这里将解释以下类型)
-
- ClusterIP
-
- NodePort
- LoadBalancer
首先,作为基本说明,k8s的网络有以下几种选项。
-
- External Network
-
- →Kubernetesクラスターとその外部環境(通常はクラウドプロバイダーのネットワークまたは企業のデータセンターなど)のネットワークです。
-
- Internal Network
- →Kubernetesクラスターにあるノード内に構成されるPod間を通信するためのネットワークです。

簇IP
-
- Internal Network用のロードバランサーを提供するリソースです。
- クラスター内部用の仮想IPを提供します。

节点端口
-
- Kubernetesクラスター内のポッドに外部からアクセスするためのリソースです。
-
- クラスター内の各ノード上の指定されたポートでリッスンし、そのポートを介して外部トラフィックをポッドに転送します。
- ※InternalNetworkに外部用のPortを作るイメージです。

负载均衡器
-
- クラスタ外からトラフィックを受け取るリソースです。
-
- クラウドサービス(AWS,Azure,GCPなど)の利用します。
-
- Serviceの公開、外部トラフィックの負荷分散(L4)、冗長化を行います。
- ※”LoadBalancer”という名前から負荷分散や冗長化はもちろんですが、ここではクラスタ外から通信を可能にする機能もあります。

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

入口
-
- 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 进行。

音量
-
- コンテナのデータを永続的に保存するリソースです。
- コンテナの制約として、終了時にコンテナ内のデータが消えてしまいます。そのためデータを保存するためには永続化する必要があります。
※永续化是指将容器化应用程序内的数据与容器的生命周期独立开来,永久保存和管理的过程。
以下是Kubernetes的卷类型。
-
- pod内のディスクを利用…データは永続化は不可です。
-
- Nodeのディスクを利用…Nodeのディスク領域をPodにマウント。データの永続化が可能だが、Pod が別ノードで動作した場合にはデータの再利用不可です。
- 外部ストレージを利用…iSCSIやNFS、クラウドプロバイダーの外部ストレージを利用する方法。データの永続化が可能。再利用可能です。
(1)。Volume
(2)。持久卷轴(PV)
(3)。持久卷轴请求(PVC)
(4)。存储类(SC)
(1).体积
-
- emptyDir…Nodeのディスクを一時的に利用する仕組みです(単一のpodのコンテナ間のみ共有可能)。
- hostPath…Nodeのディスクを一時的に利用する仕組みです(異なるpodのコンテナ間のみ共有可能)。

(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 が自動的に作成されて割り当てられます。

以上是关于Kubernetes基础的记述。
如果对这篇文章有任何错误或疏漏之处,请指正,我将非常高兴。