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

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

クラスターを作る

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

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

クラスターに接続する

kubectlをインストールする

クラスターに接続する

  • クラスターの詳細情報から設定ファイルをダウンロードします。
  • クラスターアクセスには、2つの方法があります。
    • $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.12.7

Windowsにおける設定方法は、kubeconfigの環境変数を設定するをご参照ください。

アプリケーションを配布する

kubectlコマンドとともにKubernetes Manifestファイル(.yaml)を利用し、MySQLサービスとWordPressサービスとを配布してみます。

MySQLを配布する

  • WordPressに必要なMySQLを先に配布します。

MySQL Password Secretを作る

  • まず、kubectl create secretコマンドを利用してMySQLに接続するためのPasswordをSecretで作ります。以下の"YOUR_PASSWORD"部分に新しく作る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コマンドでWordPress podを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にアップデートされていることを確認することができます。

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

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

    処理中...