k8s学习笔记-05(命名空间)
原创文档编写不易,未经许可请勿转载。文档中有疑问的可以邮件联系我。 邮箱:yinwanit@163.com
概述
k8s中资源通过命名空间进行资源与资源间的隔离。不同的命名空间中的资源相互独立。可以理解为租户。k8s安装完成过后默认自带四个命名空间:default、kube-node-lease、kube-pubic、kube-system。
namespace是通过上下文控制的,切换上下文即可以完成对应配置的改变。
命名空间说明:
- default: 默认的namespace名,k8s环境安装完成后初始默认设置即为default命名空间。
- kube-node-lease:k8s中用来维护集群心跳状态的命名空间。
- kube-public:k8s中公用的命名空间,该空间下的资源可以被所有人访问,包括匿名账户、未制定用户。
- kube-system:k8s系统资源命名空间,k8s集群相关的资源均放在这个目录中,一般情况下不要在这个命名空间中增删资源。
常用命令
查看ns
查看当前环境中有多少个ns,只有管理员或授权的用户可以看到集群环境完全的namespace。
# kubectl get ns --show-labels
# kubectl get ns
创建ns
namespace创建完成后,结合授权把新创建的命名空间授权给制定的用户,实现用户和资源的绑定。
# kubectl create ns <new_namespace_name>
绑定namespace和用户。
删除ns
ns中有资源无法删除namespace,需要把namespace中的资源删除完成过后才能完成namespace的删除,删除ns中的资源的动作一般是自动的,状态为Terminating。
# kubectl delete ns <namespace_name>
查看当前集群ns
# #查看配置文件资源获取上下文 # kubectl config get-contexts # #查看当前的命名空间 # kubectl config get-contexts | awk '/\*/{print $5}'
kubectl config get-contexts 命令结果中,*行表示现在正在生效的上下文文件。其中的NAMESPACE字段即为当前的命名空间。
新增上下文
新增加一个自定义名字的上下文,设置制定集群的命名空间为指定命名空间。
# kubectl config set-context --cluster=<cluster_name> <new-context-name> --namespace=<namespace_name>
# #切换上下文
# kubectl config use-context <context-name>
参数详解:
- cluser_name:填入需要设置的集群的名称。可以通过 kubectl config get-cluster命令查看当前环境的集群名。
- namespace_name:填入需要设置的默认命名空间名称。
- new-context-name:需要创建的上下文的名称。
设置当前ns
修改当前上下文中的namespace及可以完成命名空间修改。
# kubectl config set-context --current --namespace=<namespace_name>
查看制定ns下所有资源
# kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n <namespace_name>