Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Alibaba Cloud Serverless Kubernetes 徹底解説

1,009 views

Published on

Alibaba Cloud Serverless Kubernetesをさっそくさわってみたので、徹底解説します。
AliEaters Tokyo#11の資料でもあります。

Published in: Technology
  • Be the first to comment

Alibaba Cloud Serverless Kubernetes 徹底解説

  1. 1. Serverless Kubernetes 徹底解説 Serverless kubernetesとElastic Container Instanceの関係を明かす 1 @mosuke5 AliEaters Tokyo #11 (2019/5/15)
  2. 2. 2 Who are you? 名前: もーすけ (@mosuke5) 仕事: 「元」Alibaba Cloud日本リージョンの中の人。 その前はWebエンジニア。いまは修行中の身。 好きな分野は、Webアプリ開発とかサーバ運用の自動化とか 最近: 転職しました。転職後、初のイベント登壇。 色んな意味で「違う」ということを実感し日々おもしろい。 ブログ:  https://blog.mosuke.tech
  3. 3. 2019年3月 卒業。正式なMVPへ 3 Alibaba Cloudの中の人を 卒業。Alibabaと僕の物語 https://blog.mosuke.tech/entry/ 2019/03/29/thank-you-alibaba/
  4. 4. 宣言どおり 4
  5. 5. 気になっていた、あれが、 ついに触れるようになっている! 5
  6. 6. Serverless Kubernetes Cluster ※過去にβ申請で無視されてます!!笑 6
  7. 7. コンテナ関連のプロダクトラインナップ 7 ・通常モード ・Managedモード ・Serverlessモード 独自のオープンソースContainer Engine Elastic Container Instance Container Service for k8s Container Service for swarm Container Registry
  8. 8. いったいどんなサービス? 他とのポジションニングは? どう使い分けたらいいの? 8
  9. 9. serverless kubernetesとは 自分でクラスターやサーバーを管理せずにすばやくKubernetes クラスターを作成して利用することのできるサービス。アプリケー ションが利用した実際のCPUやメモリ量による重量課金型の Kubernetesサービス。 そして、このサービスはKubernetes APIと互換性があるとのこ と。 9
  10. 10. マネージドの範囲 1010 Master Node Worker Node TCP 22 TCP 6443 TCP 8443 TCP 6443 NAT GW VPC Serverlessモード 管理はPodsだけ Managedモード Master NodesがManaged
  11. 11. サポートする機能(ピックアップ) ● APIバージョン: kubernetes 1.9(どのくらいで追随するか楽しみである) ● Workload ○ サポートする : Deployment, StatefulSet, Job/CronJob, Bare Pod ○ サポートしない: DaemonSet ● LoadBalancer (service, ingress) ○ Service、IngressでLoadBalance(SLBが利用可能) ○ NodePortは利用不可 ● Storage ○ PV、PVCは利用不可 ○ 永続ボリュームはNASやOSS、RDSを利用する ○ ConfigMap, Secretは利用可能 11 ※詳細は公式ドキュメントを参照
  12. 12. 基本的な仕組み 12 VPC Pod (ECI Instance) Pod (ECI Instance) Pod (ECI Instance) ENI ENI ENI Service: LoadBalancer 基本的な構図はAWS Fargateと似てい る。それをKubernetesとして実行、管理で きるというのが特徴的なポイント。 ECIの裏側の仕組みはわかりませんでし た。firecrackerのようなものなのかなん なのか...? 任意のVPCの中に 配備できるのは何 かと便利。
  13. 13. 最近のクラウド界隈のコンテナサービス動向 13 非マネージド マネージド ノードレス Alibaba Cloud Container Service for Kubernetes Container Service for Kubernetes(Managed mode)/Swarm Elastic Container Service(ECI) AWS - Amazon ECS, Amazon EKS Fargate Azure Azure Container Service(終了予 定) Azure Kubernetes Service(AKS) Azure Container Instance(ACI) GCP - Google Kubernetes Engine(GKE) -
  14. 14. サンプルコード Nginxを2台配置するdeploymentと、その前段のロードバランサ を配置するサンプルコードを作りました。 <サンプルコードはこちらから> https://gist.github.com/mosuke5/75738227c81f09994a66f607a5545bf6 14 $ kubectl apply -f serverless_k8s_sample.yaml deployment.apps/nginx-deployment changed service/nginx-lb changed
  15. 15. PodsはECIとして起動していた 15 $ kubectl get pods NAME READY STATUS RESTARTS AGE nginx-deployment-867cfccff6-hqslk 2/2 Running 0 4m nginx-deployment-867cfccff6-pf24l 2/2 Running 0 4m ECIの画面にいくとPods(コン テナ)が作成されている。
  16. 16. SLB配下にはENIとしてECIが紐づけられていた 16 SLBのリスナーとそのターゲットを確認す るとENIが紐づけられていることがわか る。 ENIをバックエンドにするにはSLBは guaranteed-performanceタイプでないと いけない。
  17. 17. Podの配置ノードを見てみる $ kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE nginx-123 2/2 Running 0 2m 192.168.0.5 viking-c61280828966245599093cd57cbc145ea <none> nginx-456 2/2 Running 0 2m 192.168.0.7 viking-c61280828966245599093cd57cbc145ea <none> nginx-789 2/2 Running 0 2m 192.168.0.6 viking-c61280828966245599093cd57cbc145ea <none> 17 Podsが同じノードで動いているように見える。 この”viking”というのを調べると火葬ノードで、virtual-kubeletで 実現しているということがわかった。 こちらで発見しました。 「From Containers to Cloud Native - Ultimate Elasticity」
  18. 18. virtual-kubelet Virtual KubeletはオープンソースのKubernetes kubelet実装の1つで、 他のAPIと接続することを目的にしたKubeletである。 これは、ノードがACI, AWS Fargate, Hyper.sh, IoT Edgeなどのほかのサービスに支え られることを実現します。VKの主なシナリオはKubernetes APIをACI, Fargate, and Hyper.shなどのサーバレスコンテナプラットフォームへの拡張を可能にすることです。 CNCFプロダクトの1つ。 Alibaba Cloudも対応するプロバイダーとして貢献している。 https://github.com/virtual-kubelet/virtual-kubelet 18
  19. 19. Kubernetes Cluster kubelet Worker Node kubelet Worker Node virtual-kub elet が作っ た仮想ノー ド マネージド Kubernetes AKSAlibaba Kubertenes 1. virtual-kubeletの仮想 ノードに対してPodの配置 を定義する。 2. virtual-kubeletはkubenetesの 拡張としてnodelessプラットフォー ムへPodの配置を行う Alibaba ECI Azure ACI [Pod] virtual-kubelet 少し具体的に わかりやすくしてみた。
  20. 20. virtual-kubelet Alibaba Cloudでやってみる 20 Kubernetes Cluster kubelet Worker Node kubelet Worker Node virtual-kub elet が作っ た仮想ノー ド Alibaba Cloud Container Service for Kubertenes (日本リージョン) 1. virtual-kubeletの仮想 ノードに対してPodの配置 を定義する。 2. virtual-kubeletはkubenetesの 拡張としてnodelessプラットフォー ムへPodの配置を行う [Pod] virtual-kubelet Alibaba Cloud Elastic Container Instance (シリコンバレーリージョン )
  21. 21. 詳しくはこちら(ブログとスライド) 21 Virtual Kubeletとは何か。Alibaba Cloud上で実際に動かして検証する https://blog.mosuke.tech/entry/2019/0 2/03/virtual-kubelet/
  22. 22. ロギング DaemonSetの配備はできないので、サイドカー方式でLogtailを 起動させてLogServiceとの連携が可能。 22 VPC Pod (ECI Instance) ENI Nginx コンテナ Logtail コンテナ LogService Object Storage MaxCompute <サンプルコードはこちらから > https://gist.github.com/mosuke5/75738 227c81f09994a66f607a5545bf6
  23. 23. Ingress 23 VPC Pod (ECI Instance) Pod (ECI Instance) Pod (ECI Instance) ENI ENI ENI Ingress L7 SLB L7のSLBがIngress機能をはたす。 L7 SLBにはURL-based forwardingの機 能お備えておりIngressの役割を担うこと が可能。 その他、SLBはSSLの終端も可能。 HTTP2への対応もばっちり foo.bar.com hoge.fuga.com <サンプルコードはこちらから > https://gist.github.com/mosuke5/75738 227c81f09994a66f607a5545bf6
  24. 24. 利用料金 値段はちなみに安くない。 serverless kubernetes自体はいま(2019年5月)は無料。 なので事実上ECIの値段が利用価格となる。 <価格モデル> (vCPU利用料 + メモリ利用料) * 起動した秒数 24
  25. 25. 1vCPU, 4GiBを1ヶ月起動した場合の価格 実際価格 ((0.000011 USD * vCPU) + (0.00000275 USD * GiB)) * sec = ((0.000011 USD * 1) + (0.00000275 USD * 4)) * 60 * 60 * 720 = 57.024 USD = 6272.64円 (1ドル=110円レート換算) ※SLBおよびトラフィック代は別途かかる 25
  26. 26. まとめ ● serverless kubernetesはECIを使ったサーバの管理不要を 実現したkubernetesクラスタ。その分制限事項も多い。 ● kubernetesという現代のデファクトスタンダードな技術を利用 してサーバレスコンピューティングを利用できる点は悪くなさ そう。 ● 裏側はvirtual-kubeletを活用している。 serverlessではない通常のクラスタにvirtual-kubeletを入れ てECIと併用活用も可能ということ。 26

×