はじめに
こんにちは@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というパスワードや鍵を管理するファイルも触ります
#おわりに
ここまでが基本編になります。
最終回では応用編を触れていきます