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

2.OpenShift_Brief_Overview_Difference_Kuberentes_コンテナ共創

11ab209b6dcacad4e5aa841af533a937?s=47 katahiro
August 27, 2021
440

 2.OpenShift_Brief_Overview_Difference_Kuberentes_コンテナ共創

11ab209b6dcacad4e5aa841af533a937?s=128

katahiro

August 27, 2021
Tweet

Transcript

  1. コンテナ共創センター勉強会 #5 OpenShift 特集 OpenShift って何ができるの?Kubernetes との違いをわ かりやすく解説! Cloud Solution

    Architect Yuhki Hanada 2021年 8月25日
  2. OpenShift と Kubernetes の違い Cluster services monitoring, registry, logging Application

    services middleware, functions, ISV Service mesh Developer services dev tools, automated builds, CI/CD, IDE Enterprise Linux CoreOS Kubernetes OpenShift Red Hat Support 開発・運用コンポーネント Kubernetes 環境を導入するためのOS + + + Kubernetes 機能拡張 ocコマンド,OTA, Router (Ingress) , OpenShift Virtualization, Security コンテナのベースイメージ + SWライブラリ PHP, Python, Perl, Ruby, Node.js,, MariaDB, MongoDB, MySQL, PostgreSQL etc + +
  3. Cluster services monitoring, registry, logging Application services middleware, functions, ISV

    Service mesh Developer services dev tools, automated builds, CI/CD, IDE Enterprise Linux CoreOS OpenShift Red Hat Support 開発・運用コンポーネント Kubernetes 環境を導入するためのOS + + + Kubernetes 機能拡張 ocコマンド,OTA, Router (Ingress) , OpenShift Virtualization, Security コンテナのベースイメージ + SWライブラリ PHP, Python, Perl, Ruby, Node.js,, MariaDB, MongoDB, MySQL, PostgreSQL etc + + Kuberetes コア単体では足りない部分の補強 1) Kubernetes がプラグインを前提として本体に機能を持ってない部分 2) 実際の運用要件では足りない部分の機能拡張、追加機能。 (専用UI、セキュリティ、テンプレート、OpenShift Virtualization,etc) アプリケーションを作成するのに必要な、ライブラリ類 PHP, Python, MySQL, Postgre 等の基本アプリケーション 運用ツール群 監視、ログ収集、サービスメッシュ監視、CI/CDのための開発ツール Kubernetes の Master Node / Worker Node 用の OS Kubernetes 環境をホストするためのコンテナ専用OS (CoreOS) OpenShift 4.8 時点で RHEL 8.4ベース OpenShift と Kubernetes の違い
  4. Cloud Native Landscape 出典:Db0HvRqXcAACdbO.jpg:large (2048×1152) (twimg.com) 課題: ・同じカテゴリーに同じ ような事ができるツール がたくさんある。

    ・全てのツールを把握す る事は不可能。 ・Enterprise で安心して 使用できそうなものがど れかわからない。 ・仮に良さそうなツール を選択して組み合わせた としても、/ サポートし ているベンダーが日本に いない / 問い合わせ先が バラバラになる/ 自分で サポートできるわけでな し…
  5. Cloud Native Landscape 出典:Db0HvRqXcAACdbO.jpg:large (2048×1152) (twimg.com) 課題: ・同じカテゴリーに同じ ような事ができるツール がたくさんある。

    ・全てのツールを把握す る事は不可能。 ・Enterprise で安心して 使用できそうなものがど れかわからない。 ・仮に良さそうなツール を選択して組み合わせた としても、/ サポートし ているベンダーが日本に いない / 問い合わせ先が バラバラになる/ 自分で サポートできるわけでな し… OpenShift に含まれ、サポート付 きで提供されるコンポーネント (一部)
  6. Kubneretes を使う時にしなければいけない選択(1) クラスターのネットワーク用のCNI対応のプラグイン | Kubernetes より抜粋 • Big Cloud Fabric

    (Big Switch Networks) • Calico • Cilium • CNI-Genie (Huawei) • Coil • Contrail / Tungsten Fabric • Flannel • Jaguar • k-vswitch • Knitter • Kube-OVN • Kube-router • NSX-T (VMware) • OpenVSwitch • OVN(Open Virtual Networking) • Romana • Weave etc… eth0 Pod Pod eth0 Node 間の物理ネットワーク eth0 eth0 クラスターネットワーク(仮想ネットワーク) Linux Bridge Linux Bridge veth veth ユーザーが選択して クラスターネットワーク用にKubenretes に組み込む ・Kubenretes 本体は、コンテナ間のクラスターネットワークを提供しない。 ・CNI (Countainer Network Interface) というインターフェースを定義 し、そこに3rd Partyが作成した仮想ネットワーク用のプラグインを使用する。 ・ユーザーが、CNI対応のプラグインを選択 ・OpenShift の場合は、「OpenShift SDN」と「OVN」と呼ばれるプラグイ ンが提供されている。(OVNに移行していく予定) ・提供元はそれぞれ違う ・サポートベンダーの有無もそれぞれ ・入手方法もそれぞれ
  7. Kubneretesを使う時にしなければいけない選択(2-1) Kind 一般的な呼び方 説明 Ingess Ingress (Ingress Controller や、それによって 処理される

    Ingress リソース (kind: Ingress) をまるっと指す) HTTP/HTTPSのアプリケーションを外部に公開する方法 L7アプリケーションをクラスターの外に公開 Service NodePort (Service の type が NodePort) 各 NodeのIPと静的なポートを使って「Serivce」を公開する。 L4 アプリケーションをクラスターの外に公開 Service LoadBalancer (Serivce の type が LoadBalancer) IaaS Cloud Provider の ロードバランサーを使用して 「Service」 を公開する。 実装そのものは、Cloud Providerによって異なる。 L4 アプリケーションをクラスターの外に公開。 [1] 例外もできつつある MetalLB, bare metal load-balancer for Kubernetes (universe.tf) アプリケーション(Pod) は、プライベートIPしかもっておらず、クラスター外部に公開するには、クラスター 外部の IPに紐付けて公開を行います。その方法には幾つかの方法があります。 Kubernetes 外部の仕組みと連携 するので、基本的[1]に AWS/GCP/Azure/IBM等の Cloud Providerのみが実装 Kubernetes 単体で構成できる Ingress を実現する実装が複数あ りユーザーが選択
  8. Kubneretesを使う時にしなければいけない選択(2-2) • AKS Application Gateway Ingress Controller AKSで使用可能 • Ambassador

    API Gateway Envoyベースの Ingress Controller。Datawire によるサポート提供。 • Voyager HAProxyベース。AppsCode Inc によるサポートと保守提供 • AWS ALB Ingress Controller AWS Application Load Balancer ベース。 • Contour Envoyベース。VMware • ハードウェア(MPX)、仮想化(VPX)、フリーコンテナ化(CPX) ADC用のIngressコントローラー Citrixによる提供 • F5 BIG-IP Container Ingress Services for Kubernetes F5によるサポートと保守提供。 • Gloo Envoyベース。solo.ipがエンタプライズサポート提供 • HAProxy Ingress HAProxy Technologies によるサポートと保守の提供。 • Control Ingress Traffic Istioベース。 • Kong Ingress Controller for Kubernetes Kong によるサポートと保守の提供。 • NGINX Ingress Controller for Kubernetes Nginx によるサポートと保守提供 • コミニティ版 Nginx Ingress Controller Kubernetes プロジェクトによって保守されている Nginx Controller (商用版と機能が違う) ・提供元はそれぞれ違う ・サポートベンダーの有無もそれぞれ ・入手方法もそれぞれ Ingressコントローラー | Kubernetes より抜粋 Ingress リソースを処理するための Ingress Controller は複数の選択肢があります。 OpenShiftは、Red Hat が提供する HAProxy ベースの Ingress Controller を 同梱
  9. Kubneretesを使う時にしなければいけない選択(3) 9 OS OS OS OS OS OS etcd kube-scheduler

    kube-apiserver kube-dns OS OS OS User のアプリケーション コンテナ コントロール・プレーン コンテナ ユーザー・アプリケーション コンテナ Router 監視 Logging Registry 運用コンポーネント コンテナ OS Kubernetes Cluster コンテナ・ランタイム (CRI / OCI Runtime) Kubernetes 自体には含まれてないので、 ユーザーが、各コミニュティ/ベンダー が提供している複数あるコンテナ・ラン タイムから選択 Kubernetes を動かすための Node の OS と、コンテナを稼働させるための Runtime はユーザーが選択する。 OpenShift のパッケージに CoreOS も含まれる Enterprise Linux CoreOS • kubelet の dockershim経由 • • • • • コンテナ・ランタイム
  10. コンテナと RHEL CoreOS Linux Kernel コンテナの実行に必要なモジュール Linux Kernel コンテナの実行に必要なモジュール RHEL

    7 固有の部分 (使用されない) Linux A ミドルウェア ユーザーアプリ RHEL7 Red Hat UBI 7 ミドルウェア ユーザーアプリ Linux B ミドルウェア ユーザーアプリ Linux A ミドルウェア ユーザーアプリ Red Hat UBI 7 ミドルウェア ユーザーアプリ Linux B ミドルウェア ユーザーアプリ ②Red Hat の提供するミドルウェ アライブラリを使用した場合のサ ポート範囲 Red Hat に よるサポー ト提供範囲 通常のOSを Host に使用した場合 ①コンテナ専用OSのエンタイトルメントが OpenShiftに付属 OpenShift には CoreOS や、ミドルウェア・ライブラリのエンタイトルメントも含まれているため、UBIイメージを使用する事で OSレ イヤーからミドルウェアまでの一括したサポートを受ける事ができます。 ※資料作成時点で OpenShift の Host OS として CoreOS /RHEL 7 以外の OSについてはテストはされておらず、サポートの対象外です。 ③ UBIは再配布可能で通常サ ポートは無いが、OpenShift 上で使うとサポートあり RHEL CoreOS アタック サーフェ スの削減
  11. Automated operations Enterprise Linux CoreOS 11 コンテナの運用・アプリ開発に必要なコンポーネント コンテナの運用には、監視ツールやログ収集だけでなく、コンテナを保管するためのレジストリや、コンテナビルドの自動化のためツー ルを付属 クラスター運用サービス

    クラスタ管理を容易にし、運用業務を自動化するサービス Physical Virtual Private Public Any infrastructure 開発者向けツール 開発者がコンテナアプリケーション開発に集中できる環境を整えるサービス Cluster services monitoring, showback, registry, logging Application services middleware, functions, ISV Service mesh Developer services dev tools, automated builds, CI/CD, IDE certified アプリケーション関連サービス マイクロサービス間の連携やファンクションサービスを実現を支援するサービス ログ収集 レジストリ 監視 ISV Middleware サーバレス用の 機能 ServiceMesh IDE CI/CD Developer Tools Build fast. Ship first. Tekton ArgoCD Knative fluentd Operator Hub Istio Prometheus Image Registry IDE用プラグイン
  12. OpenShift の構成

  13. Master Master Worker Worker PV用ストレージ DNS サーバー 外部向け LB 内部向け

    LB DHCP サーバー ID管理 サーバー OpenShift Cluster ※ネットワークの構成、周辺サーバーの配置はあくまで一例です。 OpenShift 構成サンプル ロードバランサー 周辺サーバー PV用ストレージ OpenShiftクラスター外からの • ユーザーアプリ • マスターへのアクセス のロードバランス OpenShift クラスター内からの • マスターへのアクセス のロードバランス Worker Node は追加する事ができる。 OpenShiftが提供している運用ツール類を全て使用する場合は、 ユーザーのコンテナを実行する Worker Node とは別に、追加 で3本程度の Worker Node が必要と考える。(Elastic Search 等は重たく、完全な冗長化のためには3 Nodeが必要) Kubernetes は IDを管理 する仕組みをもっていな いため、管理ユーザー以 外のユーザーが使用する 場合は、LDAP等のID管 理サーバーが必要です。 OpenShift のクラスターは必ずド メイン名が必要。 インターネットからアクセスでき るようにする場合は、インター ネット上のドメイン取得が必要。 Nodeを追加した時にIPアドレス と、DNSサーバーを割り振る 冗長化 ClusterへのNode追加時 にはロードバランサーの 設定の追加が必要
  14. Managed and Engineered by Red Hat & IBM Red Hat

    OpenShift on IBM Cloud (ROKS) OpenShift - Self Managed Cloud Platform Vendors OpenShift- Self Managed OpenShiftのマルチプラットフォーム対応 14 オンプレミス (ベアメタル/VMware/ RHV/ Nutanix / OpenStack) Azure Red Hat OpenShift (ARO) Managed by Red Hat & Azure OpenShift- Self Managed OpenShift- Self Managed 自主運用 (※3) Red Hat が運用主体 (※1) クラウドベンダ 主体による運用 (※2) OpenShift Dedicated Managed By Red Hat Red Hat OpenShift Service on AWS (ROSA) Managed by Red Hat & AWS OpenShift – Self Managed 対応環境の違い OpenShift は、Open な性質を生かして、様々な環境に対応しています。 様々なのクラウドプロバイダー上でも、Kuberentes サービスとして使用されています。 運用主体の違い OpenShift Dedicated Managed By Red Hat OpenShift- Self Managed Cloud Platform Vendor の各種 サービス ※1) クラウドベンダーの Platform に RedHatが OpenShift をインストールし、Managed サービスを提供する形態 ※2) クラウドベンダーのサービスとしてUI等が統合されていて、クラウドベンダーの Managed サービスとして販売されているもの。運用体制はサービスに よって異なり、OpenShift の問題は、RedHat側にチケットをあげられる仕組みものもある。 ※3) ユーザーが自分でクラウドベンダー上に OpenShiftをインストールする方法 Managed Service
  15. OpenShifift 基本構成 master Infra Node AZ2 master Infra Node AZ1

    master Infra Node AZ3 クラウド上 Worker Node Worker Node Worker Node Worker Node Worker Node Worker Node master Infra Node Server2 master Infra Node Server1 master Infra Node Server 3 Worker Node Worker Node Worker Node Worker Node Worker Node Worker Node 物理サーバー上の仮想マシン • Master Node は、3本で高可用性を実現しているので、HA構成を別途組む必要はない。 • Infra Node とは OpenShift用語で技術的には Woker Node と同じもの。Monitoring や Logging、内部レジストリ等のコンテナ Infra 周りのコンポーネ ントを、ユーザーアプリとは分離して導入したい時に使用する。 • Pod が他の Node に移動しても、同じボリュームにアクセスできるようにするには、CSI(Container Storage Interface) を持った、ストレージを別途用意 する必要がある。Red Hat では、ODF (OpenShift Data Foundation)というソフトウェアベースの分散ストレージを提供している。 ポイント
  16. Kubernetes と ストレージ master Infra Node AZ2 master Infra Node

    AZ1 master Infra Node AZ3 Kubernetes のPVの仕組みを使わない Worker Node Worker Node Worker Node Worker Node Worker Node Worker Node master Infra Node Server2 master Infra Node Server1 master Infra Node Server 3 Worker Node Worker Node Worker Node Worker Node Worker Node Worker Node Kubernetes の PVの仕組みを使用する Worker Node Worker Node Worker Node Amazon RDS / Aurora Red Hat ODF (OpenShift Data Foundation) 分散ストレージ ※ OpenShift の オプション TCP/IP CSI driver Pod CSI driver Pod CSI driver Pod 分散ストレージによる冗長化 CSI driver Pod CSI driver Pod CSI driver Pod CSI driver Pod CSI driver Pod CSI driver Pod CSI driver Pod CSI driver Pod CSI driver Pod ODF Pod ODF Pod ODF Pod
  17. OpenShift 習得のためのリソース

  18. OpenShift を自分で学ぶ (セルフ・ラーニング) (1) クラウドサービス (有料) クラウド・プロバイダーから提供されている Managed の OpenShift

    サービスです。 IBM ROKS AWS ROSA (2) オンラインの無料 SaaS サービス (Katakodaを使った学習サービス) (無料) セットアップされた環境で、ガイド付きの学習サービスを受ける事ができます。 ・OpenShift の基本的な使い方 Courses and scenarios authored by OpenShift | Katacoda ・O’REILY のページ。OpenShift の上でいろいろなアプリを作成してみるトレーニング OpenShift: Interactive Learning Portal (3) オンライン上の開発者向けサービス(無料) Code Ready Workspace と言うブラウザから使用する開発環境と、セットアップ済みのオンラインのOpenShift 環境を 30日間提供しています。 (4) Code Ready Container (無料) – オンプレ (PC向き) テスト用にローカルのPCにインストールする事を目的とした、仮想マシンのシングルノードの OpenShift です。Kubernetes で言う minikube に相当しま す。 カテゴリーの記事一覧 赤帽エンジニアブログ (5) OKD (無料) – オンプレ / クラウド OpenShift の OSS版です。OpenShift のフル機能が使えます。 自分で構築して OpenShift / Kuberentes のインフラとしての構造を知りたい人向けです。AWS / Azure / GCPにも簡単に環境を作れます。 HWの要求仕様が高いので使用できるサーバー・リソースをたくさん持っている人向けです。
  19. まとめ

  20. まとめ 20 • OpenShift では、Kubernetes コアには含まれてないが、実際には必要になる、コミニティや3rd Party コンポー ネントを、パッケージし、サポートと伴に提供しています。 •

    コンテナの開発、運用に必要なツール類を提供 ( CI/CDツール、Integrated Regstry、Monitoring / Logging / Service Mesh等) • OSレイヤー、コンテナ・ベースイメージ(UBI)、基本的なミドルウェアライブラリまで、一貫したサポートを提 供します。
  21. None