大约10分钟就能理解,Kubernetes和EKS有什么方便之处
请留意
这篇文章是根据一位没有实际操作经验的Kubernetes初学者调查结果创建的。如果有错误、误解等,请通过评论或编辑请求与我们联系。
简而言之,
-
- コンテナをクラウドでそのまま動かそうとすると困る
n台動かしたいコンテナが、今クラウド全体で何台動いているのかとか
デプロイするときに、コンテナを立ち上げたり落としたりする順番・タイミングとか
コンテナに割り当てるロードバランサ、ストレージなどの作成とか
他にもいろいろ
Kubernetesはクラウド全体のコンテナ周りを一元管理してくれるので便利
どの環境で、どんなコンテナがどれだけ動いているかとか、把握してくれるので便利
コンテナ周りをどんな構成にしたいか、yml形式で書いてkubectlコマンドで渡す
運用者の指示した形になるように、コンテナ周りを一元的に操作してくれるので便利
EKSはKubernetesのうち、コンテナを一元管理してくれるところをマネージドで使えるので便利
Kubernetesのうち、コンテナを動かすマシンは自分たちで管理する
ECSも似たことをしてくれるけど、自発的にロードバランサとか作ったりしてくれない
Kubernetesは自分からロードバランサとか作りに行ったりもする
ECSはFargateが使えるけど、EKSは自前でEC2立てる
ECSの方が構成が比較的シンプルで、扱うコンテナの種類が少なければ便利なこともある
我想在这篇文章中解释的事情
-
- Kubernetesの何が便利なのか
-
- なぜ使うのか
-
- どんな問題を解決してくれるのか
お お よ そ どんな構成や、仕組みで動いているのか
EKSの何が便利なのか
ECSとEKSの違いは何か
此文章中未加以说明的内容。
-
- 細かいコマンドや設定の仕方
-
- 細かいアーキテクチャ・構成の説明
-
- ベストプラクティスや、実運用上での事例
-
- Serviceなど、細かいKubernetesのコンポーネント
- サービスメッシュなど
一开始,什么是容器?
-
- コンテナ型仮想化と呼ばれる技術がある
-
- Dockerなどを通じてホストOSの上でOSっぽい環境(コンテナ)を動かす
Dockerなどは、コンテナを動かすための環境を提供するミドルウェア
VM Wareや、Virtual Boxは「ホスト型仮想化」というものもある
これは、OSの上に、まるまるOSを動かす
コンテナは、ホストOSのカーネルなどを共有して使う
そのため、ホスト型より軽く動く
カーネルなどは、すでにホストOSが立ち上げている物を使うので起動も速い
なので、単一のアプリ単位ごとにコンテナを立ち上げたりしやすい
コンテナ自体が一つのOSのように動くので、コンテナ同士は分断されていて影響を受けにくい
アプリの実行に必要な構成や依存関係を、コンテナにひとまとめにしておくことができる
なので、実行してみたら動かないとか起きにくい

容器的问题
-
- 手元(ローカル)の環境ででコンテナを動かす分には便利
-
- 使いたいアプリケーションがすぐ使える
- ただ、運用するとなると困ることが出てくる
我们来考虑一个类似以下的组成的例子。
-
- AWS上で動かしたい
-
- バックエンドサーバを3コンテナ動かして
-
- DBサーバを1コンテナ動かしたい
- できるだけ 複数の場所(リージョン/AZ)に均等に分散させたい

我可以带走( )它。然而,在运用( )过程中可能会遇到以下这些困难。
-
- 各地域に、どのコンテナが何台動いているって誰が把握しているの?
地域ごとに均等に配置するために、毎回人力で確認しないとダメ?
コンテナを新しいものに置き換えるときどうしよう?
既存のコンテナ落としたり、立ち上げたりするタイミング・順番・依存関係
毎回、各コンテナごとに手順書つくってやってもいいけど、だいぶ大変
死んでるコンテナ検知して、置き換える仕組み作らないと
コンテナに割り当てるリソースも管理しないと
ストレージとか、ロードバランサとかコンテナごとに用意・管理しないと
ネットワークや、アクセス権限もコンテナごとに用意・管理しないと
などなど・・・
看起来相当困难。
在容器本身的运作中存在一些挑战,而在容器周围的网络和负载平衡等运作中也存在一些挑战,看起来有几个。
因此,Kubernetes
即使决定由人来确定组织和运营的方式,如果每个容器都单独管理和操作,信息和步骤会变得杂乱无章,很麻烦。
我希望能够集中管理容器以及与容器相关的事务。如果可能的话,希望能够根据设定自动化容器及其周围的操作。
如果您使用Kubernetes,您可以进行容器相关的集中管理和操作。 Kubernetes也被简称为k8s。
Kubernetes是如何运作的?
能够统一管理容器周围事物的东西。
我想知道你希望统一管理容器周围的事物的具体内容。
了解整个容器周围的情况并进行统一管理的是Kubernetes Master(主节点)。
Kubernetes Master可以自身以多台的方式运行。
このKubernetes Masterが、環境全体のコンテナの稼働状況などを把握していて、
コンテナの稼働状況などに基づいて、運用者が指示した理想の形になるように
コンテナを配置したり、削除したりする指示を出します。
因为需要了解和控制容器周围的情况,所以被归类为控制平面。
一方面,将容器运行环境称为数据平面。

实际运行容器的程序
我已经大致了解了负责管理容器的东西,现在我想知道如何处理容器的运行(数据平面)。
即使只提供了一个容器运行环境,Kubernetes的Master节点也无法干预。
应该需要一个可以通过Kubernetes Master进行操作的机制。
Kubernetes Mastersが管理する、コンテナを動かす環境は、
Kubernetes Nodeと呼ばれています。

一个节点等于一个机器单位。
无论是虚拟机还是物理机,都可以作为节点运行的机器本身没有问题。
在这个节点上,
有一种叫做Kubelet的软件,它能够按照Master的指示来操作容器和容器群集,
而Docker等容器化虚拟环境主要是在这上面运行的。
你是否想以容器的方式整理成方便处理的单位?
那么,在Kubernetes节点上,容器是单独运行的吗?
然而,有时候我们可能想要将多个容器进行分组处理,而不是逐个指定对待的吧?
我认为有一些地方你可能会这样想。
因此,在Kubernetes节点上,有一种机制可以将多个(1台以上)容器组织成群组并进行管理。
在中国的本地化版本中,可以这样重新表述:
组是通过Pod单元来进行分类的。
容器属于某个Pod。

根据设置的条件,可以确定汇总单位为Masters。
Pod中的容器将共享IP和存储等。
通过以Pod为单位进行整理,可以对整理的操作指示进行统一或管理。
节点集合
Node的聚集被称为Kubernetes集群。

因为已经设立了容器管理和移动的位置,所以现在可以进行管理。
在Kubernetes Maser的指导下,Kubernetes Node现已可运行。
Kubernetes Mastersは、NodeやPodの状況に応じて、
コンテナを作ったり、再作成したり、落としたりすことなどを、Nodeに指示できます。

那么,如何向Kubernetes Master发送指示呢?
理解了如果向Kubernetes Master传达关于如何配置容器的要求,它会根据要求进行操作,实现相应的配置。
在中文中,您应该如何向Kubernetes主节点传达有关容器配置的信息呢?
大致上,我会按照以下流程传达。
-
- yaml形式でコンテナ周りをどんな構成にしたいか、記述する
その設定ファイルは、マニュフェストと呼ばれる。
kubectlコマンドを使って、設定をKubernetes Masterに反映する
Kubernetes Masterは反映された内容を元に、NodeやPodを操作する
もちろんkubectlとKubernetes Mastersの間には認証でアクセス制御できる

※ 由于本次目的是为了理解概要,因此将省略详细的操作和设置方法。
在实际应用中,很多情况下更多采用Jenkins或其他CI/CD环境来执行,而不是个人执行kubectl命令。

关于其他容器的周围情况。
关于容器周围的各种事项,
-
- ロードバランシングなどのトラフィック管理構成
-
- 操作できるコンテナのアクセス権限管理
-
- ストレージなどの設定・割り当て
- デプロイの方法・手順など
还有很多等等,真的有很多……
同样,这些也需要在清单文件中进行描述,并由Kubernetes Master进行创建和管理。
(这次我们省略了详细内容。)
Kubernetes 是什么?啊!
基于这些考虑,提到Kubernetes时,指的是前面提到的结构、机制(以及未解释的组件等),总体来说。

使用Kubernetes本身的运维是困难的吗?
非常。(似乎)
因此,AWS、GCP、Azure等云服务平台都提供了托管的Kubernetes服务。
由于我的情况几乎只有AWS的知识,我会解释一下亚马逊提供的托管的Kubernetes服务,即Amazon EKS。
EKS是什么意思?
正式名称は、Amazon Elastic Container Service for Kubernetes
这是亚马逊提供的托管Kubernetes服务。
■ 亚马逊EKS
https://aws.amazon.com/jp/eks/
EKS有什么方便之处?
Kubernetes Master(コントロール プレーン)に当たる部分を、
マネージドで運用してくれます。

由于是托管服务,以下内容将会自动完成。
-
- Kubernetes Masterの更新・パッチの適用
-
- 死んでしまったKubernetes Masterの検出、置き換え
-
- 複数AZへのKubernetes Masterの配置・構成
- などなど
另外,还可以与AWS提供的其他服务进行集成。
例如,如果Kubernetes创建负载均衡器或存储等,您可以选择AWS托管的服务。
因此,您可以将其运作的一部分交给AWS。
一方で、Kubernetes Node(データプレーン)として、
運用するマシンは自分で管理・運用する必要があります。

案ずるより生むが易し -> 事实胜过担忧
Amazon EKSは公式チュートリアルがあるので、簡単に体験できます。
■ 开始使用亚马逊 EKS
https://docs.aws.amazon.com/zh_cn/eks/latest/userguide/getting-started.html
この、チュートリアルをオススメする理由は以下の通りです。
-
- VPCや、SGの作成など、Kubernetesを触る本筋以外のところは、自動化されている
自動作成するCloudFormationのテンプレートが用意されている
マニュフェストファイルも用意されており、コンテナを起動するまでが手軽に試せる
試した環境の削除も楽
另外, Classmethod 先生的解释文章非常易懂。
※上記の公式ドキュメントの内容の方が新しく、インストールするツール(コマンド)の
バージョンに差異があるため、両方を見比べながら実践すると良いと思います。
现在应该可以在东京区域进行测试,但因为东京没有提供经过Amazon EKS优化的AMI,所以需要进行AMI的跨区域复制。
■ 【まずは触って体験】リリース直後のAmazon EKSでサンプルアプリケーションを動かしてみた
https://dev.classmethod.jp/cloud/aws/eks-getting-started/
亚马逊ECS与其他有何不同之处?
Amazonには、EKSと同じくコントロールプレーン(コンテナを管理するやつ)の
サービスとして、ECS(Elastic Container Service)というものがあります。
どのような違いや、特徴があるんでしょうか。
我感受到的主要差异如下所述。
-
- ECSでは、コンテナを動かすところ(データプレーン)にFargateが採用できる
Fargateはコンテナを動かすところもマネージドで提供してくれるサービス
EKSではFargateを使用することは現状できない。
ECSは、ロードバランサやストレージなどのリソースを、自分から作成しない
ECSは既に作成済みのロードバランサや、ストレージを割り当てる形
EKSは仕組みの中で、ロードバランサやストレージなどのリソースを作成することがある
ECSは、コンテナの管理に特化しているので、シンプルな構成を、シンプルに扱える
複数の多種多様なコンテナを運用しないのであれば、ECSの方がシンプルに扱うことができる
などなど
另外,在以下的文章中,
我印象深刻的是「ECS只能在AWS上运行。」(后来也提供了EKS)这句话。
为什么AWS会开始提供Kubernetes服务,即使已经有ECS了,我们向Cockcroft先生询问了这个问题
总结
-
- Kubernetesは複数コンテナを管理する必要がある時に、頼れる
-
- コンテナを一元的に管理、操作できる
-
- コンテナ周りのネットワークやストレージも一元的に管理・操作できる
-
- なので、多数の複数コンテナを扱う、マイクロサービス運用する場合とかに便利そう
- AWSでコンテナの種類がそんなに多くなければ、ECSの方がシンプルで良さそう
為了撰寫這篇文章所做的事情
我已经大约读了《Kubernetes完全指南(第二版)》的一半,链接为https://book.impress.co.jp/books/1118101055。
我已经实践了前面提到的EKS教程。
■ 【首先亲自体验】在Amazon EKS最新发布后尝试运行示例应用程序。
来源:https://dev.classmethod.jp/cloud/aws/eks-getting-started/
《Kubernetes完全指南》非常详细地介绍了Kubernetes,文字易懂,非常棒。
另外,教程的解说也非常易懂,真是帮了大忙。
这篇文章的来龙去脉
先日、とらのあなさんのLTイベントに参加させてもらいました。
因为起初我并不太理解为什么要引入Kubernetes以及它的优点,所以我进行了一些调查,并在大约十分钟内做了一个总结性的演讲。
既然已经费了这么大劲,我决定把这个内容按照文档形式保存下来。
【虎之穴主办】第四届追寻最新技术的宅文化快速演讲活动
https://yumenosora.connpass.com/event/120688/
■ 大约需要10分钟来粗略了解Kubernetes和EKS(您可以通过页面滚动阅读原稿)。