0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

しくみがわかるkubernetes~Azureで動かしながら学ぶコンセプトと実践知識~ハンズオンやってみた【中盤】

Posted at

はじめに

こんにちは@sk_130と申します。

本記事は、タイトルに記載しました書籍にハンズオンが載っているのですが、そちらを実際に動かしてみてはまったところとか、ちゃんとうまくできるか、作業履歴を残したくて記事にしました。

書籍は全12章ですが、各章の単位で倣ってまとめていきます。この記事は4章から6章までまとめていきます
1~3章はこちら

以下の本です
kubernetes, AKSを学ぶ上では良書だと思っています。

AKSはAzureのkubernetesのマネージドサービスですが、この本はAzure使いの人じゃなくても役に立ちます
kubernetesがよくわからん、、って人も手を動かしながら学べるところがいいですね。

4章:kubernetesの要点

ここでは以下のことを学びました

kubernetesのコンセプトや仕組み、サーバ構成
リソース(Pod,ReplicaSet,Deployment,DaemonSet)
ネットワークの管理(Service,Ingress)
マニフェストファイル
Label
リソース分離(namespace)

kubernetesを語る上では重要な事項です
イラスト付きで説明されており、わかりやすかったです

5章:コンテナ - アプリケーションの実行

ここではPodを作成します。pod≒コンテナになり
ここにACRに格納したイメージをもとにコンテナをビルドして、実際にアプリを動かします。
podの変更や削除も行います

podは配置するnodeを指定できますし、配置したくないnodeを選択するもできるようです。

またPodのリソースリクエストに関するハンズオンや
HTTPリクエストの戻り値確認なども行いました。

他にもReplicaSetのハンズオンも実施しました。
ReplicaSetを設定することでpod数の変更ができます。
yamlの記述を書き換えることで、途中でpodを増やすことも可能です

他にも障害発生を意識したハンズオンも実施します
例えば、podを停止させたときに、再度podが立ち上がることを確認したり
nodeを落とした際に、別のnodeで再起動されることを確認したりします。

最後にpodのスケールについてハンズオンを実施します。
podのハンズオンは手動と自動の2パタン実施します。

手動水平スケールはコマンドでReplicaset数値を変えてpodを増やします。
以下のようなイメージで、pod数が変えられることを確認しました。

$ kubectl apply -f HPA/pod-scale.yaml 
replicaset.apps/nginx-replicaset created
$ kubectl get pod
NAME                     READY   STATUS    RESTARTS   AGE
nginx-replicaset-64qrf   1/1     Running   0          18s
nginx-replicaset-j2tjk   1/1     Running   0          18s
nginx-replicaset-v6c5h   1/1     Running   0          18s
$ kubectl scale --replicas=8 rs/nginx-replicaset
replicaset.apps/nginx-replicaset scaled
$ kubectl get pod
NAME                     READY   STATUS    RESTARTS   AGE
nginx-replicaset-2s8p8   1/1     Running   0          13s
nginx-replicaset-5wc76   1/1     Running   0          13s
nginx-replicaset-64qrf   1/1     Running   0          63s
nginx-replicaset-dk5tc   1/1     Running   0          13s
nginx-replicaset-j2tjk   1/1     Running   0          63s
nginx-replicaset-knk8d   1/1     Running   0          13s
nginx-replicaset-v6c5h   1/1     Running   0          63s
nginx-replicaset-wnghk   1/1     Running   0          13s

自動水平スケールはHPAを使ってスケールさせます。

詳しくは以下の記事を参考
【 Kubernetes 】 Horizontal Pod Autoscaler 入門

テキストではMAXを5台と設定しているので、徐々にPodが増えて5台になることを確認しました

$ kubectl apply -f HPA/replicaset-hpa.yaml 
replicaset.apps/busy-replicaset created
$ kubectl get pod
NAME                    READY   STATUS    RESTARTS   AGE
busy-replicaset-vxsmd   1/1     Running   0          14s
busy-replicaset-xtq5w   1/1     Running   0          14s
$ kubectl top pod
error: metrics not available yet #実行結果取得に時間がかかる
$ kubectl top pod
NAME                    CPU(cores)   MEMORY(bytes)   
busy-replicaset-vxsmd   100m         0Mi             
busy-replicaset-xtq5w   100m         0Mi             
$ kubectl apply -f HPA/hpa.yaml 
horizontalpodautoscaler.autoscaling/budy-hpa created
$ kubectl get hpa -w
NAME       REFERENCE                    TARGETS         MINPODS   MAXPODS   REPLICAS   AGE
budy-hpa   ReplicaSet/busy-replicaset   <unknown>/30%   1         5         0          10s
budy-hpa   ReplicaSet/busy-replicaset   100%/30%        1         5         2          15s
#台数が増え続ける
$ kubectl get pod
NAME                    READY   STATUS    RESTARTS   AGE
busy-replicaset-8vdsg   1/1     Running   0          15s
busy-replicaset-j9kkg   1/1     Running   0          15s
busy-replicaset-vxsmd   1/1     Running   0          2m44s
busy-replicaset-xtq5w   1/1     Running   0          2m44s 
$ kubectl get pod
NAME                    READY   STATUS    RESTARTS   AGE
busy-replicaset-8vdsg   1/1     Running   0          2m
busy-replicaset-c7dmg   1/1     Running   0          105s
busy-replicaset-j9kkg   1/1     Running   0          2m
busy-replicaset-vxsmd   1/1     Running   0          4m29s
busy-replicaset-xtq5w   1/1     Running   0          4m29s

6章:アプリケーションのデプロイ

ここではまずDeploymentについて触れます。
ブルーグリーンデプロイメントやローリングアップデートについて学びました

アプリケーションのバージョンを変えたりして、その時のpodの挙動を学びました。
実行結果は割愛します。

他にもConfigMapを扱ったりします。
これは、アプリケーション固有の設定情報や構成ファイル、コマンド引数、ポート番号
アプリケーションjン固有の識別情報を管理できる、環境変数管理するファイル的な役割です
他にもSecretというパスワードや鍵を管理するファイルも触ります

#おわりに
ここまでが基本編になります。
最終回では応用編を触れていきます

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?