はじめに
こんにちは@sk_130と申します。
本記事は、タイトルに記載しました書籍にハンズオンが載っているのですが、そちらを実際に動かしてみてはまったところとか、ちゃんとうまくできるか、作業履歴を残したくて記事にしました。
書籍は全12章ですが、各章の単位で倣ってまとめていきます。この記事は7章から12章までまとめていきます
以下の本です
kubernetes, AKSを学ぶ上では良書だと思っています。
AKSはAzureのkubernetesのマネージドサービスですが、この本はAzure使いの人じゃなくても役に立ちます
kubernetesがよくわからん、、って人も手を動かしながら学べるところがいいですね。
7章:アーキテクチャと設計原則
ここからちょっと難しくなります。
コントロールプレーンのお話です。裏で動いている者たちのお話です
$ kubectl get pod -n kube-system
NAME READY STATUS RESTARTS AGE
azure-ip-masq-agent-vqmx9 1/1 Running 0 2d13h
azure-ip-masq-agent-vxvlg 1/1 Running 0 2d13h
azure-ip-masq-agent-xpn4x 1/1 Running 0 2d13h
coredns-845757d86-7b677 1/1 Running 0 2d13h
coredns-845757d86-fhkj2 1/1 Running 0 2d13h
coredns-autoscaler-5f85dc856b-vn27f 1/1 Running 3 2d13h
csi-azuredisk-node-49wnb 3/3 Running 0 2d13h
csi-azuredisk-node-vj57q 3/3 Running 0 2d13h
csi-azuredisk-node-zx8q5 3/3 Running 0 2d13h
csi-azurefile-node-5ggs2 3/3 Running 0 2d13h
csi-azurefile-node-c4lng 3/3 Running 0 2d13h
csi-azurefile-node-n6zmt 3/3 Running 0 2d13h
kube-proxy-78djl 1/1 Running 0 2d13h
kube-proxy-chvr7 1/1 Running 0 2d13h
kube-proxy-mm7hw 1/1 Running 0 2d13h
metrics-server-6bc97b47f7-rhzpn 1/1 Running 4 2d13h
tunnelfront-5495955989-gmkzd 1/1 Running 0 2d12h
また設計原則のお話もします。以下サイト参考です。
kubernetes Design and archtecture
補足:書籍記載のサイトでは以下のように書かれていました
上記のパスは以下の参照先になります
https://github.com/kubernetes/community/blob/master/contributors/design-proposals/architecture/architecture.md
Design proposals have been archived.
To view the last version of this document, see the Design Proposals Archive Repo.
Please remove after 2022-04-01 or the release of Kubernetes 1.24, whichever comes first.
結局のところ、クラスタ作成をちゃんとしようとすると以下の作業をしなきゃだめだが、結構難しい
実際的にはAKSなどのマネージドサービスがよしなにやってくれるので、深く意識はしなくても大丈夫そうと腹落ち
テキストにはもう少し以下のことが細かく書かれていました
Node間のネットワークの作成
Masterサーバの作成
Masterサーバ向けLBの作成
Nodeサーバの作成
Pod間ネットワークの作成
証明書の作成と配布
etcd設定ファイルの作成と配布
etcdの起動
kubernetes設定ファイルの作成と配布
kubernetesコンポーネント配布
kubernetesコンポーネント起動
kubernetesアドオンコンポーネントの作成
8章:可用性
etcdの永続化の話やサーバを意識したMasterやnodeの話
AKSはAKSリソースグループにAPIエンドポイントやMasterコンポーネント
管理インターフェースなどを管理する
AKSはリージョンまたぎできないので、SLAで別リージョンにコピーがいる場合、
TrafficManagerやCosmosDBを使う実装例が記載されている
9章:拡張性
ClusterAutosclerを用いた自水平自動スケールの話(Node)
以下のyamlファイルで設定をしています。
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
k8s-addon: cluster-autoscaler.addons.k8s.io
k8s-app: cluster-autoscaler
name: cluster-autoscaler
namespace: kube-system
中略
command:
- ./cluster-autoscaler
- --v=3
- --logtostderr=true
- --cloud-provider=azure
- --skip-nodes-with-local-storage=false
- --nodes=1:5:default #ここでNode数の最小:最大を設定
以下略
Podのスケール機能であるHPAとClusterAutosclerは共存可能です。
むしろスケール設計をするなら共存必要です
また、AKSだと以下サイトに記載のようにコマンドで設定可能
https://docs.microsoft.com/ja-jp/azure/aks/cluster-autoscaler
10章:保守性
サーバのアップデートの話、Cordonといった特定のNodeをスケジュール対象から外す仕組みや
DrainといったPodの削除と再作成をできる仕組みの話
コンポーネントアップデート戦略の話もでた
11章:リソース分離
Namespaceによるリソース分離やアカウントの話
認証認可の話などを扱う
RBAC(Role Based Acsess Control)という今後の標準認可方式を軸に記載
メモ書きでGitOpsの話もでている
これはyamlファイルをgitで管理して、gitでマニフェストやアプリを一括管理する
12章:可観測性
メトリックやログの話、といってもkubernetesでどうこうというよりは
FluentdやElasticSearch、Glafanaとかで収取しようねって話
AKSをべースにしているのでAzureMoniterやLogAnalyticsとかを使った話も記載
#Appendix:コマンドリファレンス
kubectlやAKSのコマンド一覧
#終わりに
これで一通りやり切りました。
後半は結構難しかったですが、この本一冊でかなりk8sの理解が深まりますので、是非ともおススメです!!