LoginSignup
0
0

More than 5 years have passed since last update.

訳しながら理解していくKubernetes_ Namespaces編

Posted at

はじめに

Kubernetesのドキュメントって英語だし、英検3級レベルで英語力のない私にはつらい・・・
そして、一回(google翻訳を使って)訳しながら読んでまた忘れてまた(google翻訳を使って)訳すを繰り返すのをやめたい。
調べるときは全文を見ずに、必要な部分だけを見てたりするので、公式ドキュメントを訳しながら全体を理解していこうと思う。

英語読むのめんどくせーーーとなっている人の助けになればと思い公開した

今回は Namespaces

注意事項

  • 基本的にGoogle翻訳のまんまです。
  • 一応、意味が分かるようには訳してるつもりですが、ちょいちょい意味分からない部分もあります。
    誤訳がある可能性があるので、最後はちゃんと公式ドキュメントを読みましょう
  • 私の知りたい部分からやるので、訳す部分はバラバラになります。
  • 公式ドキュメントに記載されていない部分(自分で調べた部分とか)はitalicで記載しています。
  • V1.11でのドキュメントを記載

Namespaces

Kubernetesは、同じ物理クラスタでの複数の仮想クラスタをサポートしています。これらの仮想クラスタは名前空間(Namespaces)と呼ばれます。

When to Use Multiple Namespaces

名前空間は、複数のチームやプロジェクトにまたがっている多数のユーザーがいる環境での使用を想定しています。数人から数十人のユーザーを持つクラスタでは、名前空間を作成したり考えたりする必要はありません。名前空間は、提供する機能が必要なときに使用します。

名前空間は名前のスコープを提供します。リソースの名前は、名前空間内で一意である必要がありますが、名前空間間では一意である必要はありません。

ネームスペースは、複数のユーザー間でクラスタリソースを分割する方法ですresource quota

Kubernetesの将来のバージョンでは、同じ名前空間内のオブジェクトは、デフォルトで同じアクセス制御ポリシーを持ちます。

同じソフトウェアの異なるバージョンなど、わずかに異なるリソースを分離するために複数の名前空間を使用する必要はありません。ラベル(labels)を使用して同じ名前空間内のリソースを区別します。

Working with Namespaces

ネームスペースの作成と削除については、ネームスペースの管理ガイドのドキュメントを参照してください。

Viewing namespaces

以下を使用して、クラスタ内の現在のネームスペースを一覧表示できます。

$ kubectl get namespaces
NAME          STATUS    AGE
default       Active    1d
kube-system   Active    1d
kube-public   Active    1d

Kubernetesは3つの初期名前空間から始まります:

  • default 他の名前空間を持たないオブジェクトのデフォルト名前空間
  • kube-system Kubernetesシステムによって作成されたオブジェクトの名前空間
  • kube-public この名前空間は自動的に作成され、すべてのユーザ(認証されていないユーザも含む)が読むことができます。この名前空間は、ほとんどの場合、クラスタ全体で一部のリソースを公開して表示する必要がある場合に備えて、クラスタの使用のために予約されています。この名前空間のパブリック・アスペクトは、慣習にすぎず、要件ではありません。

Setting the namespace for a request

要求の名前空間を一時的に設定するには、 --namespaceフラグを使用します。

例:

$ kubectl --namespace=<insert-namespace-name-here> run nginx --image=nginx
$ kubectl --namespace=<insert-namespace-name-here> get pods

Setting the namespace preference

そのコンテキスト内の後続のすべてのkubectlコマンドの名前空間を永続的に保存することができます。

$ kubectl config set-context $(kubectl config current-context) --namespace=<insert-namespace-name-here>
# Validate it
$ kubectl config view | grep namespace:

Namespaces and DNS

Serviceを作成すると、対応するDNSエントリが作成されます。このエントリの形式は <service-name>。<namespace-name> .svc.cluster.localです。つまり、コンテナが単に<service-name>を使用する場合、名前空間にローカルなサービスに解決されます。これは、開発、ステージング、プロダクションなどの複数の名前空間で同じ構成を使用する場合に便利です。ネームスペースをまたぐ場合は、完全修飾ドメイン名(FQDN)を使用する必要があります。

Not All Objects are in a Namespace

ほとんどのKubernetesリソース(たとえば、ポッド、サービス、レプリケーションコントローラなど)はいくつかの名前空間にあります。しかし、名前空間リソースは名前空間にはありません。また、ノードやpersistentVolumeなどの低レベルのリソースは、名前空間にはありません。

Kubernetesのリソースがネームスペースにあるかどうかを調べるには:

# In a namespace
$ kubectl api-resources --namespaced=true

# Not in a namespace
$ kubectl api-resources --namespaced=false
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0