• namespace命令空间


    1 解决什么问题

    命令空间类似于C++中的命名空间,当用户数量较多的集群,才会去考虑创建或考虑命名空间。

    2 基本介绍

    2.1 定义

    K8s支持多个虚拟集群,就是将一个物理集群虚拟成很多个虚拟集群。这些虚拟集群被称为命名空间。
    namespace是k8s集群级别的资源,可以给不同的
    用户,租户,环境或者项目创建对应的命名空间。
    例如,可以为test,devlopment,production环境分别创建格子的命名空间。

    2.2 应用场景

    #查看名称空间以及资源对象
    k8s提供几个默认的名称空间,default,kube-system等

    //查看所有名称空间或者单个名称空间详细信息
    kubectl get namespace或kubectl describe namespace $NAME
    
    • 1
    • 2

    在这里插入图片描述
    #管理namespace资源
    创建:kubectl create namespace qa
    删除:kubectl delete namespace qa

    3 使用案例

    #创建一个test命名空间
    kubectl create ns test
    在这里插入图片描述
    #切换命名空间
    kubectl config set-context --current --namespace=kube-system
    在这里插入图片描述
    切换后,kubectl get pods,如果不指定-n就是查看的kube-system空间的资源。
    #查看哪些资源熟悉命名空间级别的
    kubectl api-resources --namespaced=true
    在这里插入图片描述

    4 资源配额

    namespace是命名空间,里面有很多资源,我们可以对命名空间做个资源限制,防止命名空间部署资源超过限制。
    #编写namespace资源清单namespace-quota.yaml

    apiVersion: v1
    kind: ResourceQuota
    metadata:
      name: mem-cpu-quota
      namespace: test
    spec:
      hard:
        requests.cpu: "2"
        requests.memory: 2G
        limits.cpu: "4"
        limits.memory: 4GI
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    创建ResourceQuota对象将在test命名空间中添加硬件限制
    #编写pod资源清单pod-test.yaml

    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-test
      namespace: test
      labels:
        app: tomcat-pod-test
    spec:
      containers:
      - name: tomcat-test
        ports:
        - containerPort: 8080
        image: xianchao/tomcat-8.5-jre8:v1
        imagePullPolicy: IfNotPresent
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    #创建pod
    kubectl apply -f pod-test.yaml

    5 标签

    5.1 定义

    在k8s中,大部分资源都可以打标签。类似别名,方便记忆

    5.2 pod资源打标签

    #对已经存在的pod打标签
    [root@xianchaomaster1~]# kubectl label pods pod-first release=v1
    查看标签是否打成功:
    [root@xianchaomaster1~]# kubectl get pods pod-first --show-labels

    显示如下,显示如下,说明标签达成功了;
    NAME READY STATUS RESTARTS AGE LABELS
    pod-first 1/1 Running 1 21h release=v1, app=tomcat-pod-first

    5.3 查看标签

    #查看默认名称空间下所有pod资源的标签
    [root@xianchaomaster1~]# kubectl get pods --show-labels

    #查看默认名称空间下指定pod具有的所有标签
    [root@xianchaomaster1~]# kubectl get pods pod-first --show-labels

    #列出默认名称空间下标签key是release的pod,不显示标签
    [root@xianchaomaster1~]# kubectl get pods -l release

    #列出默认名称空间下标签key是release、值是v1的pod,不显示标签
    [root@xianchaomaster1~]# kubectl get pods -l release=v1

    #列出默认名称空间下标签key是release的所有pod,并打印对应的标签值
    [root@xianchaomaster1~]# kubectl get pods -L release

    #查看所有名称空间下的所有pod的标签
    [root@xianchaomaster1 ~]# kubectl get pods --all-namespace --show-labels

    [root@xianchaomaster1 ~]# kubectl get pods -l release=v1 -L release
    NAME READY STATUS RESTARTS AGE RELEASE
    pod-first 1/1 Running 0 13h v1

  • 相关阅读:
    基于JSP的保险业务管理系统【数据库设计、源码、开题报告】
    【无标题】
    应用层协议——DNS、DHCP、HTTP、FTP
    【鸿蒙】第2天・装饰器・组件和页面生命周期
    建筑工地无线视频监控 工业级无线路由器应用
    现在的编程语言越来越多,为什么 C 和 C++ 还没有被现在的时代淘汰呢?
    C++ 学习链接
    加盟咖啡店如何盈利?七大面解析店铺咋赚钱
    android.support.v7.app.AlertDialog
    java基础-集合-ArrayList(JDK1.8)源码学习
  • 原文地址:https://blog.csdn.net/u011744843/article/details/126311949