当該コンテンツは、ローカリゼーションサービスを準備しております。早急にローカライズサービスをご提供できるよう、努めております。

Kubernetes Serviceを使用してクラスタを配布する

このガイドでは、NAVERクラウドプラットフォームのKubernetes Serviceを使用して、クラスターにWordPressアプリケーションを配布します。

クラスター作り

  • NAVER クラウド プラットフォーム コンソールにログインします。
  • 左側のメニューからKubernetes Serviceを選択します。
  • 上段の作成ボタンをクリックします。
  • 次のステップを完了します。
    • クラスター設定
      • クラスタ名:希望の名前を入力します。
      • ノード数:このガイドではノード数を1 に設定します。
    • ログインキー設定
      • ワーカーノードに接続するために必要なログインキーを設定します。
    • 最終確認
      • 設定が正しくできていることを確認し、作成するボタンをクリックします。
  • 一定時間(分)経過後、クラスターの状態が運営中になると使用が可能になります。

詳しいガイドはリンクを参照してください。

クラスター接続

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-IPpending 状態で実際のアドレスに変更されると、サービスが可能になります。
  • 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にアップデートされたことが確認できます。

に対する検索結果は~件です。 ""

    に対する検索結果がありません。 ""

    処理中...