💬

ゼロからわかるKubernetes 1章(概要編)

2024/04/26に公開

前提

  • 筆者も勉強中です、ほぼ備忘録です
  • とりあえずわかる、動く、変更できる、をゴールとしています
  • そのため、例え話などはわかりやすさ優先で書いています

この記事の対象者

  • 仕事や研究、学業ではじめてKubernetesを触るひと、これから学ぼうと思っているひと
  • 何かしらのプログラミング経験や、ソフトウェアエンジニアリングについて基礎的な知識があるひと
  • Kubernetesについて学習したが、「よくわからん...」というひと
  • 「とりあえずkubernetesで何か動かしたい」というひと
  • 何も考えずコピペでいいから動かしたいというひと

Kebernetesってなに?

  • クーバーネイティス、クバネテス、ケーエイツ、など呼び方は人によって違うようです
  • kubernetes(以下k8s)はコンテナオーケストレーションツールに分類されます
  • コンテナ化されたアプリケーションの管理やデプロイを自動化してくれます

という説明はどこを見ても書いてあります。つまり、コンテナを管理するためのコンテナツールのようなものだと覚えておけば今の段階では大丈夫です。

このようにまとめてコンテナを管理することで、以下のようなメリットがあります。

  • 障害が発生しても復旧や設定が楽に済む
  • 複数のコンテナをyamlファイルで設定を管理できる
  • アプリケーションを起動させるときに、各サーバ固有の設定を知らなくても良い

k8sでできること・嬉しいこと

  • 別ノード上のコンテナ間通信ができる
  • コンテナが偏らないようにスケジューリングができる
  • あるノードが死んでも残りのノードでサービスを継続できる
  • 複数マシンに展開する前提のyamlファイルで設定を一括化できる

など、Docker-composeだけでは不便な点を解消でき、メリットはたくさんあります。
個人レベルで開発していると恩恵は少ないように思いますが、一度覚えてしまえば、人的な管理コストは大きく下がります。

K8sでよく使う用語

Namespace

直訳すると名前空間。クラスタを仮想的にグルーピングすることができる。
つまり、まとまった単位でリソース(後述のPodやReplicaSetなど)を管理できる、コンテナを入れるさらに大きなコンテナのようなものです。一つのNamespace内ではリソースは同名にして管理します。

yamlファイルで管理できます。(xxxxxなど、名前は適宜変更してください)

namespace_example.yaml
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について解説します。
https://zenn.dev/macori/articles/f027186fceeecf

Discussion