当該コンテンツは、ローカリゼーションサービスを準備しております。早急にローカライズサービスをご提供できるよう、努めております。
Kubernetes Serviceを使用してクラスタを配布する
このガイドでは、NAVERクラウドプラットフォームのKubernetes Serviceを使用して、クラスターにWordPressアプリケーションを配布します。
クラスター作り
- NAVER クラウド プラットフォーム コンソールにログインします。
- 左側のメニューからKubernetes Serviceを選択します。
- 上段の作成ボタンをクリックします。
- 次のステップを完了します。
- クラスター設定
- クラスタ名:希望の名前を入力します。
- ノード数:このガイドではノード数を1 に設定します。
- ログインキー設定
- ワーカーノードに接続するために必要なログインキーを設定します。
- 最終確認
- 設定が正しくできていることを確認し、作成するボタンをクリックします。
- クラスター設定
- 一定時間(分)経過後、クラスターの状態が運営中になると使用が可能になります。
詳しいガイドはリンクを参照してください。
クラスター接続
kubectl 設置
- 生成されたクラスターにつなげるためにはCLIである
kubectl
が必要です。 下記の公式文書より運営システムに合ったオブジェクトをインストールします。
クラスター接続
- クラスタの詳細情報から設定ファイルをダウンロードします。
- クラスターへのアクセスには二つの方法があります。
- $HOME/.kube/configに設定ファイル追加
- kubectl コマンド使用時に --kubeconfig 「設定ファイル」オプション追加
- 今回の説明では、
--kubeconfig "設定ファイル"
オプションを使用します。 - 利便性を高めるため、設定ファイルがあるパスで
$KUBE_CONFIG
環境変数を設定し、実行します。 以下の"設定ファイル"
の部分にダウンロードした設定ファイルのパスを入力します。
export KUBE_CONFIG="設定ファイル"
例:
export KUBE_CONFIG=kubeconfig-318.yaml
kubectl get nodes
コマンドを使用して、クラスタ ノードがクラスタ作成時に設定した数(1つ)だけ出ているかを照会します。
kubectl --kubeconfig $KUBE_CONFIG get nodes
- 実行結果
NAME STATUS ROLES AGE VERSION
nks-pool-318-w-181 Ready node 7m v1.16.6
Windows での設定方法は、kubeconfig 環境変数を設定するを参照してください。
アプリケーション配布
kubectl コマンドとともに、Kubernetes Manifest ファイル(.yaml)を使用して、MySQL サービスと WordPress サービスを配布してみます。
MySQL 配布
- WordPressに必要なMySQLを先に配布します。
MySQL Password Secret 生成
まず、「kubectl create secret」コマンドを使用してMySQLに接続するためのパスワードをSecretとして生成します。 下の ''YOUR_PASSWORD'' の部分に新しいパスワードを入力します。
kubectl --kubeconfig $KUBE_CONFIG create secret generic mysql-pass --from-literal=password="YOUR_PASSWORD"
実行結果
secret/mysql-pass created
例: kubectl --kubeconfig $KUBE_CONFIG create secret generic mysql-pass --from-literal=password=1234
MySQL アプリケーション配布
- MySQL を配布するために、以下のリンクの Manifest ファイルを使用します。 Manifest ファイルには、MySQL サービスに必要なオブジェクトである PersistentVolume、PersistentVolumeClaim、Deployment、Service が定義されています。
- 以下のように
kubectl apply -f
コマンドを使用し、上記のManifestファイルをクラスタに反映します。
kubectl --kubeconfig $KUBE_CONFIG apply -f https://gist.githubusercontent.com/NaverCloudPlatformDeveloper/39e63bf8051c2af338bf4728b4336358/raw/1804b7b36eb6818fedf600c73f6b9cf9219529a0/nks-tutorial-mysql.yaml
- 実行結果
persistentvolume/mysql-pv created
persistentvolumeclaim/mysql-pv-claim created
deployment.apps/wordpress-mysql created
service/wordpress-mysql created
実際のサービスでは、安定した運営のために Cloud DB for MySQL サービスの使用をお勧めします。
WordPress 配布
- MySQL が正しく生成されている場合は、今回は WordPress を配布するために以下のリンクにある Manifest ファイルを使用します。 Manifestファイルには、Deployment、Serviceが定義されています。
- MySQL と同様に
kubectl apply -f
コマンドで WordPress を配布します。
kubectl --kubeconfig $KUBE_CONFIG apply -f https://gist.githubusercontent.com/NaverCloudPlatformDeveloper/8bb23ccd8310f05d2ef737835d4d1748/raw/d97aa174df6f31d7c4b0de5957fe67c6a2846fe3/nks-tutorial-wordpress.yaml
- 実行結果
deployment.apps/wordpress created
service/wordpress created
kubectl get service --watch
コマンドでWordPressサービスの配布状況をリアルタイムで確認することができます。
kubectl --kubeconfig $KUBE_CONFIG get service wordpress --watch
- 実行結果
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
wordpress LoadBalancer 172.21.5.101 <pending> 80:31864/TCP 35s
wordpress LoadBalancer 172.21.5.101 slb-1815725.n... 80:31864/TCP 40s
- 一定の時間経過後に
EXTERNAL-IP
がpending
状態で実際のアドレスに変更されると、サービスが可能になります。 kubectl get service
コマンドでWordPress サービスのEXTERNAL-IP
全体アドレスを確認します。
kubectl --kubeconfig $KUBE_CONFIG get service wordpress
- 実行結果
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
wordpress LoadBalancer 172.21.5.101 slb-1815725.ncloudslb.com 80:31864/TCP 70s
- ブラウザからWordPress ServiceのEXTERNAL-IP(例:slb-1815725.ncloudslb.com)にアクセスすると、WordPress画面が確認できます。
Pod スケーリングする
現在のPod照会
kubectl get pods
コマンドで現在mysql podとWordPress podが1つずつあることを確認します。
kubectl --kubeconfig $KUBE_CONFIG get pods
- 実行結果
NAME READY STATUS RESTARTS AGE
wordpress-6d884d9866-lj5bl 1/1 Running 0 10m
wordpress-mysql-7977b9588d-gbtll 1/1 Running 0 11m
Pod スケール
kubectl scale
コマンドでWordPresspodを3つに増やしてみます。
kubectl --kubeconfig $KUBE_CONFIG scale deployments/wordpress --replicas=3
- 実行結果
deployment.extensions/wordpress scaled
結果確認
- 再び
kubectl get pods
コマンドを使うと、WordPress podだけが3つに増えたことが確認できます。
kubectl --kubeconfig $KUBE_CONFIG get pods
- 実行結果
NAME READY STATUS RESTARTS AGE
wordpress-6d884d9866-2c8cl 1/1 Running 0 5s
wordpress-6d884d9866-7rxj8 1/1 Running 0 5s
wordpress-6d884d9866-lj5bl 1/1 Running 0 12m
wordpress-mysql-7977b9588d-gbtll 1/1 Running 0 14m
Application Updateする
- 現在5.2バージョンで駆動中のWordPressのバージョンを5.2.2バージョンにアップデートしてみます。
現在のバージョン確認
kubectl get deployments -o wide
コマンドで現在のWordPressイメージのバージョン(5.2)を確認します。
kubectl --kubeconfig $KUBE_CONFIG get deployments wordpress -o wide
- 実行結果
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
wordpress 3 3 3 3 55m wordpress wordpress:5.2-apache app=wordpress,tier=frontend
バージョン·アップデート
kubectl set image
コマンドを使用して、現在5.2バージョンで駆動中のWordPressのバージョンを5.2.2バージョンに変更します。
kubectl --kubeconfig $KUBE_CONFIG set image deployments/wordpress wordpress=wordpress:5.2.2-apache
実行結果
deployment.extensions/wordpress image updated
結果確認
再び
kubectl get deployments -o wide -w
オプションで変更されたWordPressアップデートをリアルタイムで確認します。
kubectl --kubeconfig $KUBE_CONFIG get deployments wordpress -o wide -w
- 実行結果
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR wordpress 3 3 3 3 55m wordpress wordpress:5.2-apache app=wordpress,tier=frontend wordpress 3 3 3 3 56m wordpress wordpress:5.2.2-apache app=wordpress,tier=frontend
- 一定時間が経過し、WordPressイメージバージョンがwordpress:5.2.2-apacheにアップデートされたことが確認できます。