がじぇ

お金と家電とプログラミングのブログ

k8sのNamespaceとResource Quotaについて

こんにちわ

がじぇったー (@hackmylife7) | Twitter


です。ガジェット情報をいち早くツイートすることを生きがいにしているのでよかったらフォローください。


今日はk8sのNamespaceとResource Quotaについてです。



f:id:gadgeterkun:20190805000359j:plain

TL;DR(要約)

  • 複数のチームが同一の物理リソースで複数のクラスタを立ち上げる場合はNamespaceを用い環境を仮想的に分離する
  • Namespaceごとに使用できるリソースを制限することで、一つのチームがリソースを食い過ぎて他の環境に影響を与えてしまう、といった事態を防ぐことができる

Namespaceについて


Namespaceは同一の物理リソース上で稼働するKubernetesクラスタを複数の仮想クラスタに分割するKubernetesオブジェクトである

複数のユーザー、複数のチーム(プロジェクト)が同一のリソースで複数のクラスタを立ち上げる際の使用を目的としている

Namespace内のリソースには、ユニークな名称をつけなければならないが、Namespaceが分かれていれば、同一の名称をつけることができる

また、Namespaceごとにリソースの上限値を定めることができる

(Namespaceに応じた権限をユーザに設定することにより、Aユーザがアクセスできる環境、Bユーザがアクセスできる環境と、分けることができる)

ResourceQuotaについて

一つのユーザやグループがクラスタリソースを使いすぎないようリソースの上限値をNamespaceごとに割り当てることができる

例えばNamespaceに対して以下のような項目を制限できる

  • CPU
  • Memory
  • Storage
  • Podの数

apiVersion: v1
kind: ResourceQuota
metadata:
  name: mem-cpu-demo
spec:
  hard:
    requests.cpu: "1"
    requests.memory: 1Gi
    limits.cpu: "2"
    limits.memory: 2Gi


また、Podの単位でも以下のように使用するリソースを制限することが可能

apiVersion: v1
kind: Pod
metadata:
  name: quota-mem-cpu-demo
spec:
  containers:
  - name: quota-mem-cpu-demo-ctr
    image: nginx
    resources:
      limits:
        memory: "800Mi"
        cpu: "800m" 
      requests:
        memory: "600Mi"
        cpu: "400m"


参考(Kubernetesの最強参考書)

Kubernetes完全ガイド (impress top gear)

Kubernetes完全ガイド (impress top gear)

Kubernetesの他の記事へは下記の一覧から飛べるようにしているので参照ください。

gadgeterkun.hatenablog.com