Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introduction of Kubernetes &Rancher

Introduction of Kubernetes &Rancher

Kubernetes & Rancher WorkShop
Rancher V2.1.7 #rancherjp

cyberblack28

March 16, 2019
Tweet

More Decks by cyberblack28

Other Decks in Technology

Transcript

  1. Profile Twitter : cyberblack28 Blog : https://cyberblack28.hatenablog.com/ Job Educational Solution

    Architect Developer Advocate/Technical Evangelist Infrastructure Engineer Frontend Engineer Community Music,Live,FES !! Take a picture !! https://www.flickr.com/photos/cyberblack ISBN-10: 4798155373 ISBN-13: 978-4798155371 I wrote the Chapter 6 Rancher 2.0 part. Release on March 15,2018 #rancherjp #kujiraya #deepcn
  2. Agenda 1. Market trend of Kubernetes 2. Introduction of Kubernetes

    3. Introduction of Rancher 4. Kubernetes & Rancher Handson 5. Information
  3. Market trend of Kubernetes Kubernetesは十分成熟したソフトウェアに到達したとし、 CNCFのインキュベーション段階からの卒業を発表 by Publickey 2018.3.8 「Incubation

    Stage」(インキュベーション段階)では、ドキュメントが十分に用意され、健 全な人数のコミッタが揃い、開発が進められていることなどが確認されます。そして、ガバナ ンスとコミットプロセスなどが明示化され、事例などが整い、CNCFのTechnical Operating Committee(TOC)の投票によって卒業が認められる。 卒業にあたり、Kubernetesは、より速く成長し、活気に満ちた、健全で幅広い技術コミュニティを維持できる、 これまでにないほど強力なポジション
  4. Market trend of Kubernetes AWS上のKubernetesマネージドサービス「Amazon EKS」が正式版に by Publickey 2018.6.7 •

    Amazon EKSは昨年11月に米ラスベガスで行われたAWS re:Invent 2017で発表 • 米国東部 (バージニア北部) および米国西部 (オレゴン) のリージョン で利用可能。2018年12月末東京リージョンGA
  5. Market trend of Kubernetes Azure Kubernetes Service (AKS) GA –

    New regions, more features, increased productivity by Microsoft Azure Blog 2018.6.13 • 「Microsoft Build 2018」にて「Azure Container Service」から「Azure Kubernetes Service」と改名 • オーストラリア東部、英国南部、米国西部、米国西部2、北ヨーロッパの各 リージョンで利用可能。今後数カ月以内に10のリージョンでの追加展開が 予定
  6. Market trend of Kubernetes [速報]オンプレミスのKubernetesをGoogle Cloudで統合管理、 「Google Kubernetes Engine on-Prem」発表。Google

    Cloud Next ’18 by Publickey 2018.7.25 • ユーザのオンプレミス環境にGKE(Google Kubernetes Engine)と同等の Kubernetes環境を構築できる。 • Google Cloud ConsoleでオンプレミスのKubernetesクラスタの管理が可能 • Google Cloud Platform MarketplaceのKubernetes対応アプリの配布も対応
  7. Market trend of Kubernetes [速報]Google、コンテナ実行環境をサーバレスで提供する「Serverless containers」発表。 Google Cloud Next ’18

    by Publickey 2018.7.25 • Google Kubernetes Engine上で手軽にサーバレスなワークロードを実現 するためのアドオン「GKE serverless add-on」を発表 • コンテナベースのサーバレスアプリケーションをKubernetes環境で実現 するKnative(GKE serverless add-onとして提供される)を発表
  8. Market trend of Kubernetes GitHub Goes All in on Kubernetes

    by THENEWSTACK 2017.8.16 SRE(Site Reliability Engineering)の事例としても興味深い!!
  9. What’s kubernetes ? • コンテナーのスケジューリング • ローリングアップデート • オートスケーリング •

    死活監視 • コンテナーの自動修復 • サービスディスカバリ • ロードバランシング • ログ管理 • 頻繁なアプリケーションのデプロイを可能にす るシステム基盤 • 無停止によるリリース、高可用なシステム基盤 • 負荷に応じた伸縮自在なシステム基盤 Kubernetesの主な役割と実現 主な役割 実現
  10. Kubernetes Architecture Master API UI CLI Node 3 Node 2

    Node 1 Kubernetesは、構成要素としてMasterとNodeというコンポーネントがあります。 • Master クラスタの制御を受け持ち、スケジューリングやイベント検知など、クラスタの全体に関わる管理を担います。 • Node アプリケーションコンテナーの稼働場所となります。コンテナーランタイムが稼働し、Masterからの指示を受 けてコンテナーの起動等の実行を担います。 Node n Image Registry
  11. Kubernetes Architecture API UI CLI API Server Scheduler Controller-Manager etcd

    Master コンポーネント 概要 API Server kubernetesのAPIです。利用者との通信、REST,CRUD,認証認可を行います。 Scheduler PodをどのNodeへデプロイするかスケジューリングします。 Controller-Manager クラスタを制御するコンポーネントで、Nodeの稼働状況監視、コンテナーのレプリケーション等、リソース定義 を具現化します。 etcd クラスタの全情報を格納するデータストアです。他のコンポーネントはAPI Serverを経由して、etcdに保存された 情報を監視して、更新があると直ちに通知される仕組みになっています。
  12. Kubernetes Architecture Node コンポーネント 概要 Kubelet Nodeに配備されたPodのスケジューリングを監視して、YAMLファイルに基づいたContainer Runtimeを操作して Podの生成、更新、破棄などを行います。 Container

    Runtime kubeletから操作され、イメージの取得とコンテナーの実行を行います。Kubernetesはコンテナーランタイムの取 替が可能なため、Docker、containerd、rkt、cri-oなどのコンテナーランタイムを利用できます。 Kube-proxy 各Nodeで動作する、Serviceオブジェクトが持つCluster IPを転送するためのネットワークProxyです。デフォル トではiptablesが利用されます。 Master Kube-proxy Container Runtime Kubelet Node 1,2,3,n Pod Image Registry Pod Pod Pod Pod Pod Pod Pod Pod
  13. Kubernetes Architecture Pod • 1つまたは複数のコンテナーをデプロイする最小単位 • Pod内のコンテナーは同じホスト名とIPアドレスを持つ • Pod内のコンテナーは同じNode上で稼働 •

    Pod内のコンテナーは共通のライフサイクルを持つ Container Volume Pod Container Container Podは、ボリュームとネットワークを共有する1個以上のコンテナーグループ。 IPアドレス ※例としてContainerを 3個としています。
  14. Kubernetes Architecture Pod Node2 Container Pod Container Podは複数のNodeに跨ることはありません。 Node1 Node1

    Container Pod Container コンテナー同士はlocalhost通信 IPアドレス Container Pod Node2 IPアドレス
  15. Kubernetes Architecture Deployment & ReplicaSet Master Node 1,2,3,n Deployment 定義ファイル

    replicas:3 Controllers • ReplicationController D RS Kube proxy Container Runtime Kubelet Pod1 Pod2 Pod3 Controller-Manager D RS Deployment ReplicaSet 凡例 DeploymentはReplicaSetの作成、更新、履歴管理をします。 そして、ReplicaSetに指示して、Podのレプリカ数の調整 行い、定義ファイルのレプリカ数(replicas)を保証します。 また、Podに対してのローリングアップデート、ロール バックも行うことができます。 ReplicaSetは、定義された数のPodを常に起動させる仕組み です。 Image Registry
  16. Kubernetes Architecture Service Client Node Service Pod Pod Pod 機能

    概要 ClusterIP クラスタ内でPod同士が通信するためのプライベートIPアドレス ExternalIP 指定したNodeのIP:Portで受けたトラフィックをコンテナーに転送して、外部通信 NodePort 全NodeにおいてIP:Portで受けたトラフィックをコンテナーに転送して、外部通信 LoadBalancer LB経由でアクセス可能なService、L4ロードバランサ機能 endpoint Pod Pod Node Node LoadBalancer Serviceはクラスター内外からのリクエストをPodにアクセスする為のルーティングやDNS機能を提供するオブ ジェクトです。
  17. Difference between Rancher 1.6 and 2.1 1.6 2.1 • カタログ機能(docker-compose対応)によるワンク

    リックデプロイ • Networkとして、ipsec,vxlanをサポート • Storageとして、NFS,EBSをサポート • Architectureとして、Dockerベース • JavaとGoで書かれ、MySQLを使用 • マルチオーケストレーションサポート • Architectureとして、kubernetesベース • 100%Goで書かれ、etcdを使用 • オーケストレーションは、100% kubernetes • カタログ機能(Helm対応)によるワンクリックデプロイ • Networkは、flannel,canal,Calico等、kubernetesプラグイ ンを随時対応予定 • Storageは、kubernetesで利用可能なものは随時対応予定
  18. Rancher v2.1.0 • Rancher1系のCattle OrchestratorからRancher2系のKubernetesのマイグレーション機能 • Windows Kubernetesクラスタの実験的サポート 「Rancher 2.1を使ってWindows

    NodeをKubernetesクラスタに参加させる」http://ur0.link/PjA3 Main outline • Latest - v2.1.7 - rancher/rancher:latest • Stable - v2.1.7 - rancher/rancher:stable Version Rancher Release - v2.1.0 http://urx3.nu/MJA0 Details
  19. Feature of Rancher2.1 Kubernetes Clusters Create Import EKS GKE AKS

    vSphere Bare Metal Create,Import,Manage Kubernetes Clusters !! Manage “Kubernetes Everywhere”
  20. Rancher2.1 Technical Architecture Kubelet Kubelet Cluster Controller Auth Proxy Rancher

    Server RKE Nodes Kubectl Kubernetes API Rancher UI CLI API Rancher Component Other Kubernetes Master Legend Rancher API Server etcd Cluster Agent 1 Cluster Agent 2 RKE Kubernetes Master GKE Nodes GKE Kubernetes Master Kubelet Kubelet Kubelet Kubelet コンポーネント 概要 Rancher API Server ユーザー管理機能、認証機能、名前空間のグループ化、全 NodeのIDを追跡 Cluster Controller クラスタ、プロジェクトへのアクセス制御ポリシー管理、 クラスタセットアップ Cluster Agents ワークロード管理、グローバルポリシーで定義されている ロールと制約のクラスタ適用、クラスタからRancher Serverへ情報伝播 Auth Proxy 全てのkubernetes APIの呼び出しをプロキシし、ローカル 認証、AD、GitHub等の認証サービスと統合
  21. Rancher Labs New Project “Rio” Kubernetes, Istio, Service Mesh like

    Docker Darren Shepherd Co-founder and Chief Architect at Rancher Labs, Inc. @ibuildthecloud https://github.com/rancher/rio https://www.slideshare.net/cyberblackvoom/whats-rio-112779732 Rioの資料はこちら!!
  22. Get started with Rancher 2.1 OS Hardware Software Ubuntu 16.04

    (64-bit) Memory: 4GB • 1.12.6 • 1.13.1 • 17.03.2 Red Hat Enterprise Linux 7.5 (64-bit) RancherOS 1.3.0 (64-bit) Step 2: Start the server $ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher Web Access!! https://<server_ip> Step 1: Prepare a Linux Host
  23. Kubernetes & Rancher Handson 1. Rancher Serverの構築 2. Kubernetes Clusterの構築

    3. weavescopeカタログのデプロイ 4. RancherUIからkubectlコマンドの実行 5. Guestbookアプリケーションのデプロイ rancher-server rancher-host Guestbook Guestbook Rancher Server weavescope Agent Server
  24. Kubernetes & Rancher Handson 1.Rancher Serverの構築 1.Dockerのインストール(2台:rancher-server,rancher-host) $ curl https://releases.rancher.com/install-docker/18.09.sh

    | sh 2.Rancher2.0 Serverのインストール(1台:rancher-serverのみ) $ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher 3.ブラウザを起動して、RancherUIにアクセス(rancher-server) https://EXTERNAL-IP/ adminユーザのパスワード作成 Rancher Server URLの登録 ログイン完了 4.初回ログイン設定
  25. Kubernetes & Rancher Handson 4.「Node Role」の「etcd」と「Control Plane」にチェック、「Node Address」の「Public Address」に2台目(rancher- host)のIPアドレスを入力、「Copy

    to Clipboard」ボタンを押下、そのコマンドを2台目(rancher-host)のコンソールで実行 後に「Done」ボタンを押下 1 2 3 5 4 rancher-host コンソール
  26. Kubernetes & Rancher Handson 3.「kubectl get nodes」の実行 > kubectl get

    nodes NAME STATUS ROLES AGE VERSION rancher-host Ready controlplane,etcd,worker 1h v1.13.4 > kubectl version Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.5", GitCommit:"32ac1c9073b132b8ba18aa830f46b77dcceb0723", GitTreeState:"clean", BuildDate:"2018-06-21T11:46:00Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"} Server Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.4", GitCommit:"c27b913fddd1a6c480c229191a087698aa92f0b1", GitTreeState:"clean", BuildDate:"2019-02-28T13:30:26Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"} 4.「kubectl version」の実行
  27. Kubernetes & Rancher Handson 5.Guestbookアプリケーションのデプロイ 以下Guestbookアプリケーションのyamlファイルを利用して、デプロイします。 「https://raw.githubusercontent.com/kubernetes/examples/master/guestbook/all-in-one/guestbook-all-in-one.yaml」 1.Guestbookアプリケーションのデプロイ > kubectl

    apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook/all-in-one/guestbook-all-in-one.yaml service "redis-master" created deployment.apps "redis-master" created service "redis-slave" created deployment.apps "redis-slave" created service "frontend" created deployment.apps "frontend" created 2.デプロイの確認 > kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE frontend ClusterIP 10.43.161.216 <none> 80/TCP 24s kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 1h redis-master ClusterIP 10.43.169.190 <none> 6379/TCP 24s redis-slave ClusterIP 10.43.85.124 <none> 6379/TCP 24s
  28. Kubernetes & Rancher Handson 付録1:guestbook-all-in-one.yaml apiVersion: v1 kind: Service metadata:

    name: redis-master labels: app: redis tier: backend role: master spec: ports: - port: 6379 targetPort: 6379 selector: app: redis tier: backend role: master --- apiVersion: apps/v1 # for k8s versions before 1.9.0 use apps/v1beta2 and before 1.8.0 use extensions/v1beta1 kind: Deployment metadata: name: redis-master spec: selector: matchLabels: app: redis role: master tier: backend replicas: 1 template: metadata: labels: app: redis role: master tier: backend spec: containers: - name: master image: k8s.gcr.io/redis:e2e # or just image: redis resources: requests: cpu: 100m memory: 100Mi ports: - containerPort: 6379 --- redis-master
  29. Kubernetes & Rancher Handson 付録1:guestbook-all-in-one.yaml redis-slave apiVersion: v1 kind: Service

    metadata: name: redis-slave labels: app: redis tier: backend role: slave spec: ports: - port: 6379 selector: app: redis tier: backend role: slave --- apiVersion: apps/v1 # for k8s versions before 1.9.0 use apps/v1beta2 and before 1.8.0 use extensions/v1beta1 kind: Deployment metadata: name: redis-slave spec: selector: matchLabels: app: redis role: slave tier: backend replicas: 2 template: metadata: labels: app: redis role: slave tier: backend spec: containers: - name: slave image: gcr.io/google_samples/gb-redisslave:v1 resources: requests: cpu: 100m memory: 100Mi env: - name: GET_HOSTS_FROM value: dns # If your cluster config does not include a dns service, then to # instead access an environment variable to find the master # service's host, comment out the 'value: dns' line above, and # uncomment the line below: # value: env ports: - containerPort: 6379 ---
  30. Kubernetes & Rancher Handson 付録1:guestbook-all-in-one.yaml frontend apiVersion: v1 kind: Service

    metadata: name: frontend labels: app: guestbook tier: frontend spec: # if your cluster supports it, uncomment the following to automatically create # an external load-balanced IP for the frontend service. # type: LoadBalancer ports: - port: 80 selector: app: guestbook tier: frontend --- apiVersion: apps/v1 # for k8s versions before 1.9.0 use apps/v1beta2 and before 1.8.0 use extensions/v1beta1 kind: Deployment metadata: name: frontend spec: selector: matchLabels: app: guestbook tier: frontend replicas: 3 template: metadata: labels: app: guestbook tier: frontend spec: containers: - name: php-redis image: gcr.io/google-samples/gb-frontend:v4 resources: requests: cpu: 100m memory: 100Mi env: - name: GET_HOSTS_FROM value: dns # If your cluster config does not include a dns service, then to # instead access environment variables to find service host # info, comment out the 'value: dns' line above, and uncomment the # line below: # value: env ports: - containerPort: 80
  31. Information Docker実践ガイド 出版社: インプレス ISBN-10: 4844339621 ISBN-13: 978-4844339625 Dockerの基本から、オンプレミスでコンテナー環境を築く上で必要なことが網羅さ れている非常に興味深い内容です。2019/2/18に第二版発売

    Windowsコンテナー技術入門 出版社: インプレス ISBN-10: 4295000957 ISBN-13: 978-4295000952 Windowsコンテナーについて詳しく書かれている唯一の日本語書籍です。
  32. Information プログラマのためのDocker教科書 第2版 出版社: 翔泳社 ISBN-10: 4798153222 ISBN-13: 978-4798153223 プログラマがインフラ環境からDockerまで体系的に学べる良書です。インフラエ

    ンジニアにも読み応えあります。 Docker実践入門――Linuxコンテナ技術の基礎から応用まで 出版社: 技術評論社 ISBN-10: 4774176540 ISBN-13: 978-4774176543 LinuxコンテナーからDockerまでを丁寧に解説し、Linuxコンテナーの仕組みから 理解できます。
  33. Information 入門kubernetes 出版社: オライリージャパン ISBN-10: 4873118409 ISBN-13: 978-4873118406 こちらの書籍は、「Kubernetes Up

    & Running」の日本語訳です。訳者のお話によ ると、原書を元にかなり日本向けに改善されているとのことです。 コンテナ・ベース・オーケストレーション Docker/Kubernetesで作るクラウド時代のシステム基盤 出版社: 翔泳社 ISBN-10: 4798155373 ISBN-13: 978-4798155371 Google,RedHat,IBM,さくらインターネット,Rancherを中心にコンテナー単体からオーケスト レーションを始めるにあたりあらゆる側面からプラットフォームを紹介し、実践へ導く内容と なっています。
  34. Information The Kubernetes Book 出版社: Independently published ISBN-10: 1521823634 ISBN-13:

    978-1521823637 kubernetesの入門者向けの書籍で、イラスト図が多くわかりやすい内容です。 Kubernetes in Action 出版社: Manning Pubns Co ISBN-10: 1617293725 ISBN-13: 978-1617293726 内容は実践的となっていますが、こちらも図解が多くて分かりやすい書籍です。
  35. Information Kubernetes完全ガイド 出版社:インプレス ISBN-10: 4295004804 ISBN-13: 978-4295004806 第1章 なぜKubernetesが必要なのか? 第2章

    Kubernetes環境の選択肢 第3章 APIリソースとkubectl 第4章 Workloadsリソース 第5章 Discovery & LBリソース 第6章 Config & Storageリソース 第7章 ClusterリソースとMetadataリソース 第8章 リソース管理とオートスケーリング 第9章 ヘルスチェックとコンテナのライフサイクル 第10章 メンテナンスとノードの停止 第11章 高度で柔軟なスケジューリング 第12章 セキュリティ 第13章 マニフェストの汎用化を行うオープンソースソフトウェア 第14章 モニタリング 第15章 コンテナログの集約 第16章 CI/CD環境 第17章 マイクロサービスとServiceMesh 第18章 Kubernetesのアーキテクチャ 第19章 Kubernetesとこれから
  36. Information しくみがわかるKubernetes Azureで動かしながら学ぶコンセプトと実践知識 出版社:翔泳社 ISBN-10: 4798157848 ISBN-13: 978-4798157849 第1部 導入編

    第1章 コンテナーとKubernetes 第2章 Kubernetesの環境構築 第3章 Kubernetesを動してみよう 第2部 基本編 第4章 Kubernetesの要点 第5章 コンテナーアプリケーションの実行 第6章 アプリケーションのデプロイ 第3部 実践編 第7章 アーキテクチャと設計原則 第8章 可用性(Availability) 第9章 拡張性(Scalability) 第10章 保守性(Manageability) 第11章 リソース分離(Security) 第12章 可観測性(Observability)
  37. Information Kubernetes実践入門 プロダクションレディなコンテナ&アプリケーションの作り方 出版社:技術評論社 ISBN-10: 4297104385 ISBN-13: 978-4297104382 本書は、コンテナイメージの作成・デプロイ・運用という一連の流れに沿って、 アプリケーション(コンテナ)を本番運用で使える状態(プロダクションレディ)

    にまで持っていく方法を解説します。 具体的には、アプリケーションの開発や運用に携わる人向けに、Kubernetesクラスタ上で、 アプリケーション(コンテナ)のデプロイ、更新、安定性の向上、セキュリティの強化、 ロギング、モニタリングなどを行う方法を扱います
  38. Information Cloud Native Tokyo #01 2019/4/10 (wed) 18:30~22:00 日本電信電話株式会社 ソフトウェアイノベーションセンタ

    東京都港区芝浦 3-4-1 (グランパークタワー34F) 〜コンテナオーケストレーションプラットフォーム OpenShift & Rancher 特集〜
  39. Docker / Kubernetes / Rancher One Day Training 2019.4.15 https://eventregist.com/e/cndf2019training

    10:00〜10:20(20min):【概要編】コンテナーを取り巻く市場動向 10:20〜12:00(60min):【環境構築】 12:00〜13:00(60min):【昼休憩】セットアップ補助(お弁当をご用意します) 13:00〜15:00(110min+10min):【基礎編】Docker基礎 15:00〜16:30(80min+10min):【基礎編】Kubernetes(オーケストレーション) 16:30〜17:30(60min):【実践編】Rancher & Kubernetes #rancherjp Coupon Code rancherjp1000 #kujiraya Coupon Code kujiraya1000 CloudNative Days 2019 CloudNative Days Tokyo 2019 OpenStack Days Tokyo 2019 Toranomon Hills Forum, July 22-23, 2019 CloudNative Days Kansai 2019 2019.4.16 https://eventregist.com/e/cndf2019 JapanContainerDaysでも好評で完売した「1日でDocker/Kubernetesを基礎から学べる少数限定ト レーニング」を実施します。トレーニングを受けてカンファレンスに臨みましょう!