Kubernetes登场人物总结

首先

我想学习作为管弦乐工具的Kubernetes(Kubernetes),但是这里有太多陌生的术语,让我感到非常困惑。

无论如何,其中登场的角色很多。就像漫画《海贼王》一样,登场角色非常多,只是一眼看过去并不清楚。对于那些看《龙珠》长大的一代来说,这是一种痛苦。

我希望能逐个整理清楚。

特点

Kubernetes可以自动化构建、配置和运维由各种应用程序、中间件、存储等组成的系统。它还能进行自动扩展和健康监测。

在众多编排工具中,Kubernetes专门针对容器进行了优化。它能够明确描述容器之间的关系,并且轻松进行服务发现。

可以根据容器之间的关系来管理基于容器何时在哪里运行的调度。

如果使用Terraform等配置工具,需要根据每个环境进行相应的编写。
而对于Kubernetes来说,它可以吸收环境的差异。

虽然编排是复杂的,但对于Kubernetes来说,它创造了Kubernetes的“术语”以抽象和简化这种复杂性。(更确切地说是角色)

一旦理解了“术语”,Kubernetes被认为是更易理解的。

节点

指的是VM或物理服务器。服务器会被分配一个IP地址。

群聚

节点的集合。

Kubernetes的守护程序负责管理集群和容器的执行情况,以及为正在运行的Kubernetes环境进行协调。

豌豆

从用户的角度来看,Pod类似于一个虚拟机(VM),而容器更接近于在该虚拟机中运行的进程。

Pod是Kubernetes部署的最小单位。
Pod是一个或多个集群的组合体。节点始终被展开。
在Pod内指定的容器组将同时被部署。

Pod中的容器共享IP和端口。
因此,无法在同一个Pod中放置绑定到相同端口的多个容器。

此外,Pod无法管理除了其自身信息之外的内容。要控制多个Pod,需要相应的资源。这个问题可以通过称为控制器的功能来解决。

标签

根据注册的定义,将自动进行初始化和部署。
通常会自动分配随机名称。
可以为资源分配任意字符串。类似于标签。标签包括名称和值。

在进行某项工作时,只需要指定特定的名称和值,就可以对具有相应标签的所有资源进行批量操作。

服务

由多个Pod组成的集合体。服务彼此发现的机制。

当在Kubernetes中创建服务时,
Kubernetes会在其管理的DNS服务器上创建必要的记录。
所创建的名称将在Pod之间使用。

由於有幾種服務類型,因此我們將進行介紹。

名前概要ClusterIPクラスタ内で有効なDNSやVIPで複数のPodと紐付けるNodePortClusterIP Serviceを作成。Node上の静的なポート番号で公開LoadBalancerNodePort Serviceを作成。ロードバランサを作成して紐付ける。ExternalName外部サービスを利用したい時に、DNSのCNAMEを利用。クラスタの内部向けにエイリアスを作成HeadlessStatefulSetを利用する際に使う。

這主要用於處理Kubernetes內部的訪問。

入口

将对Pod的访问通过http代理进行转发。
将与Service相关联的通信内容代理到Service上。

音量

可以指定数据存储区域。可以将外部存储作为卷挂载到容器中。

在分配节点的情况下,应使用 emptyDir Volume 来分配空间。
Pod 的容器将在同一节点上进行部署。在 Volume 中写入的数据可以在 Pod 之间共享。

然而,如果删除Pod,则会同时删除emptyDir。为了避免这种情况,可以选择使用NFS或云存储(PersistentVolume)。

配置映射/密钥

将应用程序的设置写入图像本身,每次更改设置都需要创建新的图像。为了避免这种情况,将各种设置和部署到容器中的程序分离。

在Kubernetes中使用ConfigMap/Secret。

名前概要ConfigMap平文の設定ファイルSecretエンコードされている。ただし、kubernetesにアクセス可能なユーザなら中身が見えてしまう。※セキュアな情報を入れれる場合はRBACを使う

水平扩展部署

每个 Pod 不意识到状态作为其特征。
Pod 构成为完全克隆。

复制集合

用于控制Pod的规模。

根据在模板项(template)中定义的Pod的定义,创建并启动与replicas项指定的数量相同的Pod。

由于还有更多的角色要登场,因此稍后将进行编辑。