重新理解并表达Kubernetes #1,以深入理解
首先
本文旨在以语言方式表达高度抽象的Kubernetes架构,以便理解。
1. 简要概述
Kubernetes 是谷歌为了自动化容器(Docker)的部署和调度而创建的编排引擎。
-
- オーケストレーションエンジンとは…
-
- アプリやコンテナを複数のサーバマシンに配置してシステムを自動化する仕組み
-
- Kubernetesとは…
- Docker や containerd などコンテナランタイムのオーケストレーションエンジンのデファクトスタンダードと言われ、次世代の Linux になるといわれている技術
图像示意
1-1. Kubernetes的功能
使用 Kubernetes 可以使用以下功能。
-
- Infrastructure as Code(IaC)
-
- コンテナのデプロイ、スケジューリング
-
- コンテナの死活管理
-
- 障害時の自動復旧
-
- 複数サーバー(Node)でのコンテナ管理
-
- コンテナの負荷分散
-
- 負荷によってコンテナの数を調節するオートスケーリング
-
- コンテナのリソース管理
- …etc
特别重要的是基础设施即代码(IaC)。
在Kubernetes中,宣言性配置指的是通过YAML格式或JSON格式的代码来定义“系统所应具备的状态”。
通过这种方式,当通常故障发生时,负责运营的工程师会手动进行恢复操作以重新启动服务。而在 Kubernetes 中,使用 IaC 可以通过使用 “ReplicaSet” 更好地实现例如始终启动3个 Pod 的要求。当一个 Pod 由于故障而变为2个时,系统会自动创建一个新的 Pod 以使总数重新恢复到3个,实现自动恢复的功能。
– 引用资料
– 参考资料
我參考了以下博客中關於障礙時的行為。
1-2. 在使用 Kubernetes 时需要注意的事项
尽管 Kubernetes 看起来完美,但还有四个需要注意的要点。
1) Kubernetes 本身非常复杂
2) Kubernetes 更新周期较快
3) 经常需要周边服务来运营 Kubernetes
4) 如果规模不大,仅采用容器(Docker)就足够了
2. Kubernetes的架构
Kubernetes 有两种类型,即 Master Node(也称为控制平面)和 Worker Node,它是一个以 kube-apiserver 为核心的分布式系统。
2-1 主节点 (zhǔ jié
负责控制集群。执行涉及整个集群的决策,如调度、事件检测和响应等,可在集群内任何节点上执行。
-
- api (kube-apiserver)
-
- Kubernetes API を提供するフロントエンドのコンポーネント。
-
- ユーザから発行される kubectl コマンドを api に送ることでリソースの作成や削除ができる。その情報は etcd に登録される。
-
- etcd
-
- 全てのクラスタデータ保存用のデータベース。
-
- Key-ValueStore (KVS) 形式で保存される。
-
- c-m (kube-controller-maneger)
-
- 様々なコントローラを実行するコンポーネント。
-
- Deployment コントローラや ReplicaSet コントローラはリソースの状態によって ReplicaSet や Pod の作成を行う。
-
- sched (kube-scheduler)
-
- 未割当状態の Pod をどのノードに配置されるかを決定する。
- デプロイは kubelet が行う。
2-2 工作节点
在节点上运行,并维护正在运行的容器Pod,提供容器运行环境。
-
- kubelet
-
- Node 上で動作をするコンポーネント。
-
- コンテナランタイムと連携してコンテナのデプロイや停止などを行う。
-
- kube-proxy
-
- Kubernetes クラスタ内の各ノードで実行されるプロセス
- クラスタ内外のネットワーク通信を提供する。
最终
通过参考资料,我用自己的话来说出 Kubernetes 的架构,从而更好地理解它。我希望在继续学习的过程中将这些内容整理总结。
仅需一个选项,以下是对”参考资料”的中文本地化改写:
文献资料参考
Kubernetes 完全指南 第2版
通过在Azure上运行来学习Kubernetes概念和实践知识的理解机制