このパートで一区切りです。
WordPressをインストールする
マニフェストファイルでMysqlとWordPressをインストールする
kubernetesにはマニフェストファイルというものがあります。
これは設計図のようなもので、このファイルを読み込ませることで設計してある通りに作成してくれます。
kubernetes.io
guide.ncloud-docs.com
今回はこれらのサイトを参考にしています。
特にNAVERさんのものがやりやすかったのでこのマニフェストファイルでデプロイしてみましょう。
まずはMySQLを入れていきます
##Mysqlで使うパスワードを設定します root@k8s-master:~# kubectl create secret generic mysql-pass --from-literal=password='好きなパスワードを入れてください' #これが表示されればOK secret/mysql-pass created ##NAVERさんのMySQLマニフェストファイルをデプロイするコマンド(これでMySQLがインストールされます。簡単!) root@k8s-master:~# kubectl apply -f https://gist.githubusercontent.com/NaverCloudPlatformDeveloper/39e63bf8051c2af338bf4728b4336358/raw/1804b7b36eb6818fedf600c73f6b9cf9219529a0/nks-tutorial-mysql.yaml ##これが表示されたらOKです persistentvolume/mysql-pv created persistentvolumeclaim/mysql-pv-claim created deployment.apps/wordpress-mysql created service/wordpress-mysql created ##NAVERさんのWordpressマニフェストファイルをデプロイするコマンド root@k8s-master:~# kubectl apply -f https://gist.githubusercontent.com/NaverCloudPlatformDeveloper/8bb23ccd8310f05d2ef737835d4d1748/raw/d97aa174df6f31d7c4b0de5957fe67c6a2846fe3/nks-tutorial-wordpress.yaml ##これが表示されたらOK deployment.apps/wordpress created service/wordpress created
これでkubernetesによるデプロイが完了しました。動いているか確認してみます
root@k8s-master:~# kubectl get pods NAME READY STATUS RESTARTS AGE wordpress-xxxxxxxxxx-xxxxx 1/1 Running 0 30s wordpress-mysql-xxxxxxxxx-xxxxx 1/1 Running 1 (118s ago) 2m23s
Container Creatingになっているときはしばらく待つとRunningになります。
では実際に動いているかkubectl get serviceでポート番号を確認します。
root@k8s-master:~# kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP xx.xx.xx.xx <none> 443/TCP 22h wordpress LoadBalancer xx.xxx.xxx.xxx <pending> 80:31784/TCP 22h wordpress-mysql ClusterIP None <none> 3306/TCP 22h
つまり31784ポートでうごいているみたいです。実際に行ってみましょう
無事WordPressのインストールページにありつけました
インストールもできてWordPressが動くことが確認できました
ついでにpodの詳細がわかるコマンドを確認しておきます。
root@k8s-master:~# kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES wordpress-5c9d4878bf-mtqxn 1/1 Running 0 22h xx.xxx.x.x worker2 <none> <none> wordpress-mysql-668d75584d-rn2ld 1/1 Running 0 22h xx.xxx.x.x worker1 <none> <none>
注目はNODEです。wordpress本体はworker2ノードにいるのに対して、mysqlはworker1ノードにいます。
wordpressはmysqlがないと動かないので冗長化になっていませんが、worker2とworker1は1つのアプリしか担当しなくてよいので負荷分散にはなっています。
(今回3VM使っている意味があんまりなかったですが、次はしっかりクラスタを作ってみたいと思います)
とりあえずPart3まで以上です。
今度replicasetでちゃんとしたクラスタの作成などもやってみたいと思います。
まあ次はwindowsとkubernetesの組み合わせを試すのが先かもですが。。
念のため:今回実験的に作っているので作成が確認できたらwordpressは削除してください
付録
今回使ったkubernetesのコマンド
kubectl create secret generic mysql-pass --from-literal=password='好きなパスワードを入れてください' ###################### kubectl createはkubernetesのあらゆるリソースを作成するコマンド このコマンドはsecretというパスワードを作ったりするものです
kubectl apply -f https://gist.githubusercontent.com/NaverCloudPlatformDeveloper/39e63bf8051c2af338bf4728b4336358/raw/1804b7b36eb6818fedf600c73f6b9cf9219529a0/nks-tutorial-mysql.yaml ###################### kubectl apply -f リンクかファイルでマニフェストファイルをデプロイできます。 今回はリンクでしたが、マニフェストファイルをダウンロードして、ファイルがあるパスを入れることでもデプロイできます。