Kubernetesとは?仕組み・できることとDockerとの違い

Kubernetesとは?仕組み・できることとDockerとの違い

Kubernetes(クバネティス)は、たくさんのコンテナを、たくさんのサーバーの上でまとめて管理するための仕組みです。クラウドのサービスや、AIの基盤など、規模の大きなシステムの多くで使われています。

ここでは、Kubernetesとは何かを、Dockerとの違いとできることから解説します。クラスタの構成や基本の用語に加えて、インフラエンジニアから見た現場での使われ方と学び方もまとめました。

SUMMARY
この記事で分かること
  • Kubernetesとは何か、Dockerとの違いとできること
  • クラスタの構成と、Pod・Deployment・Serviceなどの基本の用語
  • クラウドでの使われ方と、インフラエンジニアの学び方

Kubernetesとは?

コンテナをまとめて管理する仕組み

Kubernetesは、コンテナを動かすサーバーを束ねて、どのサーバーでどのコンテナを動かすか、止まったらどう立ち上げ直すかを自動で管理するオープンソースのソフトウェアです。こうした管理のことを、オーケストレーションといいます。

もとはGoogleが社内で使っていた仕組みをもとに開発され、今はCNCF(Cloud Native Computing Foundation)という団体のもとで開発が続いています。名前が長いため、「K8s(ケーエイツ)」と略されることもあります。

Dockerとの違い

項目DockerKubernetes
役割コンテナを作って動かすたくさんのコンテナをまとめて管理する
主な範囲1台のサーバー複数のサーバー(クラスタ)
向いている場面開発の環境、小さなシステム本番の大きなシステム
障害のとき止まったコンテナは、自分で立ち上げ直す止まったコンテナを、自動で立ち上げ直す

Dockerがコンテナを動かす道具なら、Kubernetesはたくさんのコンテナを動かし続けるための管理の仕組みです。2つは競合するものではなく、組み合わせて使われます。

Dockerについては、[Dockerとは]で解説しています。

Kubernetesでできること

できること内容
自動で復旧するコンテナやサーバーが止まると、別の場所でコンテナを自動で立ち上げ直す
数を自動で増減するアクセスが増えるとコンテナを増やし、減ると減らす
止めずに更新する新しい版のコンテナに少しずつ入れ替え、問題があれば元に戻す
負荷を分散する複数のコンテナに、アクセスを振り分ける
設定や秘密の情報を管理する設定やパスワードを、コンテナとは別に管理して渡す

インフラエンジニアがこれまで手順書と監視で守ってきた「止まらない」「増やせる」仕組みを、Kubernetesが自動で回してくれるイメージです。

Kubernetesの仕組みと基本の用語

クラスタの構成

Kubernetesでは、複数のサーバーをまとめた全体をクラスタと呼びます。クラスタは、主に次の2種類のサーバー(ノード)でできています。

種類役割
コントロールプレーンクラスタ全体の状態を管理し、どのノードで何を動かすかを決める司令塔
ワーカーノード実際にコンテナを動かすサーバー

コントロールプレーンが止まるとクラスタの管理ができなくなるため、本番では複数台で冗長化するのが一般的です。止まりにくい仕組みの考え方は、オンプレミスのサーバーの冗長化と同じです。

基本の用語

用語意味
PodKubernetesで動かす最小の単位。1つ以上のコンテナをまとめたもの
DeploymentPodをいくつ動かすか、どの版で動かすかを決めて管理する
Service複数のPodに、決まった入り口(名前やIPアドレス)を用意して、通信を振り分ける
Ingressクラスタの外からのWebのアクセスを、URLに応じて中のServiceに届ける
Namespace1つのクラスタの中を、チームや用途ごとに区切る
ConfigMap・Secret設定と、パスワードなどの秘密の情報を、コンテナとは別に管理する

最初は、Pod・Deployment・Serviceの3つを押さえれば、Kubernetesの基本の動きを理解できます。

「あるべき姿」を書いて管理する

Kubernetesでは、「このコンテナを3つ動かしておく」といったあるべき姿を、マニフェストというYAMLのファイルに書いて登録します。Kubernetesは今の状態を見張り続け、あるべき姿とずれていれば、自動で直します。

これは、インフラの構成をコードで書いて管理するIaCと同じ考え方です。IaCについては、[IaCとは]で解説しています。

よく使うコマンド

Kubernetesは、kubectl(キューブコントロール)というコマンドで操作します。

コマンドできること
kubectl apply -f ファイル名マニフェストの内容を、クラスタに反映する
kubectl get pods動いているPodの一覧を表示する
kubectl describe pod Pod名Podの詳しい状態や、起きたことの記録を表示する
kubectl logs Pod名Podのログを表示する
kubectl delete -f ファイル名マニフェストで作ったものを削除する

トラブルのときは、kubectl get でどこが止まっているかを見て、describe と logs で原因を探るのが基本の流れです。

現場での使われ方と学び方

クラウドのマネージドサービスで使うのが主流

Kubernetesのクラスタを自分で作って運用するのは、手間がかかります。そのため、今はクラウドのマネージドサービスで使うのが主流です。

サービス提供するクラウド
Amazon EKSAWS
Azure Kubernetes Service(AKS)Microsoft Azure
Google Kubernetes Engine(GKE)Google Cloud

マネージドサービスでは、コントロールプレーンの運用をクラウドの事業者に任せられます。利用者は、ワーカーノードとアプリの運用に集中できます。

クラウドの仕事については、[クラウドエンジニアとは]で紹介しています。

Kubernetesが向いている場面、向いていない場面

向いている場面向いていない場面
たくさんのコンテナを、本番で動かし続けるコンテナが数個だけの、小さなシステム
アクセスの増減が大きいWebサービス運用するメンバーが少なく、学ぶ時間が取れない
頻繁に更新するサービスほとんど変更しない、安定したシステム
AIの学習や推論の基盤仮想マシン1台で足りるシステム

Kubernetesは便利ですが、仕組みが複雑なぶん、運用の負担もあります。規模や体制に合っているかを見て導入を決めることが大切です。

AIの基盤での使われ方は[AIインフラとは]で、開発者が使いやすい基盤づくりは[プラットフォームエンジニアリングとは]で紹介しています。

インフラエンジニアの経験が活きる部分

分野Kubernetesでの仕事
ネットワークPod間の通信、Serviceによる振り分け、外からのアクセスの設計
ストレージコンテナが止まっても消えないデータの置き場所(永続ボリューム)の設計
監視クラスタやPodの状態、資源の使い方の見張り
セキュリティ権限の管理(RBAC)、通信の制限、コンテナのイメージの確認

Kubernetesの裏側は、Linux、ネットワーク、ストレージの仕組みそのものです。サーバーやネットワークの経験がある人ほど、トラブルの原因を深く探れます。

Kubernetesの学び方

ステップやること
1. Dockerに慣れるコンテナを作って動かす基本を、先に身につける
2. 手元にクラスタを作るminikubeやkindなどの学習用のツールで、自分のパソコンに小さなクラスタを作る
3. マニフェストを書くDeployment と Service を書いて、Webサーバーを動かしてみる
4. 障害を起こしてみるPodをわざと消して、自動で立ち上がる様子を確かめる
5. マネージドサービスを触るクラウドの無料枠などで、EKSやGKEを試す

自分でPodを消して、自動で元に戻る様子を見ると、Kubernetesの考え方が一気に分かります。

Kubernetesでよくある疑問

KubernetesにはDockerが必要?

Kubernetesは、コンテナを動かすためのソフト(コンテナランタイム)があれば動きます。今のKubernetesは、Docker Engineではなく、containerdなどのランタイムを直接使うのが一般的です。ただし、Dockerで作ったコンテナのイメージは、そのままKubernetesで動かせます。

小さなシステムでも、Kubernetesを使うべき?

使わなくても大丈夫です。コンテナが数個だけなら、DockerやDocker Composeで十分なことが多くあります。運用の手間に見合う規模かどうかで判断しましょう。

Kubernetesは難しい?

覚える用語や仕組みが多く、最初はつまずきやすい技術です。ただし、Linuxやネットワークの基礎があれば、1つずつ理解していけます。まずはPod・Deployment・Serviceの3つから始めましょう。

Kubernetesの資格はある?

あります。CNCFが運営するCKA(Certified Kubernetes Administrator)は、クラスタの構築や運用の力を、実際に操作して解く形式で問う資格です。アプリの開発者向けのCKADや、セキュリティのCKSもあります。

仮想化やコンテナを扱うLinuxの資格としては、[LinuCレベル3とは]で紹介しているプラットフォームスペシャリストもあります。

AIの基盤でも使われている?

使われています。GPUを積んだサーバーをKubernetesで束ね、AIの学習や推論のコンテナにGPUを割り振って動かす使い方が広がっています。

学習から運用までを回す仕組みは、[MLOpsとは]で紹介しています。

まとめ

Kubernetesは、たくさんのコンテナを、たくさんのサーバーの上でまとめて管理するための仕組みです。

この記事のポイントは次のとおりです。

  • Kubernetesとは
    コンテナの配置や復旧、増減を自動で管理するオーケストレーションのソフトウェア。
  • Dockerとの違い
    Dockerはコンテナを動かす道具、Kubernetesはたくさんのコンテナを動かし続ける管理の仕組み。
  • 基本の用語
    クラスタはコントロールプレーンとワーカーノードでできていて、まずはPod・Deployment・Serviceを押さえる。
  • 現場での使われ方
    EKS・AKS・GKEなどのマネージドサービスで使うのが主流。規模や体制に合うかで導入を決める。
  • 学び方
    Dockerに慣れてから、手元の小さなクラスタでマニフェストを書き、障害を起こして動きを確かめ。る

Kubernetesは、インフラの経験を、コンテナやAIの基盤の仕事に広げるための技術です。まずは自分のパソコンに小さなクラスタを作り、Podを動かして消してみるところから始めてみましょう。

記事の企画・執筆

IT基盤(インフラ)エンジニアのための求人・情報サイト「テックドック」の編集部です。ネットワーク・サーバー・クラウド・セキュリティなど、IT基盤の仕事・技術・資格・キャリアに役立つ情報を、実務に即した視点で発信しています。