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、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  
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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值