Kubernetes · 1 min read · Nov 03, 2025

Kubernetesでの名前空間の作成方法

名前空間は、複数のチームが同じクラスターを使用する際に便利です。これは、名前の衝突の可能性がある場合に使用されます。複数のクラスターの間に仮想の壁を作ることができます。たとえば、Kubernetesクラスター内で同じ名前のポッドを持つことはできませんが、名前空間を使用することでクラスターを仮想的に分割し、同じ名前のポッドを持つことができます。

名前空間の重要な機能のいくつかは次のとおりです。

  1. 同じ名前空間を使用してポッド間の通信を助けます。
  2. 同じ物理クラスターの上に存在できる仮想クラスターとして機能します。
  3. チームとその環境の間に論理的な分離を提供します。

この記事では、名前空間を作成し、新しく作成した名前空間にポッドを作成します。また、名前空間をデフォルトの名前空間として設定する方法も見ていきます。

前提条件

  1. 少なくとも1つのワーカーノードを持つKubernetesクラスター。 Kubernetesクラスターの作成方法を学びたい場合は、こちらをクリックしてください。このガイドでは、AWS Ubuntu 18.04 EC2インスタンス上に1つのマスターと2つのノードを持つKubernetesクラスターを作成する方法を説明します。

何をするか

  1. 名前空間を作成します。

名前空間の作成

Kubernetesクラスター内のすべての名前空間をリストするには、次のコマンドを実行します。複数の名前空間を持つことができ、名前空間にはメタデータを持たせることができます。

kubectl get namespace #クラスター内のすべての名前空間を取得

get-namespaces for kubernetes namespace

特定の存在しない名前空間にポッドを作成してみましょう。

“test-env”名前空間にポッドを作成するには、次のコマンドを実行します。

kubectl run nginx --image=nginx --namespace=test-env #存在しない名前空間にポッドを作成しようとします。

存在しない名前空間にはポッドが作成されないため、まず名前空間を作成する必要があります。

“test-env”名前空間を作成するには、次のコマンドを実行します(k8s名前空間を作成)。

kubectl create namespace test-env #名前空間を作成
kubectl get namespace #名前空間のリストを取得

create-namespace

ポッドを作成したい名前空間ができました。

作成した名前空間にポッドを作成するには、コマンドに–namespace=test-envオプションを渡します。

kubectl run nginx --image=nginx --namespace=test-env #名前空間にポッドを作成

名前空間を指定せずにポッドを取得しようとすると、ポッドの詳細は表示されません。

kubectl get pods #ポッドのリストを取得

“test-env”名前空間に属するポッドの詳細を取得するには、次のコマンドを使用します。

kubectl get pods --namespace=test-env #指定した名前空間のポッドのリストを取得

create-pod-in-the-namespace-created

デフォルトの名前空間として設定したい場合は、コマンドで名前空間オプションを指定する必要がなくなります。次のコマンドを使用します。

kubectl config set-context --current --namespace=test-env #デフォルトの名前空間を設定

これで、ポッドの詳細を取得するためにコマンドで名前空間を指定する必要はありません。

kubectl get pods #デフォルトの名前空間からポッドのリストを取得

デフォルトの名前空間に切り替えるには、次のコマンドを使用します。

kubectl config set-context --current --namespace=default #名前空間をデフォルトに設定
kubectl get pods #ポッドのリストを取得

デフォルトの名前空間を確認するには、次のコマンドを使用します。

kubectl config view --minify | grep namespace: #Kubernetes設定ファイルから名前空間を抽出
kubectl config set-context --current --namespace=test-env #設定ファイルでデフォルトの名前空間を設定
kubectl config view --minify | grep namespace:

check-current-namespace

どのKubernetesリソースが名前空間に属するかを確認するには、次のコマンドを実行します。

kubectl api-resources --namespaced=true #名前空間に存在できるKubernetesオブジェクトを取得

resources-with-namespace

どのKubernetesリソースが名前空間に存在しないかを確認するには、次のコマンドを使用します。

kubectl api-resources --namespaced=false #名前空間に存在できないKubernetesオブジェクトのリストを取得

resources-without-namespace

次のコマンドを使用して、名前空間の詳細を取得できます。

kubectl get namespaces #名前空間のリストを取得
kubectl describe namespace test-env #名前空間の詳細を取得

describe-namespace

名前空間は、.ymlファイルを使用しても作成できます。

vim namespace-using-file.yml #名前空間定義ファイルを作成

create-namespace-using-yml-file

オブジェクト定義ファイルに指定された名前空間を作成するには、次のコマンドを実行します。

kubectl create -f namespace-using-file.yml #.ymlファイルを使用して名前空間を作成
kubectl get namespaces #名前空間のリストを取得

get-namespaces

もはや名前空間が必要ない場合は、次のコマンドを使用して簡単に削除できます。

kubectl get namespaces #名前空間のリストを取得
kubectl delete namespaces env-prod test-env #名前空間を削除
kubectl get namespaces #名前空間のリストを取得

delete-namespaces

“kubectl change namespace”コマンドを使用して、別の名前空間に切り替えます。

結論

この記事では、名前空間、名前空間の作成、デフォルトの名前空間の変更、名前空間に存在するKubernetesリソースと存在しないKubernetesリソースの確認方法について学びました。また、Kubernetesオブジェクト(ここではポッド)が、私たちの選択した名前空間に作成される方法も見ました。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。