[云原生专题-29]:K8S - 核心概念 - 名字空间/命名空间概念详解与主要操作案例

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/122791716


目录

第1章 什么是名字/命名空间

1.1 kubernetes 命名空间(namespace)是什么?

1.2 名字空间隔离哪些内容

1.3 命名空间的特点

1.4 命名空间的本质

1.5 K8S默认的自带的名字空间

1.6 K8S资源的创建方式

第2章 名字空间的常见操作

2.1 查看已有的名字空间

2.2 创建新的名字空间

2.3 删除已有的名字空间

2.4 kubectl get pods -A与kubectl get pods的区别

第3章 通过配置文件操作名字空间

3.1 创建新的名字空间

3.2 删除已有的名字空间


第1章 什么是名字/命名空间

1.1 kubernetes 命名空间(namespace)是什么?

namespace中文翻译:名字空间或命名空间,后续混用这两个中文名。

namespace提供了一种在相同的虚拟硬件资源的基础之上,提供了各种层面、各个节点资源隔离的机制。

隔离有很多优点,如它提供了安全和干净的环境。例如,用户可以安装不同版本的 Jenkins,如果它们的环境变量是在不同的命名空间,就不会冲突。

如果你是基础设施的所属者,可以为不同场合的应用系统,提供不同的名字空间,如开发环节、生产环节和运维环节,就可以使用不同的名字空间进行隔离。

1.2 名字空间隔离哪些内容

  • 运行的服务Pods(微服务程序)
  • 微服务应用程序的配置

1.3 命名空间的特点

  • 名字空间本身也是资源,可以动态创建或删除。
  • 名字空间可以跨越集群中的多个虚拟机节点。
  • 所有的应用程序,都必须部署在特定的名字空间中。
  • 名字空间隔离的是单机上的资源访问,不隔离IP网络访问,不用的服务之间,可以通过网络进行访问,即使他们不在相同的名字空间 。
  • 命名空间不能嵌套。部署只能在一个命名空间中进行。
  • 所有的命名空间对于该资源类型只能使用一个独一无二的名字。

1.4 命名空间的本质

命名空间的本质是虚拟集群。

kubernetes 文档 中的解释:

kubernetes 在一个 物理集群上提供了多个 虚拟集群。这些虚拟集群被称为命名空间。

通过虚拟集群,意味着 kubernetes 可以在单个集群上提供多个 kubernetes 的虚拟集群,类似一个在其主机抽象出来的虚拟机,如下图所示:

1.5 K8S默认的自带的名字空间

一个集群的三个初始命名空间:defaultkube-system 和 kube-public

  • Default 用于某些没有指明命名空间的部署,这是一种快速创建混乱的做法,如果你在没有正确信息的情况下做了很多部署,将很难清理。不建议把自己的业务应用程序部署在默认的名字空间。
  • Kube-system 是 Kubernetes 系统相关的所有对象组成的命名空间。任何对此命名空间的部署都可能是危险的操作,可能对系统本身造成不可挽回的破坏。
  • Kube-public 所有人可读,但是这个命名空间是为系统保留的。

虽然技术上你可以用这三个命名空间作部署,但我还是推荐你把这三个命名空间留作系统配置用,而不是你的项目。

因此,对于互联网应用,我们通常会在同一个物理集群上,提供三个虚拟集群(三个名字空间)

  • 开发名字空间:用于开发人员的程序开发
  • 生产名字空间:用于正式部署前的系统验证
  • 运维名字空间:用于最终的业务服务。

1.6 K8S资源的创建方式

(1)cubectl命令行方式

(2)yaml配置文件的方式

本文以命令行为例,方面操作。

第2章 名字空间的常见操作

2.1 查看已有的名字空间

$ kubectl get namespace
$ kubectl get ns

root@k8s-master1 ~]#  kubectl get namespace
NAME                   STATUS   AGE
default                Active   4d1h
kube-node-lease        Active   4d1h
kube-public            Active   4d1h
kube-system            Active   4d1h
kubernetes-dashboard   Active   4d

2.2 创建新的名字空间

$ kubectl create namespace dev
namespace/dev created

2.3 删除已有的名字空间

$ kubectl delete namespace dev
$ kubectl delete ns dev

namespace "dev" deleted

备注:

删除名字空间会导致基于名字空间的所有资源和应用程序都会被删除掉,这需要小心谨慎。

2.4 kubectl get pods -A与kubectl get pods的区别

(1)kubectl get pods:获取default名字空间的pods

NAMESPACE       NAME                            READY   STATUS  RESTARTS   AGE

无应用

(2)kubectl get pods -A:获取所有的名字空间的pods

$ kubectl get pods --all-namespaces
$ kubectl get pods -A

kube-system            calico-kube-controllers-566dc76669-stvkr     1/1     Running   1 (3d21h ago)    3d23h
kube-system            calico-node-fz7s6                            0/1     Running   1 (3d21h ago)    3d23h
kube-system            calico-node-jlf2m                            1/1     Running   0                3d21h
kube-system            coredns-6d8c4cb4d-6cts2                      1/1     Running   1 (3d21h ago)    4d1h
kube-system            coredns-6d8c4cb4d-w6x5k                      1/1     Running   1 (3d21h ago)    4d1h
kube-system            etcd-k8s-master1                             1/1     Running   2 (3d21h ago)    4d1h
kube-system            kube-apiserver-k8s-master1                   1/1     Running   31 (3d21h ago)   4d1h
kube-system            kube-controller-manager-k8s-master1          1/1     Running   2 (3d21h ago)    4d1h
kube-system            kube-proxy-5wrkx                             1/1     Running   2 (3d21h ago)    4d1h
kube-system            kube-proxy-ptxgf                             1/1     Running   0                3d21h
kube-system            kube-scheduler-k8s-master1                   1/1     Running   2 (3d21h ago)    4d1h
kubernetes-dashboard   dashboard-metrics-scraper-799d786dbf-88c2w   1/1     Running   1 (3d21h ago)    4d
kubernetes-dashboard   kubernetes-dashboard-546cbc58cd-292dr        1/1     Running   1 (3d21h ago)    4d

上述的区别,充分的展示了业务应用pods是部署在特定的名字空间的。

K8S核心的自带的微服务,如kube-proxy、etcd都部署在kube-system名字空间,而不是default名字空间。

dashboard的pod有自己的独立的名字空间:kubernetes-dashboard

第3章 通过配置文件操作名字空间

3.1 创建新的名字空间

(1)创建新的名字空间的配置文件*.yaml文件

$ cd ~
$ vim dev-ns.yaml

apiVersion: v1
kind: Namespace
metadata:
 name: ns-dev

(2)appy配置文件(创建名字空间)

kubectl apply -f dev-ns.yaml

(3)查看新创建的名字空间

$ kubectl get namespace
$ kubectl get ns
NAME            STATUS   AGE
default         Active   67d
kube-public     Active   67d
kube-system     Active   67d
ns-dev          Active   14s

3.2 删除已有的名字空间

(1)删除配置文件

# 删除名字空间资源,并不删除配置文件dev-ns.yaml
kubectl delete -f dev-ns.yaml

(2)查看结果

$ kubectl get namespace
$ kubectl get ns
NAME            STATUS   AGE
default         Active   67d
kube-public     Active   67d
kube-system     Active   67d

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/122791716

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文火冰糖的硅基工坊

你的鼓励是我前进的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值