Kubernetesを利用したコンテナプラットフォーム(CP)、初心者向けOKDの構築

★★★ イベント情報 ★★★
◇【参加登録受付中】Kong Summit, Japan 2022◇
今年は12月15日に開催決定!最新情報とデモとともにKongと事例/ユースケースのご紹介などAPIエコノミーやマイクロサービスに関心のある開発者の方にとっては必見です。ぜひお申し込みください!イベントの詳細・お申込はこちら

★★★ Live配信告知 ★★★
◇11月29日開催 19:00~ 世界一わかりみの深いクラウドネイティブon Azure◇
テーマは「Web App for ContainersとKeycloakで最速OpenID Connect」です!

◇11月30日開催 17:00〜 知ってると ちょっと便利なコマンド集◇
知っていると少し効率の上がるようなコマンドをいくつかご紹介します!

こんにちは、サイオステクノロジーの前田です。コンテナの利用が増えてきております。docker等を利用している方も増えています。自分一人の作業や、小さい検証やローカルで作業する時は悩まみませんが、実際運用するときを考えるとどうしたらいいかという悩みは多くあります。Dockerを利用する場合はデータの保存や、コンテナが停止したときの考慮について悩みます。Kubernetsを使用する場合は、冗長構成とサーバの台数、監視ツールやGUIの設定と、カスタマイズの自由度の高さと考慮点の多さで悩んでしまいます。

そんな時に初心者の操作に易しく、費用にも優しいOKDがあります。OKDはkuberentesをコンテナプラットフォーム(CP)として利用するために欲しい機能を提供してくれます。本日はOKDの説明とAWS上に簡易構築する方法についてお話ししていきます。

OKDとは

Red Hat OpenShift Kubernetes プラットフォームのコミュニティ・ディストリビューションとなります。インストーラを利用してKubernetesクラスタを構築することができます。クラウドやベアメタルVM等いろいろな環境に構築できます。特にクラウドプラットフォームへのクイックインストールならば、簡単にインストールができます。

Kubernetesの運用機能(冗長性、モニタリング、OS)

Kubernetesで冗長とセキュリティを考慮する場合は多くのことを考える必要性があります。OKDは冗長性を考えたクラスター構築、OSはKubernetsを考慮したFedoraCoreOSです。さらに開発者と管理者の分離やモニタリング機能や管理コンソールも存在しており運用しやすい形式になっております。

OKDとOpenShiftの関連性

OKDとOpenShift Container Platform(OCP)はアップストリーム・ダウンストリームという関係ではありません。現在のOpenShift4環境では兄弟関係に近い類似品となっています。OpenShiftを利用する際はサブスクリプションを購入して利用する必要がありますが、OKDのライセンスは「Apache License 2.0」のため、商用利用で費用が発生しません。しかしRedHatの商用サポートは受けられないため自己管理で利用する必要があります。Kubernetesを1から利用してカスタマイズするよりも、OKDは気軽に安心して利用できます。

構成情報

OKDはカスタマイズでいろいろな設計ができます。今回はAWS上のOKDのクイックインストールの構成を記載します。

下記はAWS での Red Hat OpenShiftの記事に存在するOCPの構成図です。OKDはOCPと同様の構成になります。

OKDはAWSのいろいろな種類のリソースを利用しています。OKDクイックインストールで確認しておく箇所は下記になります。リソースが追加で必要な場合は、構築後の設定変更で対応可能です。

本記事の構成情報

  • クラスター情報
    • OKD 主機能範囲
      • Master Node 3台: EC2+EBS インスタンスtype m6g.xlarge
      • worker Node 3台: EC2+EBS インスタンスtype m6g.large
    • OKD 補助機能範囲
      • Load Balancer: ELB
      • DNS: Route 53
      • ネットワーク: VPS
      • 動的コンテナストレージ: EBS
  • 構築クライアントOS
    • CentOS Stream
  • 構成バージョン
    • OKD 4.10 

構築概要

OKDの構築概要を記載します。

  • 事前準備
    • DNSのゾーン設定
    • IAMユーザ作成
    • クライアントツールの設定
  • 構築作業
    • 設定ファイル作成
    • 自動構築実行
  • 正常性確認
    • OKD確認
    • AWS確認

OKDのドキュメントの情報で不明点がわからない場合は、OCPのドキュメント等を参考にします。

詳細構築作業

■事前準備:DNSのゾーン設定 Route53の確認

OKDクラスターを構築する環境でDNSのドメインを管理している必要があります。AWSのRoute53の設定を確認します。

パブリックホストゾーンの作成の参考ぺージ

 

管理しているzoneをdig等で確認して、外部から参照できることを確認します。

dig cpawstest.ps.staging-test.xxxx.jp

■事前準備:IAMユーザの作成

OKDの構築ではIAMユーザを利用してデプロイしていきます。IAMユーザには『AdministratorAccess 』のポリシーを設定します。

IAMユーザの設定の参考ページ

※OKDのIAMユーザのAWSリソース毎のポリシー設定は推奨されていません。

クライアント端末からAWS CLIでアクセスができるように設定します。

 

aws route53 list-hosted-zones-by-name

ゾーン情報が表示されるのを確認します。

■事前準備:クライアントツールの設定

クライアントの『oc』と『kubectl』とokd用のインストーラ『openshift-install』をダウンロードし設定していきます。

OKDのインストーラーをGithubからダウンロードします。

  • ダウンロード例
    • インストーラーとしてopenshift-install-linux-4.10.0-0.okd-2022-05-07-021833.tar.gzをダウンロード
    • クライアントとしてopenshift-client-linux-4.10.0-0.okd-2022-05-07-021833.tar.gzをダウンロード

ファイルを解凍します。

tar zxvf openshift-client-linux-*.tar.gz
tar zxvf openshift-install-linux-*.tar.gz

クライアントツールの設定をします。

mv kubectl oc /usr/local/bin/

クライアントツールの動作確認をします。

kubectl version
oc version
./openshift-install version

■構築作業:設定ファイル作成

OKDの設定ファイルの作成します。この設定ではクラスターの基盤環境先、基本ドメイン、クラスター名、リージョンの設定を行います。

下記コマンドを入力して対話型で設定します。

./openshift-install create install-config --dir=./config

設定1 SSHファイルの設定(AWSのOCPにはローカル環境からSSHできないため設定はなくてもよい)します。

? SSH Public Key [Use arrows to move, type to filter, ? for more help]
/root/.ssh/new_rsa.pub
> <none>

設定2 デプロイ先のプラットフォーム設定 (awsを選択)します。

? Platform [Use arrows to move, type to filter, ? for more help]
alibabacloud
> aws
azure
gcp
ibmcloud
openstack
ovirt

設定3 デプロイ先のリージョン選択(デプロイしたいリージョンを選択)します。

? Region [Use arrows to move, type to filter, ? for more help]
eu-west-3 (Europe (Paris))
me-south-1 (Middle East (Bahrain))
sa-east-1 (South America (Sao Paulo))
> us-east-1 (US East (N. Virginia))
us-east-2 (US East (Ohio))
us-west-1 (US West (N. California))
us-west-2 (US West (Oregon))

設定4 クラスターの基本ドメインを選択します。

? Base Domain [Use arrows to move, type to filter, ? for more help]
> cpawstest.ps.staging-test.xxxx.jp
sux5ntz5swkeddkx4fis.com

設定5 クラスターの名称を入力します。

? Cluster Name [? for help]

設定6 プルシークレットを入力します。

? Pull Secret [? for help]

今回はプライベートレジストリを使用しないため下記を入力します。

{“auths”:{“fake”:{“auth”:”aWQ6cGFzcwo=”}}}

上記でOKDのコンフィグファイルであるconfig/instal-config.yamlの作成完了です。

install-config.yamlはクラスター構築するとなくなります。再利用することも考えてバックアップを取得することをお勧めします。

■構築作業:クラスター構築

インストーラーを使用して構築します。AWS環境に自動的に構築されます。構築には1時間程度かかりますので、お待ちください。ネットワーク環境に不安がある方はscreenコマンド等を活用ください。

クラスター構築実行します。

./openshift-install create cluster --dir=./config

自動構築が終わるまでしばらく待ちます。(本構築では自動構築に50分かかっております)

INFO Credentials loaded from the "default" profile in file "/root/.aws/credentials" 
WARNING failed to find default instance type: no instance type found for the zone constraint 
WARNING failed to find default instance type: no instance type found for the zone constraint 
INFO Consuming Install Config from target directory 
INFO Creating infrastructure resources...         
INFO Waiting up to 20m0s (until 12:32AM) for the Kubernetes API at https://api.test.cpawstest.ps.staging-test.xxxx.jp:6443... 
INFO API v1.23.5-rc.0.2068+b463d71c3d5ca3-dirty up 
INFO Waiting up to 30m0s (until 12:45AM) for bootstrapping to complete... 
INFO Destroying the bootstrap resources...        
INFO Waiting up to 40m0s (until 1:10AM) for the cluster at https://api.test.cpawstest.ps.staging-test.xxxx.jp:6443 to initialize... 
INFO Waiting up to 10m0s (until 1:04AM) for the openshift-console route to be created... 
INFO Install complete!                            
INFO To access the cluster as the system:admin user when using 'oc', run 'export KUBECONFIG=/usr/local/src/okd/config/auth/kubeconfig' 
INFO Access the OpenShift web-console here: https://console-openshift-console.apps.test.cpawstest.ps.staging-test.xxxx.jp 
INFO Login to the console with user: "kubeadmin", and password: "xxxx-xxxx-xxxx-xxxx" 
INFO Time elapsed: 49m53s                      

注意事項:構築の途中にはOKDのAPIのポート6443番ポートでアクセスします。途中で進まなくなる場合はポート等を確認ください。

●簡易接続確認

To access the cluster as the system:admin user

に記載のexportコマンドを実行して環境設定を行います。

oc version

結果を確認してserverのバージョン情報が表示されることを確認します。

Client Version: 4.10.12
Server Version: 4.10.0-0.okd-2022-05-07-021833
Kubernetes Version: v1.23.5-rc.0.2068+b463d71c3d5ca3-dirty

 

■正常性確認:OKD正常性

OKDの正常性確認を行いきます。

●ノードの確認

oc get node
=結果=========================
NAME                           STATUS   ROLES    AGE    VERSION
ip-10-0-131-201.ec2.internal   Ready    master   101m   v1.23.5+b463d71
ip-10-0-140-174.ec2.internal   Ready    worker   83m    v1.23.5+b463d71
ip-10-0-146-194.ec2.internal   Ready    worker   83m    v1.23.5+b463d71
ip-10-0-156-121.ec2.internal   Ready    master   101m   v1.23.5+b463d71
ip-10-0-160-125.ec2.internal   Ready    master   101m   v1.23.5+b463d71
ip-10-0-163-252.ec2.internal   Ready    worker   83m    v1.23.5+b463d71
==============================す

全てのノードのステータスがReadyであることを確認します。

●machineの確認

oc get machine -n openshift-machine-api
=結果=================================
NAME                                 PHASE     TYPE         REGION      ZONE         AGE
test-mlcwt-master-0                  Running   m6i.xlarge   us-east-1   us-east-1a   104m
test-mlcwt-master-1                  Running   m6i.xlarge   us-east-1   us-east-1b   104m
test-mlcwt-master-2                  Running   m6i.xlarge   us-east-1   us-east-1c   104m
test-mlcwt-worker-us-east-1a-2j62g   Running   m6i.large    us-east-1   us-east-1a   91m
test-mlcwt-worker-us-east-1b-xpfbx   Running   m6i.large    us-east-1   us-east-1b   91m
test-mlcwt-worker-us-east-1c-rqdl6   Running   m6i.large    us-east-1   us-east-1c   91m
==================================

すべてのmachineのPHASEがRunningになっており、希望するAWSのREGIONにデプロイされていることを確認します。

●クラスターオペレータの確認

oc get co
=結果=================================
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE
authentication 4.10.0-0.okd-2022-05-07-021833 True False False 91m
baremetal 4.10.0-0.okd-2022-05-07-021833 True False False 112m
cloud-controller-manager 4.10.0-0.okd-2022-05-07-021833 True False False 123m
cloud-credential 4.10.0-0.okd-2022-05-07-021833 True False False 123m
cluster-autoscaler 4.10.0-0.okd-2022-05-07-021833 True False False 112m
config-operator 4.10.0-0.okd-2022-05-07-021833 True False False 119m
console 4.10.0-0.okd-2022-05-07-021833 True False False 95m
csi-snapshot-controller 4.10.0-0.okd-2022-05-07-021833 True False False 113m
dns 4.10.0-0.okd-2022-05-07-021833 True False False 111m
etcd 4.10.0-0.okd-2022-05-07-021833 True False False 117m
image-registry 4.10.0-0.okd-2022-05-07-021833 True False False 103m
ingress 4.10.0-0.okd-2022-05-07-021833 True False False 97m
insights 4.10.0-0.okd-2022-05-07-021833 True False False 114m
kube-apiserver 4.10.0-0.okd-2022-05-07-021833 True False False 97m
kube-controller-manager 4.10.0-0.okd-2022-05-07-021833 True False False 112m
kube-scheduler 4.10.0-0.okd-2022-05-07-021833 True False False 116m
kube-storage-version-migrator 4.10.0-0.okd-2022-05-07-021833 True False False 114m
machine-api 4.10.0-0.okd-2022-05-07-021833 True False False 105m
machine-approver 4.10.0-0.okd-2022-05-07-021833 True False False 112m
machine-config 4.10.0-0.okd-2022-05-07-021833 True False False 104m
marketplace 4.10.0-0.okd-2022-05-07-021833 True False False 112m
monitoring 4.10.0-0.okd-2022-05-07-021833 True False False 97m
network 4.10.0-0.okd-2022-05-07-021833 True False False 114m
node-tuning 4.10.0-0.okd-2022-05-07-021833 True False False 98m
openshift-apiserver 4.10.0-0.okd-2022-05-07-021833 True False False 98m
openshift-controller-manager 4.10.0-0.okd-2022-05-07-021833 True False False 111m
openshift-samples 4.10.0-0.okd-2022-05-07-021833 True False False 111m
operator-lifecycle-manager 4.10.0-0.okd-2022-05-07-021833 True False False 112m
operator-lifecycle-manager-catalog 4.10.0-0.okd-2022-05-07-021833 True False False 112m
operator-lifecycle-manager-packageserver 4.10.0-0.okd-2022-05-07-021833 True False False 112m
service-ca 4.10.0-0.okd-2022-05-07-021833 True False False 119m
storage 4.10.0-0.okd-2022-05-07-021833 True False False 114m
==================================

全てのクラスターオペレータのAVAILABLEの項目がTrueであることを確認します。

●管理者コンソールの確認

構築完了時に表示されたURL情報からブラウザでアクセスします。

構築完了時に表示された認証情報でログインします。

ステータスにエラーが表示されていないことを確認します。

■正常性確認:AWS確認

EC2の確認をします。ノードで利用しているEC2が起動していることを確認します。

 

 

リソースマネージャーのタグからAWSリソースが複数作成されていることを確認します。

cat config/metadata.json

 

■削除方法: クラスターの削除

削除方法は下記コマンドで削除します。

./openshift-install destroy cluster --dir=./config

最後に

生Kubernetesより構築が簡単にはなっていますが、いろいろな設定を行う必要があります。初心者向けに簡易には記載していますが、大変です。こちらでOKDが構築できれば、いろいろなことがWEBインターフェイスから対応できます。OKD4.10ではいろいろなガイドがWEBインターフェイスに追加されました。まずはそちらの内容から試してみてコンテナの可能性を実感していただけたならば幸いです。





ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!


ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる