小言_互联网的博客

Kubernetes资源对象:namespace讲解

299人阅读  评论(0)

namespace 

namespace 是对一组资源和对象的抽象集合,比如可以用来将系统内部的对象划分为不同的项目组或用户组。常见的 pod, service, replication controller 和 deployment 等都是属于某一个 namespace 的(默认是 default),而 node, persistent volume,namespace 等资源则不属于任何 namespace。

resourcequota

namespace作为抽象集合,那么resourcequota 就是对抽象集合的限制,resourcequota作为限制用户资源用量的一种机制,有着以下的资源配额配置:

  • 计算资源,包括 cpu 和 memory
    • cpu, limits.cpu, requests.cpu
    • memory, limits.memory, requests.memory
  • 存储资源,包括存储资源的总量以及指定 storage class 的总量
    • requests.storage:存储资源总量,如 500Gi
    • persistentvolumeclaims:pvc 的个数
    • .storageclass.storage.k8s.io/requests.storage
    • .storageclass.storage.k8s.io/persistentvolumeclaims
    • requests.ephemeral-storage 和 limits.ephemeral-storage (需要 v1.8+)
  • 对象数,即可创建的对象的个数
    • pods, replicationcontrollers, configmaps, secrets
    • resourcequotas, persistentvolumeclaims
    • services, services.loadbalancers, services.nodeports

配置了resourcequota,创建相关资源,若超过配额,则不允许创建

【拓展】serviceaccount

Serviceaccount 是为了方便pod里面的进程调用kubernetes API 或其他外部服务而设计的

Serviceaccount 特性

  1. 每个namespace都会自动创建一个default service account
  2. Token controller 检测 serviceaccount的创建,会为他们创建secret

Serviceaccount demo

apiVersion: v1

kind: ServiceAccount

metadata:

  name: default

  namespace: default

secrets:

- name: default-token-qffvz

因namespace 默认生成的serviceaccount,其name默认为default,因token controller 默认生成的secret,其name默认格式default-token-xxx

Kube-apiserver 配置--admission-control,来选择配置admission controller,admission controller可以认为是过滤器,他会根据某些策略过滤或修改请求数据,其中有个controller为ServiceAccount admission controller。

ServiceAccount admission controller

ServiceAccount admission controller 启用后:

每个pod在创建后都会自动创建 spec.serviceaccountName 为default (除非指定了其他的serviceaccount)

验证Pod 引用的serviceaccount 已经存在,否则拒绝创建该pod。

如果Pod 没有指定imagePullSecret ,则会把service account 的imagePullsecrets 加到pod中

每个pod创建都会将service account的token 和 ca.crt 挂载到

/var/run/secrets/kubernetes.io/serviceaccount/

实际操作

// 创建 名为test的namespace

kubectl create ns test

//  查看是否创建出该namespace

kubectl get ns

// 查看是否存在名为default的serviceaccount

kubectl get sa default –n test  -o yaml


转载:https://blog.csdn.net/fly910905/article/details/102086020
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场