DUICUO

Kubernetes で名前空間を作成するにはどうすればよいですか?

[51CTO.com クイック翻訳]

名前空間は、複数のチームが同じクラスターを使用する場合に便利です。名前の競合が発生する可能性がある場合に使用され、複数のクラスター間の仮想的な壁として機能します。例えば、Kubernetesクラスターでは通常、同じ名前のポッドが存在することはありませんが、名前空間を使用することで、クラスターを分割し、同じ名前のポッドを複数存在させることができます。

以下は、名前空間の重要な機能の一部です。

  • • ポッド間の通信を容易にするために同じ名前空間を使用します。
  • • 同じ物理クラスター上に存在する仮想クラスターとして機能します。
  • チームとその環境間の論理的な分離を実現します。

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

前提条件

  • 少なくとも 1 つのワーカーノードを持つ Kubernetes クラスター

Kubernetes クラスターの作成方法については、こちら (https://www.howtoforge.com/setup-a-kubernetes-cluster-on-aws-ec2-instance-ubuntu-using-kubeadm/) をクリックしてください。このガイドは、AWS Ubuntu 18.04 EC2 インスタンス上に、マスター 1 台とノード 2 台で構成される Kubernetes クラスターを作成するのに役立ちます。

私たちは何をすべきでしょうか?

  • 名前空間を作成する

名前空間を作成する

Kubernetes クラスターで使用可能なすべての名前空間を一覧表示するには、次のコマンドを実行します。

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

図1

ここで、まだ存在しない特定の名前空間にポッドを作成しましょう。

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

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

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

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

  1. kubectl create namespace test-env #名前空間を作成する 
  2. kubectl get namespace #名前空間リストを取得する

図2

これで、ポッドを作成する名前空間ができました。

作成したこのスペースにポッドを作成するには、コマンドに `--namespace=test-env` オプションを渡します。

  1. kubectl run nginx --image=nginx --namespace=test-env #名前空間にポッドを作成します。  

名前空間を指定せずにポッドを作成しようとすると、ポッドの詳細を取得できません。

  1. kubectl get pods #ポッドリストを取得する

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

  1. kubectl get pods --namespace=test-env #指定された名前空間内のポッドのリストを取得します 

図3

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

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

これで、コマンドで名前空間を指定しなくても、ポッドに関する詳細情報を取得できるようになりました。

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

図4

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

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

図5

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

  1. kubectl 構成ビュー  --minify | grep namespace: # kubernetes 構成ファイルから名前空間を抽出します。    
  2. kubectl config set -context --current --namespace=test-env # 設定ファイルでデフォルトの名前空間を設定します。    
  3. kubectl 構成ビュー  --minify | grep 名前空間:  

図6

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

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

図7

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

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

図8

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

  1. kubectl get namespaces #名前空間リストを取得します  
  2. kubectl describe namespace test-env #名前空間詳細を取得します。

図9

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

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

図10

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

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

図11

名前空間が不要になったら、次のコマンドを使用して削除します。

  1. kubectl get namespaces #名前空間リストを取得する 
  2. kubectl delete namespaces env-prod test-env #名前空間を削除する 
  3. kubectl get namespaces #名前空間リストを取得する

図12

結論は

この記事では、名前空間、名前空間の作成、デフォルトの名前空間の変更、そして名前空間内に存在する(または存在しない)Kubernetesリソースの確認について学びました。また、任意の名前空間にKubernetesオブジェクト(ここではポッド)を作成する方法についても説明しました。

元のタイトル: Kubernetesで名前空間を作成する方法

[この記事は51CTOによって翻訳されました。提携サイトへの転載の際は、元の翻訳者と出典を51CTO.comとして明記してください。]