kubectl くーべくーびーしーてぃーえる
簡単に言うとこんな感じ!
kubectlは、Kubernetes(コンテナ管理システム)を操作するためのコマンドラインツールだよ!「kubectl get pods」みたいなコマンドを打つと、動いているアプリの一覧が見えたり、新しいアプリを起動したりできるんだ。Kubernetesの「リモコン」みたいなもの、って思えばOK!
kubectlとは
kubectl(クーブシーティーエル、またはクーブコントロールとも読まれる)は、Kubernetes クラスターを操作するための公式コマンドラインインターフェース(CLI)ツールです。Kubernetes は多数のコンテナをまとめて管理するシステムですが、その操作窓口がこの kubectl になります。開発者やインフラ担当者は kubectl を通じて、アプリの起動・停止・確認・設定変更などほぼすべての操作を行います。
kubectl は Kubernetes の API サーバーに対して HTTP リクエストを送ることで動作します。利用者がコマンドを打つと、kubectl がそれを Kubernetes API の形式に変換し、クラスターに指示を届けます。接続先のクラスター情報や認証情報は kubeconfig(通常 ~/.kube/config)というファイルに保存されており、複数のクラスターを切り替えながら操作することも可能です。
システム発注や管理の立場で言えば、「Kubernetes環境の運用を委託する」場合でも kubectl の基本的な使い方を知っておくと、ベンダーへの質問や状況確認がスムーズになります。特に kubectl get・kubectl describe・kubectl logs の3コマンドは「今何が起きているか」を把握するための基本セットとして覚えておくと便利です。
kubectlの主要コマンド
kubectl のコマンドは「動詞 + リソース種別 + 名前」という構造になっています。
| コマンド | 操作内容 | 使用例 |
|---|---|---|
get | リソースの一覧・状態確認 | kubectl get pods |
describe | リソースの詳細情報表示 | kubectl describe pod nginx |
apply | マニフェストを適用(作成・更新) | kubectl apply -f app.yaml |
delete | リソースの削除 | kubectl delete pod nginx |
logs | コンテナのログ表示 | kubectl logs nginx |
exec | コンテナ内でコマンド実行 | kubectl exec -it nginx -- bash |
scale | レプリカ数の変更 | kubectl scale deployment app --replicas=3 |
rollout | デプロイの状態管理・ロールバック | kubectl rollout undo deployment app |
操作対象のリソース種別
Kubernetes には多くのリソース種別があり、kubectl はそれらすべてを操作できます。
| リソース種別 | 略称 | 概要 |
|---|---|---|
| Pod | po | コンテナの最小実行単位 |
| Deployment | deploy | Podの展開・管理ルール |
| Service | svc | Podへの通信経路(負荷分散など) |
| Namespace | ns | クラスター内の仮想的な区画 |
| ConfigMap | cm | 設定情報の保持 |
| Secret | - | 機密情報(パスワードなど)の保持 |
| Node | no | クラスターを構成するサーバー |
覚え方のコツ
kubectl の綴りが覚えにくい場合は、「kube(Kubernetes)+ ctl(control の略)」 と分解すると覚えやすいです。読み方は公式には定まっておらず、現場では「クーベシーティーエル」「クーブコントロール」「クーベカトル」など様々な呼ばれ方をしています。
歴史と背景
- 2014年 — Google がコンテナオーケストレーションシステム「Kubernetes」をオープンソースとして公開。kubectl もこの時点から同梱されていた
- 2016年 — Cloud Native Computing Foundation(CNCF)に Kubernetes が寄贈され、kubectl も CNCF エコシステムの中核ツールとして広まる
- 2018年頃 — GKE(Google Kubernetes Engine)・EKS(Amazon)・AKS(Azure)など主要クラウドが Kubernetes マネージドサービスを提供開始し、kubectl の利用者層が急拡大
- 2019年 — kubectl が Kubernetes 本体リポジトリから独立したリポジトリ(
kubernetes/kubectl)へ分離され、開発・リリースサイクルが明確化 - 現在 — kubectl はデファクトスタンダードとして、Kubernetes を扱うすべての現場で使われている。プラグイン機構(krew)によって機能拡張も可能
kubectlの動作構造とkubeconfigの関係
kubectl がどのように Kubernetes クラスターと通信するかを図解します。
kubeconfigの切り替え(複数クラスター管理)
本番・ステージング・開発など複数クラスターを扱う場合、context(コンテキスト) を切り替えて使います。
# 現在のコンテキスト確認
kubectl config current-context
# 利用可能なコンテキスト一覧
kubectl config get-contexts
# コンテキスト切り替え(本番→ステージング)
kubectl config use-context staging-cluster
マニフェストファイル(YAML)との組み合わせ
kubectl の真価は YAMLファイル(マニフェスト) との組み合わせにあります。「何をどう動かすか」を YAML で定義し、kubectl apply で適用するのが標準的な運用スタイルです。
# deployment.yaml の例
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-app:1.0.0
ports:
- containerPort: 8080
# マニフェストをクラスターに適用
kubectl apply -f deployment.yaml
関連する規格・RFC
※ kubectl および Kubernetes API には IETF RFC や ISO 規格は制定されていませんが、Kubernetes API の仕様は CNCF が管理する OpenAPI Specification で公開されています。関連する参考情報として下記を参照してください。
| 規格・仕様 | 内容 |
|---|---|
| Kubernetes API Reference | kubectl が呼び出す Kubernetes REST API の公式仕様 |
| OpenAPI Specification (OAS) 3.0 | Kubernetes API の記述に使われているAPI仕様フォーマット |
関連用語
- Kubernetes — コンテナのデプロイ・管理・スケーリングを自動化するオーケストレーションシステム
- Pod — Kubernetes における最小のデプロイ単位。1つ以上のコンテナを含む
- Deployment — Podの展開ルールや数を宣言的に管理するKubernetesリソース
- kubeconfig — kubectlがクラスターへ接続するための設定ファイル
- Namespace — Kubernetesクラスター内をチームや環境ごとに論理分割する仕組み
- コンテナ — アプリケーションとその実行環境をまとめてパッケージ化する技術
- Helm — Kubernetesアプリのパッケージ管理ツール。kubectlと組み合わせて使われる
- etcd — Kubernetesがクラスターの状態を保存するための分散キーバリューストア