【2021年4月更新】Kubernetes 指南之一:多样的分发版本
Kubernetes 导航
在本系列中,我们简要介绍了组成Kubernetes集群的各种组件和技术。
-
- 【2021年4月版】Kubernetes ナビ その1: ディストリいろいろ
-
- 【2021年4月版】Kubernetes ナビ その2: ネットワーク・サービス関連
-
- 【2021年4月版】Kubernetes ナビ その3: ストレージ関連
-
- 【2021年4月版】Kubernetes ナビ その4: コンテナ関連
- 【2021年4月版】Kubernetes ナビ その5: Serverless
这次将是第一部分。
Kubernetes 简单来说
Kubernetes,是云技术的综合体,它由许多层次和产品组合而成,即使仅仅理解整体,也是一个非常困难的产品。
因此,在这个系列中,我想尽量简洁地介绍与Kubernetes相关的开源软件和服务,以便更容易理解和掌握。
发行
オープンソースである Kubernetes には、Linux 同様いろいろなディストリビューションがあります。そこでまずは Kubernetes パッケージ丸ごとのディストリビューションについて、以下、筆者が気になるものをご紹介いたします。
各社の Kubernetes ディストリについて比較・検討できる資料になれば幸いです。
比較するレイヤー・コンポーネント
k8sはいくつかのレイヤー・コンポーネントで構成されていることは上記で述べたとおりですが、各ディストリを比較する上で、主に以下のレイヤー・コンポーネントをメインに比較してみたいと思います。
-
- CRI (Container Runtime Interface) … デフォルトで対応するもしくは同梱のコンテナ・ランタイム
-
- コントロールプレーンストレージ … クラスタの設定そのものを保存・同期するKVSもしくはDBサービス
-
- CNI (Container Networking Interface) … デフォルトで対応するもしくは同梱のコンテナ通信インタフェース
-
- CSI (Container Storage Interface) … デフォルトで対応するもしくは同梱の永続化インタフェース
- DNS … デフォルトで対応するもしくは同梱のDNS、サービスディスカバリサービス
那么,接下来我将介绍一些代表性的发行版。
本就是核心的 Kubernetes
公式サイトhttps://kubernetes.io/リポジトリhttps://github.com/kubernetes/kubernetes開発団体Cloud Native Computing Foundation最新バージョン1.21.0対応CRIcontainerd, CRI-O, DockerなどコントロールプレーンストレージetcdCNIプロバイダCNI純正?のプラグインCSIプロバイダ×DNSCoreDNS
公式发布的原始Kubernetes是一个全套的包装,因此它的大小(容量,内存需求,CPU)相当大。
尽管可以使用kind在单个PC上运行它,但我不太建议这样做,因此我认为它并不适合在本地学习。如果你想在本地尝试原始的Kubernetes,我建议使用Minikube。
我认为Minikube适用于那些想要自定义运营Kubernetes或开发Kubernetes插件的高级用户。
2. K3s
公式サイトhttps://k3s.io/リポジトリhttps://github.com/k3s-io/k3s開発団体RancherK8s バージョン互換1.20.5対応CRIcontainerd & runcコントロールプレーンストレージkineCNIプロバイダflannelCSIプロバイダ× ※ストレージはLocal-path-provisionerを使用DNSCoreDNSその他metrics-server, Traefik for ingress, Klipper-lb as an embedded service loadbalancer provider, Kube-router for network policy, Helm-controller to allow for CRD-driven deployment of helm manifests
由于安装和操作简单、轻量级,因此我个人推荐这个发行版。如果第一目标是使用Kubernetes,您可以使用Docker启动k3s来完成Kubernetes部署。它非常适用于那些更希望快速开始运营而不是深入理解Kubernetes内部的开发环境等情况。
3. 微型K8s
公式サイトhttps://microk8s.io/リポジトリhttps://github.com/ubuntu/microk8s開発団体CanonicalK8s バージョン互換1.20対応CRIcontainerd & runcコントロールプレーンストレージ不明。 dqliteか?CNIプロバイダCNI純正?のプラグインCSIプロバイダ× ※プラグインとしてOpenEBSが利用可能DNS× ※ プラグインとしてCoreDNSが利用可能その他Service Mesh: Istio, Linkerd, Serverless: Knative, Monitoring: Fluentd, Prometheus, Grafana, Metrics, Ingress, Dashboard, Clustering,Automatic updates to the latest Kubernetes version,GPGPU bindings for AI/ML,Kubeflow!
这是由广为人知的Canonical开发的K8s。喜欢Ubuntu和Canonical的朋友,没有抵触的话,请自便使用。我会稍微有些顾虑…哈哈
5. K0s
公式サイトhttps://k0sproject.io/リポジトリhttps://github.com/k0sproject/k0s開発団体MirantisK8s バージョン互換1.20対応CRIcontainerd & runcコントロールプレーンストレージsqlite, etcd, kineCNIプロバイダCalicoCSIプロバイダ×DNSCoreDNS
たぶんミニマルな K8sとしては今のところ最後発で絶賛開発中の k0s です。ご覧の通り極めてミニマルな構成です。
実際、Kubernetesはプラグインそのものが自分にコンテナをデプロイして動作することになるので、初期構成はこんなもんでいいのです。ただし絶賛開発中ですので個人の実験はともかく、案件での開発環境として採用するのはまだまだかな、というところでございます。半年後、どうなっているか、が期待です。
GKE、EKS、AKS。
因为无法对Google的GKE,AWS的EKS和微软Azure的AKS进行直接比较,所以我只会提及它们的名称。
-
- Google Kubernetes Engine
-
- Amazon Elastic Kubernetes Service
- Azure Kubernetes Service
正直なところ、Kubernetes の運用、つまりこれを載せるサーバーのハードウェアを自前で運用するのはかなりしんどいです。
特に案件で開発環境に構築するとなると、落ちるのが前提の単一ノードクラスタ を運用することになり、これはリスクでしかないです。
K8sサービスを使えば札束で安全が買えるのです。実際の案件では開発環境から各社のサービスを利用することをお勧めします。
感想
Kubernetes绝对是必须学习的技术,但作为云技术的巅峰,它非常具有挑战性。
为了学习,我们首先需要在本地运行Kubernetes,这就需要一些类似Minikube或MicroK8s这样的“小型集群”。
但是,出现了一些面向物联网边缘开发的基于容器的应用,如k3s或k0s这样的“精简集群”,代表就是Raspberry Pi。在ARM上运行K8s已经成为主流了。唉…真是头疼。
在上面提到了代表性的发行版和它们的组件,确实像是开源软件的明星阵容。虽然数量众多,但每个都有一流的功能、特点和设置,所以每个的内容都很丰富。哎呀…真是令人叹服。
在接下来的系列中,我想介绍每个层面的代表性开源软件。