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

Windows コンテナ Dojo 第5回 OpenShift で学ぶ Kubernetes 入門

Windows コンテナ Dojo 第5回 OpenShift で学ぶ Kubernetes 入門

Red Hat OpenShiftの環境 (Red Hat OpenShift LocalまたはDeveloper Sandbox for Red Hat OpenShift) を利用し、主にコマンド中心で次のシナリオを体験します
・OCコマンドからOpenShiftに接続する
・Docker HubにあるNginxのイメージ(root権限不要のもの)を展開する
・起動中のPodを削除する
・PodをServiceで公開する
・ルートを作成する(※ KubenetesではなくOpenShiftの機能)
・ルートを使ってアプリにアクセスする
・DeploymentのPod数を増やす
・Deploymentに使っているコンテナイメージを更新する
・イメージの更新を取り消し、前のバージョンに戻す

Akira Onishi (IBM)

July 21, 2022
Tweet

More Decks by Akira Onishi (IBM)

Other Decks in Programming

Transcript

  1. ೔ຊΞΠɾϏʔɾΤϜגࣜձࣾ
    ςΫϊϩδʔࣄۀຊ෦
    ΧελϚʔɾαΫηε ϓϦϯγύϧɾϚωʔδϟʔ
    ݉ 8JOEPXT$POUBJOFS1PSUJOH1SPHSBNਪਐϦʔμʔ
    େ੢ জ "LJSB0OJTIJ!JCNDPN 5XJUUFS!POJBL

    IUUQTXXXGBDFCPPLDPNBLJSBPOJTIJ
    IUUQTXXXMJOLFEJODPNJOPOJBL
    Windows ίϯςφ %PKP
    ୈճ 0QFO4IJGUͰֶͿ ,VCFSOFUFTೖ໳

    View full-size slide

  2. ࣗݾ঺հ
    1SPQFSUZ 7BMVF
    ࢯ໊ େ੢ জ
    5XJUUFS-JOLFE*O POJBL
    *5ۀքྺ ೥໨
    ௚ۙͷ৬ྺ Microsoft ೥ *#.೥໨
    )BTI5BH ͍͍Ͷ͐੩Ԭੜ׆
    ࠲ӈͷ໏ ౿·Εͯ΋ͳ্ཱ͓͕ͪΔಓͷ૲
    Α͘࢖͏ٕ ೴಺ม׵Ͱࣗ෼ΛϙδςΟϒʹ
    IUUQTXXXGBDFCPPLDPNBLJSBPOJTIJ
    'BDFCPPLʮ͓ʹ͋͘ʯͰݕࡧ

    View full-size slide

  3. ୈճͷൣғ
    3FE)BU0QFO4IJGUΛ,VCFSOFUFTͱͯ͠ར༻
    ,VCFDUM ίϚϯυΛ࢖ͬͯ؀ڥΛૢ࡞
    ˞ମݧ͕த৺ͷͨΊɺ,VCFSOFUFTΛ໢ཏతʹ
    ղઆ͢ΔηογϣϯͰ͸͋Γ·ͤΜɻ

    View full-size slide

  4. 0QFO4IJGUɺϋΠϒϦουΫϥ΢υઓུ

    View full-size slide

  5. ,VCFSOFUFTϓϥοτϑΥʔϜ
    https://kubernetes.io/ja/docs/concepts/overview/what-is-kubernetes/
    ίϯςφͷ͋Δ΂͖ঢ়ଶΛ
    એݴతʹهड़ɺ
    ͦΕʹԠ࣮ͨ͡ߦɺࣗಈԽ
    ෛՙ෼ࢄɺࣗݾम෮
    ػີ৘ใͱߏ੒؅ཧ

    View full-size slide

  6. ,VCFSOFUFTΞʔΩςΫνϟʔ
    %#
    FUDE

    "1*4FSWFS
    $MJFOU6TFS
    LVCFDUM $-*
    8BUDIFS
    $POUSPMMFS
    /FUXPSLT
    7PMVNFT
    4FDSFUT

    3FRVFTU .POJUPS
    ,VCFSOFUFT͸σʔλϕʔε FUDE
    ͷΑ͏ͳ΋ͷ
    8BUDIFSͱ$POUSPMMFS͕σʔλϕʔε಺ͷมߋΛ൓ө͢Δ
    "1*4FSWFS͸ IUUQ3&45ʹΑΔσʔλϕʔεͷϑϩϯτΤϯυ
    /PEF
    /PEF
    1PE
    #BTF04,FSOFM
    $POUBJOFS
    3VOUJNF
    *NBHFT
    -JCFSUZ
    6CVOUV
    ,VCFMFU
    ,VCF
    1SPYZ
    1PE4FSWJDF
    $ $ $

    View full-size slide

  7. ,VCFSOFUFTͷϫʔΫϩʔυ
    https://kubernetes.io/ja/docs/concepts/workloads/
    1PE,VCFSOFUFT಺Ͱ
    ࡞੒ɾ؅ཧͰ͖Δ
    ίϯϐϡʔςΟϯάͷ
    ࠷খͷσϓϩΠՄೳͳϢχοτ
    ίϯςφͷΠϯελϯεʣ
    %FQMPZNFOUల։ͷཧ૝తͳঢ়ଶ
    3FQMJDBTFU1PEͷෳ੡໨ඪ

    View full-size slide

  8. ࠓ೔ͷ࿩୊
    3FE)BU0QFO4IJGUͷ؀ڥΛར༻͠ɺ
    ओʹίϚϯυத৺Ͱ࣍ͷγφϦΦΛମݧ͠·͢
    ɾ0$ίϚϯυ͔Β0QFO4IJGUʹ઀ଓ͢Δ
    ɾ%PDLFS)VCʹ͋Δ/HJOYͷΠϝʔδ SPPUݖݶෆཁͷ΋ͷ
    Λల։͢Δ
    ɾىಈதͷ1PEΛ࡟আ͢Δ
    ɾ1PEΛ4FSWJDFͰެ։͢Δ
    ɾϧʔτΛ࡞੒͢Δ ˞,VCFSOFUFTͰ͸ͳ͘0QFO4IJGUͷػೳ

    ɾϧʔτΛ࢖ͬͯΞϓϦʹΞΫηε͢Δ
    ɾ%FQMPZNFOUͷ1PE਺Λ૿΍͢
    ɾ%FQMPZNFOUʹ࢖͍ͬͯΔίϯςφΠϝʔδΛߋ৽͢Δ
    ɾΠϝʔδͷߋ৽ΛऔΓফ͠ɺલͷόʔδϣϯʹ໭͢

    View full-size slide

  9. ࢀߟ%PDLFS)VCΠϝʔδΛ࢖͏৔߹ͷ஫ҙ఺
    IUUQTDMPVESFEIBUDPNCMPHEFQMPZJOHJNBHFTGSPNEPDLFSIVC
    IUUQTDMPVESFEIBUDPNCMPHHFUUJOHBOZEPDLFSJNBHFSVOOJOHJOZPVSPXOPQFOTIJGUDMVTUFS
    https://cloud.redhat.com/blog/managing-sccs-in-openshift
    https://docs.openshift.com/container-platform/4.10/authentication/managing-security-context-constraints.html
    Docker Hubに公開されて
    いるコンテナイメージの中
    には、LinuxのRoot権限を
    必要とするものがあり、
    OpenShiftのセキュリティ
    設定により動作しない場合
    があります

    View full-size slide

  10. 3FE)BU0QFO4IJGUͷ؀ڥΛىಈ
    3FE)BU0QFO4IJGU-PDBMΛ͓࣋ͪͷ৔߹
    DSD TUBSU͋Δ͍͸(6*ϝχϡʔ͔Βىಈ
    ͋Δ͍͸
    %FWFMPQFS4BOECPYGPS3FE)BU0QFO4IJGU΁
    ઀ଓ

    View full-size slide

  11. PD ίϚϯυͷ༗ޮԽ
    3FE)BU0QFO4IJGU-PDBMͷ৔߹
    IUUQTBDDFTTSFEIBUDPNEPDVNFOUBUJPOFOVTSFE@IBU@PQFOTIJGU@MPDBMIUNMHFUUJOH@TUBSUFE@HVJEFVTJOH@HTHBDDFTTJOHUIFPQFOTIJGUDMVTUFSXJUIPD@HTH
    8JOEPXT 1PXFS4IFMM

    DSD PDFOWc*OWPLF&YQSFTTJPO
    .BD04
    FWBM DSD PDFOW

    GUIから
    [Open developer terminal]を
    選択すると oc コマンドが有効化され
    たターミナル (Windowsの場合は
    PowerShell)が起動します

    View full-size slide

  12. PD ίϚϯυͷμ΢ϯϩʔυ
    ΋͠3FE)BU0QFO4IJGU-PDBM؀ڥΛߏஙͰ͖ͣɺ
    %FWFMPQFS4BOECPYΛར༻͢Δ৔߹ɺԼه63-͔Β
    PD ίϚϯυΛऔಘ 3FE)BUΞΧ΢ϯτ͕ඞཁ

    IUUQTDPOTPMFSFEIBUDPNPQFOTIJGUEPXOMPBETUPPMPD
    PDίϚϯυͷ;JQϑΝΠϧʹLVCFDUMίϚϯυؚ͕·Ε͍ͯ·͢

    View full-size slide

  13. LVCFDUM ίϚϯυͷμ΢ϯϩʔυ
    https://kubernetes.io/ja/docs/tasks/tools/install-kubectl/
    kubectl コマンドは演習で必須です
    Ocコマンドをダウンロードした⽅は
    同梱のkubectlを使ってください
    もし今後、個別にkubectlの
    インストールが必要な場合は、
    このスライドにあるURLを参照し、
    インストール⽅法に従って、
    コマンドを有効にしてください

    View full-size slide

  14. PDίϚϯυͱLVCFDUMίϚϯυ
    OC コマンド
    kubectl コマンド
    Red Hat OpenShift API Server
    (クラスタAPI)
    Kubernetes API
    Server
    https://docs.openshift.com/container-platform/4.10/cli_reference/openshift_cli/usage-oc-kubectl.html
    https://kubernetes.io/ja/docs/concepts/overview/kubernetes-api/
    https://docs.openshift.com/container-platform/4.10/rest_api/index.html
    Red Hat OpenShift
    クラスタ
    Kubernetes
    クラスタ
    ※ kubectlからOpenShift API Serverへは接続できません

    View full-size slide

  15. Kubectl cluster-info のエラーメッセージ (developerアカウントでは権限が⾜りていない)
    To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
    Error from server (Forbidden): services is forbidden: User "developer" cannot list resource "services" in API group
    "" in the namespace "kube-system"
    ԋशPD ίϚϯυͱ LVCFDUM ίϚϯυ
    PD MPHJOVEFWFMPQFSQEFWFMPQFSIUUQTBQJDSDUFTUJOH
    PD OFXQSPKFDULVCF
    LVCFDUM DMVTUFSJOGP
    LVCFDUM DPOGJHHFUDPOUFYUT
    PD MPHPVU
    PD MPHJOVLVCFBENJO Qύεϫʔυ IUUQTBQJDSDUFTUJOH
    PD QSPKFDULVCF
    oc new-project kube101 のエラーメッセージ (Developer Sandboxだと許可されていない)
    Error from server (Forbidden): You may not request a new project via this API.

    View full-size slide

  16. ԋश4BOECPYͷ৔߹
    ↓の oc コマンド⾏をコピー

    View full-size slide

  17. ԋशίϯςφΠϝʔδ͔ΒΞϓϦల։
    LVCFDUM DSFBUFEFQMPZNFOUOHJOYBQQJNBHFOHJOYJODOHJOYVOQSJWJMFHFEBMQJOF
    LVCFDUM HFUQPET

    View full-size slide

  18. ԋशىಈதͷ1PEΛ࡟আ͢Δ
    LVCFDUM HFUQPET
    LVCFDUM EFMFUFQPE1PE໊ OHJOYBQQYYYY
    LVCFDUM HFUQPET
    IUUQTWJEFPJCNDPNDIBOOFMWJEFPEFMFUF1PE#Z,VCFDUM

    View full-size slide

  19. ԋश4FSWJDFΛ࡞੒͢Δ
    LVCFDUM FYQPTFEFQMPZNFOUOHJOYBQQUZQF/PEF1PSUQPSU
    LVCFDUM HFUTFSWJDFOHJOYBQQ
    Pod 1
    Label: app=nginx
    Port:32582
    https://kubernetes.io/ja/docs/concepts/services-networking/service/

    View full-size slide

  20. ԋशϧʔτΛ࡞੒͢Δ
    1. OpenShiftのコンソールを開き、
    画⾯左上のメニューから
    [Administrator]パースペクティブに
    切り替えます
    2. [ネットワーク] > [ルート]を選びます
    3. [ルートの作成]をクリックします
    https://access.redhat.com/documentation/ja-jp/openshift_container_platform/4.10/html/networking/_configuring-routes
    ※ もし[ルートの作成]が表⽰されて
    いない場合kubeadminとしてログインが必要

    View full-size slide

  21. ԋशϧʔτΛ࡞੒͢Δ ଓ͖

    4. 必須項⽬を⼊⼒します
    名前: nginx-app
    パス: /web
    サービス: nginx-app
    ターゲットポート: 8080 → 8080 (TCP)
    5. [作成]をクリックします

    View full-size slide

  22. ԋशϧʔτΛ࢖ͬͯΞϓϦʹΞΫηε
    1.[場所]に書かれているURLにアクセス
    2.次のページが表⽰されるのを確認
    404 Not Found
    nginx/1.15.12

    View full-size slide

  23. ԋश%FQMPZNFOUͷ1PE਺Λ૿΍͢
    LVCFDUM TDBMFEFQMPZNFOUOHJOYBQQSFQMJDBT
    IUUQTWJEFPJCNDPNDIBOOFMWJEFPLVCFDUM4DBMF%FQMPZNFOU
    --replicas= の数字を変えて、実⾏されているPodの数が
    変化することを確認しましょう
    Red Hat OpenShiftの実⾏環境で利⽤できるリソースに
    制約がある場合、必ずしも全てのPodが起動するとは
    限りません (Kubernetesとしては宣⾔された値に近づく
    よう努⼒しますが、利⽤可能なシステムリソースが
    確保できない場合は展開できないこともあります)

    View full-size slide

  24. ԋश%FQMPZNFOUͷΠϝʔδมߋ
    LVCFDUM TFUJNBHFEFQMPZNFOUOHJOYBQQOHJOYVOQSJWJMFHFEOHJOYJODOHJOYVOQSJWJMFHFE
    LVCFDUM SPMMPVUTUBUVTEFQMPZNFOUOHJOYBQQ
    IUUQTWJEFPJCNDPNDIBOOFMWJEFPLVCFDUM4FU*NBHFSPMMPVUVOEP
    nginxinc/nginx-unprivileged:1.15.12-alpine
    nginxinc/nginx-unprivileged:1

    View full-size slide

  25. nginxinc/nginx-unprivileged:1
    ԋशมߋͨ͠ΠϝʔδͷऔΓফ͠
    LVCFDUM SPMMPVUVOEPEFQMPZNFOUOHJOYBQQ
    IUUQTWJEFPJCNDPNDIBOOFMWJEFPLVCFDUM4FU*NBHFSPMMPVUVOEP
    nginxinc/nginx-unprivileged:1.15.12-alpine

    View full-size slide

  26. PS C:¥Users¥containerdev> oc login -u developer -p developer https://api.crc.testing:6443
    >> oc new-project kube101
    >> kubectl cluster-info
    >> kubectl config get-contexts
    Login successful.
    You have one project on this server: "test"
    Using project "test".
    Now using project "kube101" on server "https://api.crc.testing:6443".
    You can add applications to this project with the 'new-app' command. For example, try:
    oc new-app rails-postgresql-example
    to build a new example application in Ruby. Or use kubectl to deploy a simple Kubernetes application:
    kubectl create deployment hello-node --image=k8s.gcr.io/e2e-test-images/agnhost:2.33 -- /agnhost serve-hostname
    To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
    Error from server (Forbidden): services is forbidden: User "developer" cannot list resource "services" in API group "" in the namespace "kube-system"
    CURRENT NAME CLUSTER AUTHINFO NAMESPACE
    crc-admin api-crc-testing:6443 kubeadmin default
    crc-developer api-crc-testing:6443 developer default
    * kube101/api-crc-testing:6443/developer api-crc-testing:6443 developer/api-crc-testing:6443 kube101
    test/api-crc-testing:6443/developer api-crc-testing:6443 developer/api-crc-testing:6443 test
    PS C:¥Users¥containerdev> kubectl create deployment nginx-app --image=nginxinc/nginx-unprivileged:1.15.12-alpine
    >>
    >> kubectl get pods
    >>
    deployment.apps/nginx-app created
    NAME READY STATUS RESTARTS AGE
    nginx-app-7668764795-nfxxf 0/1 ContainerCreating 0 0s
    PS C:¥Users¥containerdev> kubectl delete pod nginx-app-7668764795-nfxxf
    pod "nginx-app-7668764795-nfxxf" deleted
    PS C:¥Users¥containerdev> kubectl get pods
    NAME READY STATUS RESTARTS AGE
    nginx-app-7668764795-s7k6n 1/1 Running 0 6s
    PS C:¥Users¥containerdev> kubectl expose deployment nginx-app --type="NodePort" --port=8080
    >> kubectl get service nginx-app
    service/nginx-app exposed
    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
    nginx-app NodePort 10.217.5.113 8080:32542/TCP 0s
    PS C:¥Users¥containerdev> kubectl scale deployment nginx-app --replicas=5
    deployment.apps/nginx-app scaled
    PS C:¥Users¥containerdev> kubectl get pods
    NAME READY STATUS RESTARTS AGE
    nginx-app-7668764795-5vqc9 1/1 Running 0 7s
    nginx-app-7668764795-7vmqf 1/1 Running 0 7s
    nginx-app-7668764795-s7k6n 1/1 Running 0 3m24s
    nginx-app-7668764795-swkt9 1/1 Running 0 7s
    nginx-app-7668764795-v7hz2 1/1 Running 0 7s
    PS C:¥Users¥containerdev> kubectl set image deployment/nginx-app nginx-unprivileged=nginxinc/nginx-unprivileged:1
    deployment.apps/nginx-app image updated
    PS C:¥Users¥containerdev> kubectl rollout status deployment/nginx-app
    deployment "nginx-app" successfully rolled out
    PS C:¥Users¥containerdev> kubectl rollout undo deployment nginx-app
    deployment.apps/nginx-app rolled back
    PS C:¥Users¥containerdev>
    演習確認︓
    Developer Sandbox for OpenShift
    Red Hat OpenShift Local (Windows 11 Pro)

    View full-size slide

  27. ·ͱΊ
    3FE)BU0QFO4IJGUͷ؀ڥΛར༻͠ɺ
    ओʹίϚϯυத৺Ͱ࣍ͷγφϦΦΛମݧ
    ɾ0$ίϚϯυ͔Β0QFO4IJGUʹ઀ଓ͢Δ
    ɾ%PDLFS)VCʹ͋Δ/HJOYͷΠϝʔδ SPPUݖݶෆཁͷ΋ͷ
    Λల։͢Δ
    ɾىಈதͷ1PEΛ࡟আ͢Δ
    ɾ1PEΛ4FSWJDFͰެ։͢Δ
    ɾϧʔτΛ࡞੒͢Δ ˞,VCFSOFUFTͰ͸ͳ͘0QFO4IJGUͷػೳ

    ɾϧʔτΛ࢖ͬͯΞϓϦʹΞΫηε͢Δ
    ɾ%FQMPZNFOUͷ1PE਺Λ૿΍͢
    ɾ%FQMPZNFOUʹ࢖͍ͬͯΔίϯςφΠϝʔδΛߋ৽͢Δ
    ɾΠϝʔδͷߋ৽ΛऔΓফ͠ɺલͷόʔδϣϯʹ໭͢

    View full-size slide

  28. ワークショップ、セッション、および資料は、IBMまたはセッション発表者によって準備され、それぞれ独⾃の⾒解を反映したものです。それらは情報
    提供の⽬的のみで提供されており、いかなる参加者に対しても法律的またはその他の指導や助⾔を意図したものではなく、またそのような結果を⽣むも
    のでもありません。本講演資料に含まれている情報については、完全性と正確性を期するよう努⼒しましたが、「現状のまま」提供され、明⽰または暗
    ⽰にかかわらずいかなる保証も伴わないものとします。本講演資料またはその他の資料の使⽤によって、あるいはその他の関連によって、いかなる損害
    が⽣じた場合も、IBMは責任を負わないものとします。 本講演資料に含まれている内容は、IBMまたはそのサプライヤーやライセンス交付者からいかな
    る保証または表明を引きだすことを意図したものでも、IBMソフトウェアの使⽤を規定する適⽤ライセンス契約の条項を変更することを意図したもので
    もなく、またそのような結果を⽣むものでもありません。
    本講演資料でIBM製品、プログラム、またはサービスに⾔及していても、IBMが営業活動を⾏っているすべての国でそれらが使⽤可能であることを暗⽰
    するものではありません。本講演資料で⾔及している製品リリース⽇付や製品機能は、市場機会またはその他の要因に基づいてIBM独⾃の決定権をもっ
    ていつでも変更できるものとし、いかなる⽅法においても将来の製品または機能が使⽤可能になると確約することを意図したものではありません。本講
    演資料に含まれている内容は、参加者が開始する活動によって特定の販売、売上⾼の向上、またはその他の結果が⽣じると述べる、または暗⽰すること
    を意図したものでも、またそのような結果を⽣むものでもありません。 パフォーマンスは、管理された環境において標準的なIBMベンチマークを使⽤し
    た測定と予測に基づいています。ユーザーが経験する実際のスループットやパフォーマンスは、ユーザーのジョブ・ストリームにおけるマルチプログラ
    ミングの量、⼊出⼒構成、ストレージ構成、および処理されるワークロードなどの考慮事項を含む、数多くの要因に応じて変化します。したがって、
    個々のユーザーがここで述べられているものと同様の結果を得られると確約するものではありません。
    記述されているすべてのお客様事例は、それらのお客様がどのようにIBM製品を使⽤したか、またそれらのお客様が達成した結果の実例として⽰された
    ものです。実際の環境コストおよびパフォーマンス特性は、お客様ごとに異なる場合があります。
    IBM、IBM ロゴ、ibm.com、IBM Cloud、IBM Cloud Paksは、 世界の多くの国で登録されたInternational Business Machines Corporationの商標です。他
    の製品名およびサービス名等は、それぞれIBMまたは各社の商標である場合があります。現時点での IBM の商標リストについては、
    www.ibm.com/legal/copytrade.shtmlをご覧ください。
    Microsoft, Windows, Windows Server, .NET Framework, .NET, .NET Coreは、Microsoft Corporationの商標または登録商標です。

    View full-size slide