k8s命名空间Namespace介绍与使用,以及用kubens插件管理namespace

✍️Auth:star皆空       Date:2021/11/20       Cat:Linux服务器       👁️:585 次浏览

1、简介

命名空间适用于存在很多跨多个团队或项目的用户的场景。对于只有几到几十个用户的集群,根本不需要创建或考虑命名空间。当需要名称空间提供的功能时,请开始使用它们。

简单理解,不同团队之间的项目,隔离作用,互不干扰。但是必要情况下,也是可以互相通信的。

Kubernetes中的集群默认会有一个叫default的namespace。实际上,应该是3个:

  • default:你的service和app默认被创建于此。
  • kube-system:kubernetes系统组件使用。
  • kube-public:公共资源使用。但实际上现在并不常用。

命令kubectl get ns可查看命名空间。

ubuntu@k8s-master:~$ kubectl get ns
NAME              STATUS   AGE
default           Active   42h
kube-node-lease   Active   42h
kube-public       Active   42h
kube-system       Active   42h

所有没有指定namespace下,集群都默认在default 命名空间。


2、创建Namespace

两种方式:命令和yaml文件
1)命令:kubectl create namespace test
2)使用yaml文件:

  sudo vim namespace.yaml
   kind: Namespace
   apiVersion: v1
   metadata:
    name: test
   labels:
    name: test

然后,执行kubectl apply -f namespace.yaml


3、在namespace中创建资源

也有两种方式:
1)命令最后指定命名空间:kubectl apply -f pod.yaml –namespace=test
2)在yaml文件指定:

apiVersion: v1
kind: Pod
metadata:
  name: mypod
  namespace: test    #指定命名空间
  labels:
    name: mypod
spec:
  containers:
  - name: mypod
    image: nginx

一旦指定命名空间后,在查看Pod或者Service,也必须指定命名空间,否则查看不到,因为没指定之前,所有命令默认是default的命名空间。

查看test命名空间的pod

kubectl get pods --namespace=test

4、kubens切换namespace

如上所示,所有命令默认是default的命名空间,所有用其他命名空间,必须指定命令。所以可以切换至命名空间,就不需要在命令后指定了。

所以需要用到插件kubens,插件地址:https://github.com/ahmetb/kubectx#manual-installation-macos-and-linux
这里面包含两个插件,需要的话都可以安装。下载安装:

sudo git clone https://github.com/ahmetb/kubectx /opt/kubectx
sudo ln -s /opt/kubectx/kubectx /usr/local/bin/kubectx
sudo ln -s /opt/kubectx/kubens /usr/local/bin/kubens

安装完成,当你运行kubens命令,它会高亮当前的namespace,
切换test空间,kubens test,再次查看所在空间,已切换完成,查看test所在空间的资源,输入命令也无需在次指定test的命名空间。

打赏作者

发表评论