您的位置 首页 > 腾讯云社区

K8S命名空间---胡齐

1、简介

Kubernetes 支持多个虚拟集群,它们底层依赖于同一个物理集群。这些虚拟集群被称为命名空间。

2、如何使用命名空间命名空间适用于存在很多跨多个团队或项目的用户的场景。对于只有几到几十个用户的集群,根本不需要创建或考虑命名空间。当需要名称空间提供的功能时,请开始使用它们。命名空间为名称提供了一个范围。资源的名称需要在命名空间内是唯一的,但不能跨命名空间。命名空间不能相互嵌套,每个 Kubernetes 资源只能在一个命名空间中。命名空间是在多个用户之间划分集群资源的一种方法(通过资源配额)。在 Kubernetes 未来版本中,相同命名空间中的对象默认将具有相同的访问控制策略。不需要使用多个命名空间来分隔轻微不同的资源,例如同一软件的不同版本:使用 labels 来区分同一命名空间中的不同资源。3、列出集群中的当前名称空间 [root@k8s-001 k8s]# kubectl get namespaces NAME STATUS AGE default Active 8h kube-node-lease Active 8h kube-public Active 8h kube-system Active 8h4、Kubernetes三个初始名称空间default 没有其他名称空间的对象的默认名称空间。kube-system Kubernetes系统创建的对象的名称空间。kube-public该名称空间是自动创建的,并且对所有用户(包括未经身份验证的用户)可读。此名称空间主要保留给集群使用,以防某些资源在整个集群中公开可见。此名称空间的公共方面仅是约定,不是要求。5、获取默认名称空间的信息 [root@k8s-001 k8s]# kubectl get namespaces default NAME STATUS AGE default Active 3h53m # 或者使用 [root@k8s-001 k8s]# kubectl describe namespaces default Name: default Labels: <none> Annotations: <none> Status: Active No resource quota. No LimitRange resource.6、创建Namespace [root@k8s-001 k8s]# cat name-server.yaml apiVersion: v1 kind: Namespace metadata: name: ywm labels: name: ywm [root@k8s-001 k8s]# kubectl apply -f name-server.yaml namespace/ywm created [root@k8s-001 k8s]# kubectl get namespaces ywm Active 3m22s7、在指定名称空间上部署应用 [root@k8s-001 k8s]# kubectl create deployment --image nginx demo-nginx --namespace=ywm deployment.apps/demo-nginx created [root@k8s-001 k8s]# kubectl describe deployment demo-nginx --namespace=ywm |grep Namespace Namespace: ywm8、设置Context选择命名空间1.默认命名空间 [root@k8s-001 ~]# kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO NAMESPACE * kubernetes-admin@kubernetes kubernetes kubernetes-admin # 上图说明我们使用了一个名为Default的context,context没有指定命名空间,因此使用了默认命名空间2.想要将该context使用的命名空间修改成ywm,我们输入 [root@k8s-001 ~]# kubectl config set-context $(kubectl config current-context) --namespace=ywm Context "kubernetes-admin@kubernetes"modified.3.查看context配置来验证当前是否选择了ywm [root@k8s-001 ~]# kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO NAMESPACE * kubernetes-admin@kubernetes kubernetes kubernetes-admin ywm4.验证我们的kubectl describe命令现在默认使用demo-namespace,它会请求我们的demo-nginx部署而不需要指定命名空间 [root@k8s-001 ~]# kubectl describe deployment demo-nginx|grep Namespace Namespace: ywm9、删除命名空间并清理

删除命名空间这一功能非常强大,因为它不仅删除命名空间,还会清理其中部署了的所有资源。这一功能非常方便,但是同时如果你一不小心,也会非常危险

1.在删除之前,最好列出和命名空间相关的资源,确定想要删除的对象 [root@k8s-001 ~]# kubectl get all --namespace=ywm NAME READY STATUS RESTARTS AGE pod/demo-nginx-5595f574b7-dg5gq 1/1 Running 0 88m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/nginx-service NodePort 10.96.90.242 <none> 80:32601/TCP 121m NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/demo-nginx 1/1 1 1 88m NAME DESIRED CURRENT READY AGE replicaset.apps/demo-nginx-5595f574b7 1 1 1 88m2.一旦确定了要操作的范围,可以输入下面的命令删除demo-namespace命名空间和其中的所有资源 [root@k8s-001 ~]# kubectl delete namespace ywm namespace "ywm"deleted3.命名空间及其资源将从集群中删除 [root@k8s-001 ~]# kubectl get namespace NAME STATUS AGE default Active 6h14m kube-node-lease Active 6h14m kube-public Active 6h14m kube-system Active 6h14m kubernetes-dashboard Active 5h57m10、初始化命名空间1.如果你之前在kubectl上下文中更改了所选的命名空间,那么输入下面的命令清除所选的命名空间 [root@k8s-001 ~]# kubectl config set-context $(kubectl config current-context) --namespace= Context "kubernetes-admin@kubernetes"modified.2.在清理demo资源时,请记住删除我们最初提供给默认命名空间的原始demo-nginx部署 [root@k8s-001 ~]# kubectl delete deployment demo-nginx Error from server (NotFound): deployments.apps "demo-nginx"not found [root@k8s-001 ~]# kubectl get deployment No resources found indefault namespace.

现在你的集群应该处于一开始的状态了

如果文章有任何错误欢迎不吝赐教,其次大家有任何关于运维的疑难杂问,也欢迎和大家一起交流讨论。关于运维学习、分享、交流,笔者开通了微信公众号【运维猫】,感兴趣的朋友可以关注下

---来自腾讯云社区的---胡齐

关于作者: 瞎采新闻

这里可以显示个人介绍!这里可以显示个人介绍!

热门文章

留言与评论(共有 0 条评论)
   
验证码: