ゼロからわかるKubernetes 1章(概要編)
前提
- 筆者も勉強中です、ほぼ備忘録です
- とりあえずわかる、動く、変更できる、をゴールとしています
- そのため、例え話などはわかりやすさ優先で書いています
この記事の対象者
- 仕事や研究、学業ではじめてKubernetesを触るひと、これから学ぼうと思っているひと
- 何かしらのプログラミング経験や、ソフトウェアエンジニアリングについて基礎的な知識があるひと
- Kubernetesについて学習したが、「よくわからん...」というひと
- 「とりあえずkubernetesで何か動かしたい」というひと
何も考えずコピペでいいから動かしたいというひと
Kebernetesってなに?
- クーバーネイティス、クバネテス、ケーエイツ、など呼び方は人によって違うようです
- kubernetes(以下k8s)はコンテナオーケストレーションツールに分類されます
- コンテナ化されたアプリケーションの管理やデプロイを自動化してくれます
という説明はどこを見ても書いてあります。つまり、コンテナを管理するためのコンテナツールのようなものだと覚えておけば今の段階では大丈夫です。
このようにまとめてコンテナを管理することで、以下のようなメリットがあります。
- 障害が発生しても復旧や設定が楽に済む
- 複数のコンテナをyamlファイルで設定を管理できる
- アプリケーションを起動させるときに、各サーバ固有の設定を知らなくても良い
k8sでできること・嬉しいこと
- 別ノード上のコンテナ間通信ができる
- コンテナが偏らないようにスケジューリングができる
- あるノードが死んでも残りのノードでサービスを継続できる
- 複数マシンに展開する前提のyamlファイルで設定を一括化できる
など、Docker-composeだけでは不便な点を解消でき、メリットはたくさんあります。
個人レベルで開発していると恩恵は少ないように思いますが、一度覚えてしまえば、人的な管理コストは大きく下がります。
K8sでよく使う用語
Namespace
直訳すると名前空間。クラスタを仮想的にグルーピングすることができる。
つまり、まとまった単位でリソース(後述のPodやReplicaSetなど)を管理できる、コンテナを入れるさらに大きなコンテナのようなものです。一つのNamespace内ではリソースは同名にして管理します。
yamlファイルで管理できます。(xxxxxなど、名前は適宜変更してください)
apiVersion: v1 # 設定ファイルの書き方のバージョン
kind: Namespace # 定義するリソースの種類
metadata:
name: xxxxx # 定義するnamespaceの名前
labels:
name: xxxxx
上記のyamlファイルはローカルの適当なディレクトリに配置して大丈夫です。
実際に適用させる際はターミナルで以下のコマンドを入力します。
kubectl apply -f namespace_example.yaml
作成したnamespaceと一覧を取得したい場合は以下のコマンドで取得できます。
kubectl get ns
また、初回のデプロイ時はapplyの代わりに以下のコマンドでも適用できます。
が、applyは初回でも使える上、適宜差分だけを更新してくれるので、基本的には全てapplyコマンドで大丈夫です。
kubectl create -f namespace_example.yaml
Pod
コンテナ群の使用を記述するリソース。2章以降で詳細に解説します。
PVC
k8s上で永続的にデータを保持するための要求書のこと。2章以降で詳細に解説します。
ReplicaSet
クラスタ上にPodオブジェクトを「いくつ動作させるか」を記述するリソースです。3章以降で詳細に解説します。
Deployment
ReplicaSetのデプロイ戦略(バージョン管理)を記述するリソースです。3章以降で詳細に解説します。
ClusterIP
Service(Podへの疎通性を確保するためのリソース)の一種です。PodからPodにアクセスできます。4章以降で詳細に解説します。
NodePort
Serviceの一種です。↑に加えて、クラスタ外部から疎通することができます。4章以降で詳細に解説します。
Loadbalancer
Serviceの一種です。↑にさらに加えて、外部のLoadbalancer(LB)を利用できます。4章以降で詳細に解説します。
Ingress
ドメインやURLで、サービスに着信を振り分けるリソースです。5章以降で詳細に解説します。
本記事のまとめ
本記事では、k8sの概要について記述しました。実践的な内容は次章以降になります。
2章ではPodとPVCについて解説します。
Discussion