【k8s】Kubernetes ~ 基礎知識編 ~

■ はじめに

少しづつだが、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/

関連記事

KubernetesWindows / 環境構築編 ~
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