$30 off During Our Annual Pro Sale. View Details »

2.OpenShift_Brief_Overview_Difference_Kuberentes_コンテナ共創

katahiro
August 27, 2021
610

 2.OpenShift_Brief_Overview_Difference_Kuberentes_コンテナ共創

katahiro

August 27, 2021
Tweet

Transcript

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

    View Slide

  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


    View Slide

  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 の違い

    View Slide

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

    View Slide

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

    View Slide

  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に移行していく予定)
    ・提供元はそれぞれ違う
    ・サポートベンダーの有無もそれぞれ
    ・入手方法もそれぞれ

    View Slide

  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 を実現する実装が複数あ
    りユーザーが選択

    View Slide

  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 を
    同梱

    View Slide

  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経由





    コンテナ・ランタイム

    View Slide

  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
    アタック
    サーフェ
    スの削減

    View Slide

  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用プラグイン

    View Slide

  12. OpenShift の構成

    View Slide

  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追加時
    にはロードバランサーの
    設定の追加が必要

    View Slide

  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

    View Slide

  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)というソフトウェアベースの分散ストレージを提供している。
    ポイント

    View Slide

  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

    View Slide

  17. OpenShift 習得のためのリソース

    View Slide

  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の要求仕様が高いので使用できるサーバー・リソースをたくさん持っている人向けです。

    View Slide

  19. まとめ

    View Slide

  20. まとめ
    20
    • OpenShift では、Kubernetes コアには含まれてないが、実際には必要になる、コミニティや3rd Party コンポー
    ネントを、パッケージし、サポートと伴に提供しています。
    • コンテナの開発、運用に必要なツール類を提供 ( CI/CDツール、Integrated Regstry、Monitoring / Logging /
    Service Mesh等)
    • OSレイヤー、コンテナ・ベースイメージ(UBI)、基本的なミドルウェアライブラリまで、一貫したサポートを提
    供します。

    View Slide

  21. View Slide