Skip to content

Latest commit

 

History

History
80 lines (55 loc) · 4.11 KB

Namespace.md

File metadata and controls

80 lines (55 loc) · 4.11 KB

前: postStart/preStop


Namespaceとは

NamespaceはK8sクラスタ内に仮想的なクラスタ分離機能を提供します。

K8sクラスタの初期状態では、クラスタ上の全てのリソースは誰でも、どのAPIリソース同士でも参照・操作可能です。 Namespaceを分けることで、参照できるAPIリソースや操作できるAPIリソースをある程度制御することが可能になります。 また別のK8sリソース(ResourceQuota、NetworkPolicy)と合わせて使用することで、Namespace単位で使用できるHWリソースの上限を設定したり、Namespace間の通信制御を行うこともできます。

複数の顧客向けサービスの提供(マルチテナント)や複数チームでK8sクラスタを共有する時などに使用します。

初期状態では次のようなNamespaceが用意されています。 (K8sサービスによっては他のNamespaceがあるかもしれません)

  • default
    • 実際にユーザが作成したPodやDeploymentなどが所属するデフォルトのNamespace
      • 作成時に明示的にNamespaceを指定しなかった場合、このNamespaceに所属する
    • 初期状態では何も配置されていない
  • kube-system
    • 主にクラスタを構成するコンポーネントやK8s自身が作成したAPIリソースが配置される
  • kube-public
    • ユーザ共通のConfigMapなどが配置される

全てのAPIリソースがNamespaceに所属するわけではなく、PersistentVolume(PV)など、Namespaceに所属しないAPIリソースも存在します。

演習

  1. Namespaceリソースのオブジェクト一覧を表示してください。

  2. Namespace:kube-systemに属するPodリソースのオブジェクト一覧を表示してください。
    (-n <Namespace名> で参照するNamespaceを指定できます)

  3. 以下を満たすマニフェストを作成しデプロイしてください。なお、Namespaceについては公式ドキュメントを参考にしてください。

    • 要件
      • Namespace
        • 名前はweb
      • Deployment
        • 名前はnginx
        • Namespaceはweb
        • replicas: 1
        • labelはすべてapp: nginx
        • Pod
          • 名前はnginx
      • Service
        • 名前はnginx-svc
        • Namespaceはweb
        • 対象のlabelはapp: nginx
        • プロトコルはTCP
        • Portは80
        • targetPortは80
  4. Namespaceリソースのオブジェクト一覧を表示し、webが作成されていることを確認してください。

  5. Namespace:defaultのDeployment, Pod, Serviceのオブジェクト一覧を表示し、上記手順で作成したAPIリソースが表示されないことを確認してください。

  6. Namespace:webのDeployment, Pod, Serviceのオブジェクト一覧を表示し、nginxを含んだDeployment, Pod, Serviceがあることを確認してください。

  7. 接続確認に使用するcurlコマンドが実行可能なtestpodをNamespace:defaultに作成し、testpodからService:nginx-svcに対して接続確認をしてください。

  8. testpodからNamespace:webに所属するService:nginx-svcに対して接続確認をしてください。
    (別NamespaceのServiceを指定する場合は<service名>.<namespace名>と表記します。)

  9. 接続確認に使用するcurlコマンドが実行可能なtestpodをNamespace:webに作成し、testpodからService:nginx-svcに対して接続確認をしてください。

  10. 作成したリソースを削除してください。

以上で本演習は終了です。

具体的な操作およびその結果に関する回答例はこちらにあります。 具体的な操作方法がわからなかった場合や、想定した結果にならなかった場合などに参照してください。


次: DaemonSet