【Docker/Kubernetes】今晚希望了解Kubernetes的概述
在这篇文章中,我不会要求你进行安装或输入荒谬的咒语。
コンテナオーケストレーションシステムである”Kubernetes”。
dockerを覚えたうえでなぜそんなものまで覚えなければならないのか、
現在まで勉強した結果を私なりにまとめよう。
(途上につき、間違いなどあれば申し訳ありません。ご指摘いただけると幸いです)
なぜKubernetesが必要か
一言でいえば、運用、特に複数台のホストにまたがるサービス運用において課題が出るからと言えます。
dokcer-composeによる複数コンテナを管理でローカルの開発環境についてはほぼ問題はないと思います。
しかし、これらは基本的に開発マシンなどといった1つのホスト内での話です。
在实际应用中,需要考虑以下类似的挑战,并且还需要在多个主机之间合作。
-
- ロードバランシング
-
- デプロイ時のダウンタイム
-
- オートスケーリング
- 死活監視(ホスト内のコンテナについて)
しかし、その構築は非常に複雑なものとなります。
こういった複数ホスト、コンテナ間の連携や、サービス実運用に必要な機能をもたらすのがKubernetesとなります。
可以跳过阅读的部分。
举个例子来考虑自动扩展。
假设有一个主机,分别运行着nginx、php应用和mysql容器,并且需要进行扩展。
那么,我们是否可以简单地只对这个主机进行扩展呢?从效率的运营角度来考虑,需要先增加主机,然后再思考如何在每个主机上部署容器。
另外,对于健康监测也是如此。如果只是针对主机本身来说,可能还好,
但是如果要自行构建对所有运行在主机上的容器进行健康监测和根据需要自动启动的系统,可能会很困难吧。
構成
以下是一种基本结构。从部署开始,大脑就会稍微产生一些拒绝接受的反应。
-
- クラスタ:以下に挙げるdockerホストなどのリソース集合体
マスターノード:管理サーバ
ノード(Node):実際にコンテナがデプロイされるホスト
ネームスペース(NameSpace):クラスタ内の仮想的なクラスタ
ポッド(Pod):コンテナの集合(同一ポッド内のコンテナはノードを跨がない)
レプリカセット(ReplicaSet):ポッドの複製・管理
デプロイメント(Deployment):レプリカセットの世代管理
サービス(Service):ポッドの集合&ポートなどの通信規約(書いて字の如くこの単位で一つのサービス)
イングレス(Ingress):サービスの公開&ルーティング
感觉就是这样了。如果能轻松理解,那今天就已经获胜并且很好了。