• k8s-namespace-基本概念


    概念

    1、命名空间组织集群中的资源
    2、也可以将命名空间视为虚拟集群
    3、创建一个集群,默认分配一个default命名空间

    kubectl get namespace
    NAME                   STATUS   AGE
    default                Active   4d17h
    kube-node-lease        Active   4d17h
    kube-public            Active   4d17h
    kube-system            Active   4d17h
    kubernetes-dashboard   Active   4d17h
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    作用

    在这里插入图片描述
    1、default:创建集群,会默认创建一个命名空间。通过配置文件创建命名空间是最好的实践

    2、kube-node-lease:保存有关心跳的信息节点数,每个节点都有自己的租约对象,决定着这些节点的可用性。

    3、kube-public:包含可公开的数据,存在一个配置映射,里边包含可访问的集群信息、验证信息等

    4、kube-system:专门为kubernetes使用的,个人开发不应该使用这个命名空间,不要在kube-system中添加或修改资源。它包括System processes、Master and Kubectl process

    原因

    1、逻辑分组:一个集群里有各种各样的资源,例如Deployment、Service、ReplicaSet、Pod等,混杂在一起,很难理解它们的用途和作用。一个更好的实践是将资源分组到不同的命名空间,用于各种用途,它是一种逻辑分组的方式。将资源分配到明确指定用途的命名空间,不论项目有多小,用户有多少,分组是最好的管理方式。

    2、团队隔离:如果放在default命名空间,不同团队在创建资源时,除非事先严格规范了配置的命名,并且不会出错,否则总会出现命名冲突问题,导致配置被不期望的覆盖掉了。限制不同团队访问的资源,隔离最小的影响范围。

    3、资源共享:另一个用途是在不同的开发环境进行资源共享。

    4、版本发布:期望在集群中拥有多个版本,在蓝绿部署时切换不同的版本,而不需要为这些版本搭建新的集群。

    5、资源配额:每个命名空间都会消耗 CPU、RAM、Storage,为了不同团队都能分配合适的资源,在命名空间内增加资源配额

    在这里插入图片描述

    特性

    1、不能访问来自其他命名空间的大部分资源,每个命名空间必须定义自己的ConfigMap才能访问外部资源。
    例如要想访问DB,则必须在Project A 创建一个ConfigMap 映射到 DB。同样的,Project B也必须创建一个相同的ConfigMap才能访问相同的DB,Project B不允许直接访问DB或直接引用Project A。这个规则通用适用于Secret。

    2、可以访问在另一命名空间中定义的Service

    3、在整个集群中可见

    在这里插入图片描述

    在命名空间中创建组件

    #mysql-configmap.yaml
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: mysql-configmap
    data:
      db_url: mysql-service
    
    
    #mysql-configmap-withnamespace.yaml
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: mysql-configmap
      namespace: my-namespace   #使用文档化指定namespace
    data:
      db_url: mysql-service  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    kubectl apply -f mysql-configmap.yaml
    ​kubectl get configmap -o yaml
    
    - apiVersion: v1
      data:
        db_url: mysql-service
      kind: ConfigMap
      metadata:
        annotations:
          kubectl.kubernetes.io/last-applied-configuration: |
            {"apiVersion":"v1","data":{"db_url":"mysql-service"},"kind":"ConfigMap","metadata":{"annotations":{},"name":"mysql-configmap","namespace":"default"}}
        creationTimestamp: "2022-03-16T22:48:30Z"
        name: mysql-configmap   👈👈
        namespace: default      👈👈
        resourceVersion: "292146"
        uid: 1fd10bda-ff05-4bef-8a57-94e6d99cb188
    kind: List
    metadata:
      resourceVersion: ""
      selfLink: ""
    
    
    
    
    kubectl apply -f mysql-configmap-withnamespace.yaml
    kubectl get configmap -A
    
    NAMESPACE              NAME                                 DATA   AGE
    default                kube-root-ca.crt                     1      5d9h
    kube-node-lease        kube-root-ca.crt                     1      5d9h
    kube-public            cluster-info                         1      5d9h
    kube-public            kube-root-ca.crt                     1      5d9h
    kube-system            coredns                              1      5d9h
    kube-system            extension-apiserver-authentication   6      5d9h
    kube-system            kube-proxy                           2      5d9h
    kube-system            kube-root-ca.crt                     1      5d9h
    kube-system            kubeadm-config                       1      5d9h
    kube-system            kubelet-config-1.23                  1      5d9h
    kubernetes-dashboard   kube-root-ca.crt                     1      5d9h
    kubernetes-dashboard   kubernetes-dashboard-settings        0      5d9h
    my-namespace           kube-root-ca.crt                     1      7m42s
    my-namespace           mysql-configmap                      1      7m31s
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
  • 相关阅读:
    C 基础知识内容
    超级签名封号掉签该怎么办
    云之家群组机器人如何定时自动发消息?
    Swing类
    鼠标和滚轮事件
    JavaScript中迭代:For循环
    【每日一题Day34】LC808分汤 | 动态规划 记忆化搜索
    在Ubuntu或linux中为coreutils工具包的cp和mv命令添加进度条
    人工智能、深度学习、机器学习常见面试题56~70
    01 SpringMVC 入门
  • 原文地址:https://blog.csdn.net/hy19930118/article/details/126693086