3 篇文章带有标签 “namespaces”

Kubernetes中的名字空间

名字空间

名字空间将对象分割成独立的组,为对象名字提供了作用域,名字在不同的名字空间可以是相同的。名字空间对正在运行的对象不提供任何隔离,名字空间之间是否提供网络隔离取决于 Kubernetes 所使用的网络解决方案。

查看当前集群中的所有名字空间

$ kubectl get namespaces 
NAME                   STATUS   AGE
default                Active   379d
kube-node-lease        Active   379d
kube-public            Active   379d
kube-system            Active   379d
kubernetes-dashboard   Active   377d

创建名字空间

  • 使用命令
$ kubectl create namespace kubia
namespace/kubia created
  • 编写 YAML 文件(kubia-namespace.yaml)
apiVersion: v1
kind: Namespace
metadata:
  name: kubia
$ kubectl apply -f kubia-namespace.yaml 
namespace/kubia created

查看新创建的名字空间,ns 是 namespace 的缩写。

$ kubectl get ns kubia
NAME    STATUS   AGE
kubia   Active   35s

容器内幕

容器的本质是一种特殊的进程

  • Linux Namespace - 空间隔离
  • Linux Cgroups - 资源限制
  • chroot - 切换进程的根目录

Linux Namespace

Linux Cgroups - Linux Control Group

作用:限制一个进程组能够使用的资源上限,包括 CPU、内存、磁盘、网络带宽等等。

查看Cgroups限制的资源各类

在 Linux 中,Cgroups 给用户暴露出来的操作接口是文件系统,即它以文件和目录的方式组织在操作系统的 /sys/fs/cgroup 路径下。可以用 mount 指令把它们展示出来。