k8s命名空间Namespace介绍与使用,以及用kubens插件管理namespace
Posted the丶only
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s命名空间Namespace介绍与使用,以及用kubens插件管理namespace相关的知识,希望对你有一定的参考价值。
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的命名空间。
以上是关于k8s命名空间Namespace介绍与使用,以及用kubens插件管理namespace的主要内容,如果未能解决你的问题,请参考以下文章