淘先锋技术网

首页 1 2 3 4 5 6 7

一、名称空间概念

K8s中文手册:

K8s名称空间中文官方手册:

Kubernetes 支持多个虚拟集群,它们底层依赖于同一个物理集群。 这些虚拟集群被称为命名空间。
命名空间namespace是k8s集群级别的资源,可以给不同的用户、租户、环境或项目创建对应的命名空间。

在Kubernetes中,名称空间可以用来:

  • 将不同的应用程序隔离开来,避免命名冲突和资源竞争。 -
  • 为不同的团队或项目提供独立的环境,使它们可以独立地管理和部署应用程序。
  • 控制资源配额和访问权限,以确保应用程序之间的安全隔离。

可以抽象的吧Namespace理解为,QQ分组,分组中存着不同的好友,好友就是容器。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UY65b1OG-1683537060621)(D:\MD归档文档\IMG\image-20230508121248061.png)]

二、名称空间基本操作

1、创建Namespace的两种方式

创建名称空间提供两种方式,通过命令行和YAML文件进行创建,如下:

第一种:通过命令行进项创建Namespace

kubectl create ns mytest

第二种:通过YAML资源清单进行创建Namespace

cat namespace.yaml 

---
apiVersion: v1
kind: Namespace
metadata:
  name: mytest

通过apply进行创建

kubectl apply -f namespace.yaml

查看名称空间

kubectl get ns
kubectl get ns mytest

2、Namespace资源限额

可以通过Resource Quota来限制Namespace中资源的使用,资源配额是一种控制机制,可以限制Namespace中资源使用量,包括CPU、内存、存储等。

资源限制可以针对Namespace中所有Pod进行限制,当然也可以针对单个Pod进行限制:

cat resourcequota.yaml 
apiVersion: v1
kind: Namespace
metadata:
  name: mytest
---
apiVersion: v1
kind: ResourceQuota
metadata:
  name: mytest-quota
  namespace: mytest
spec:
  hard:
    requests.cpu: 2
    requests.memory: 2Gi
    limits.cpu: 4
    limits.memory: 4Gi

配置含义解释:

资源名称描述
limits.cpu所有非终止状态的 Pod,其 CPU 限额总量不能超过该值。
limits.memory所有非终止状态的 Pod,其内存限额总量不能超过该值。
requests.cpu所有非终止状态的 Pod,其 CPU 需求总量不能超过该值。
requests.memory所有非终止状态的 Pod,其内存需求总量不能超过该值。
hugepages-<size>对于所有非终止状态的 Pod,针对指定尺寸的巨页请求总数不能超过此值。
cpurequests.cpu 相同。
memoryrequests.memory 相同。

执行apply文件

kubectl apply -f resourcequota.yaml

查看Resource Quota 信息:

kubectl get resourcequota -n mytest

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lvvOFOcs-1683537060622)(D:\MD归档文档\IMG\image-20230508163854277.png)]

测试:创建一个Pod并限制资源使用如下:

注意:如果Namespace进行了资源配额了,那么在创建Pod时必须使用resources进行限制。

cat pod.yaml 
---
apiVersion: v1
kind: Pod
metadata:
  labels:
    app: nginx
  name: web-nginx
  namespace: mytest
spec:
  containers:
  - name: web-nginx
    image: nginx
    imagePullPolicy: IfNotPresent
    ports:
    - containerPort: 80 
    resources:
      limits:
        memory: "2Gi"
        cpu: "2"
      requests:
        memory: "1000Mi"
        cpu: "500m"

查看resourcequota资源限制信息:

kubectl get resourcequota -n mytest

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ol6Wkzc2-1683537060623)(D:\MD归档文档\IMG\image-20230508170359155.png)]

如果超过Namespace配额限制会报错,如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xBtRo5Jb-1683537060624)(D:\MD归档文档\IMG\image-20230508170525276.png)]