■ はじめに
少しづつだが、Kubernetes について勉強していく
目次
【1】Kubernetes 1)コンテナ管理の具体例 2)その他のコンテナオーケストレーション 3)docker-compose との比較 【2】公式サイト 【3】動画 【4】Kubernetes の基本構成要素 1)Node(ノード) 2)Kubernetes Cluster(クラスタ) 【5】Kubernetes の管理するコンテナ要素 1)Pod(ポッド) 2)ReplicaSet(レプリカセット) 3)Deployment(デプロイメント) 4)Service(サービス) 【6】用語整理 1)Amazon EKS
【1】Kubernetes
* Dockerコンテナ管理 => よく「コンテナのオーケストレーションツール」とか言われている
補足
* Kubernetes (ギリシャ語) = 操舵手, パイロット, 人生の道標 * koo-ber-net-ees = クーべネティス * 略語:K8s(k-eights) => 8文字の「ubernete」を「8」 * Google製 * Go言語で作成
1)コンテナ管理の具体例
* 複数のDockerホストの管理 * スケーリング / オートスケーリング * ロードバランシング * コンテナの死活監視 etc...
2)その他のコンテナオーケストレーション
1)Docker Swarm => Docker 標準 2)Apache MESOS
3)docker-compose との比較
* docer-compose は、コンテナ作成のみだが Kubernetes は、コンテナ作成+コンテナ監視・維持。 => 例えば、Kubernetes は、コンテナが停止しても、 維持のために新しいコンテナを作り直す
【2】公式サイト
* 充実している
https://kubernetes.io/ja/docs/home/
チュートリアル
https://kubernetes.io/ja/docs/tutorials/kubernetes-basics/create-cluster/cluster-interactive/
【3】動画
日本語
https://www.youtube.com/watch?v=PeRE90mSHQo
英語
https://www.youtube.com/watch?v=4ht22ReBjno&feature=youtu.be&t=31
【4】Kubernetes の基本構成要素
1)Node(ノード)
* アプリケーションを実行しているマシン => ノード自体は、一台の物理サーバもしくは仮想マシン => 以下のサイトの構成図が分かりやすい
https://thinkit.co.jp/article/17453
[1] Master Node (マスターノード)
* コントロールブレーン(制御盤)でWorker Nodeを管理する * コントロールブレーンは、以下の表の5つのコンポーネントで構成
# | 項目 | 内容 |
---|---|---|
1 | kube-apiserver | 外部とのやり取りをするサービス。kubectlコマンドを受けて実行 |
2 | kube-controller-manager | コントローラを統括管理し、実行 |
3 | kube-scheduler | Podをワーカーノードに割り当てるサービス |
4 | colud-controller-manager | AWSなどのクラウドサービスと連携し、サービスを作る |
5 | etcd | クラスタ情報を管理するキーバリュー型のデータベース |
[2] Worker Node (ワーカーノード)
* コンテナの実行ホストを提供する
# | 項目 | 内容 |
---|---|---|
1 | kube-let | マスターノードのkube-schedulerと連携して、ワーカーノード上にPodを配置し実行。また、Podを監視し、kube-schedulerへ通知 |
2 | kube-proxy | ネットワーク通信をルーティングする仕組み |
2)Kubernetes Cluster(クラスタ)
* 異なる役割を持つノードの「集まり(Cluster)」をクラスタとして管理
【5】Kubernetes の管理するコンテナ要素
1)Pod(ポッド) 2)ReplicaSet(レプリカセット) 3)Deployment(デプロイメント) 4)Service(サービス) Pod < ReplicaSet < Deployment
https://news.mynavi.jp/itsearch/article/devsoft/4358
https://blog.a-know.me/entry/2018/08/14/185324
https://qiita.com/sky0621/items/beb12145f1b674fe7904
https://qiita.com/tkusumi/items/01cd18c59b742eebdc6a
https://qiita.com/mihirat/items/ebb0833d50c882398b0f
1)Pod
* Kubernetesで管理するための最小構成単位 => コンテナの集合体(コンテナとボリュームのセット) => 基本的には1Pod:1コンテナだが、1Pod:複数コンテナも可能。 => Node とは、「1 Node:多 Pod」の関係
https://kubernetes.io/ja/docs/concepts/workloads/pods/pod/
https://kubernetes.io/ja/docs/concepts/workloads/pods/pod-overview/
2)ReplicaSet (ReplicationControllerの後継)
* Podを生成・管理 => 指定された数のポッドレプリカを維持するための Pod マネージャ的存在 => 障害などでPodが減少した場合、別ノードで自動的にPodを起動し、 レプリカ数を維持する
https://kubernetes.io/ja/docs/concepts/workloads/controllers/replicaset/
3)Deployment
* ReplicaSetを生成・管理
4)Service
* Podに対して、まとめて管理するもの
Service の種類
a)ClusterIP (デフォルト) ... Kubernetes内での通信で利用(クラスタ外からアクセスできない) b)NodePort ... 外部ネットワークからのアクセスを提供 ... KubernetesのNodeのランダムなポートを使用して外部サーバからアクセス c)LoadBalancer ... ロードバランサー d)ExternalName ... 外部サービスに対して、エイリアス(別名)を作成
https://kubernetes.io/ja/docs/concepts/services-networking/service/
【5】用語整理
1)Amazon EKS
* EKS : Elastic Kubernetes Service * Kubernetes クラスタを管理するための AWSサービス
参考文献
https://thinkit.co.jp/article/18079
https://thinkit.co.jp/article/13542
https://thinkit.co.jp/article/17453
https://qiita.com/mihirat/items/ebb0833d50c882398b0f
https://qiita.com/Kta-M/items/ce475c0063d3d3f36d5d
https://y-ohgi.com/introduction-kubernetes/
https://docs.microsoft.com/ja-jp/learn/modules/intro-to-kubernetes/
関連記事
Kubernetes ~ Windows / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2020/05/01/000000
Kubernetes ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/05/04/013529
Kubernetes ~ 基本編 / kubectlコマンド ~
https://dk521123.hatenablog.com/entry/2022/01/12/110555