命名空间

  1. default
  2. kube-system 系统创建的对象的命名空间
  3. kube-public 自动创建的,所有用户都可以获取
  4. kube-node-lease,每个节点在此命名空间中都有一个关联的lease对象,lease是一种轻量级的资源,可在集群扩展时提高节点心跳机制的性能。kubernetes节点发送的心跳有助于确定节点的可用性,kubelet负责创建和更新nodestatus和lease对象
  5. node,以及PV资源类型不属于任何命名空间

操作

  1. 使用命令创建/删除命名空间bash kubectl create namespace test kubectl delete namespace test

  2. yml使用
    kubectl create -f test.yml```yml

    kubectl api-versions

    api版本说明 alpha测试版本,beta比如v2beta1,测试版,可能会更新,v稳定版

    kubectl api-resources功能,k8s集群功能

    kubectl explain daemonset显示能够使用的版本功能

    apiVersion: v1 kind: Namespace metadata: name: test ```

label,annotation

Label(标签)是识别Kubernetes对象的标签,也是不同资源之间互相关联的方式。以key/value的方式附加到对象上(key最长不能超过63字节,value可以为空,也可以是不超过253字节的字符串)。Label不提供唯一性,并且实际上经常是很多对象(如Pods)都使用相同的label来标志具体的应用。

Label有哪些作用:

  • Controller和Service可以通过label slector控制Pod生命周期
  • 影响调度
  • 影响网络策略

annotate(注释)可以将Kubernetes资源对象关联到任意的非标识性元数据。使用客户端(如工具和库)可以检索到这些元数据。

label 命令

  1. # 为命名空间test建立一个标签
  2. [rancher@master1 ~]$ kubectl label namespaces test app=test
  3. namespace/test labeled
  4. # 查
  5. [rancher@master1 ~]$ kubectl describe namespaces test
  6. Name: test
  7. Labels: app=test
  8. Annotations: <none>
  9. Status: Active
  10. No resource quota.
  11. No LimitRange resource.
  12. # 为命名空间test创建一个没有值的标签
  13. [rancher@master1 test]$ kubectl label namespaces test nginx=
  14. namespace/test labeled
  15. [rancher@master1 test]$ kubectl describe namespaces test
  16. Name: test
  17. Labels: app=demo
  18. nginx=
  19. Annotations: <none>
  20. Status: Active
  21. No resource quota.
  22. No LimitRange resource.
  23. # 获取所有命名空间下的标签
  24. [rancher@master1 ~]$ kubectl get namespaces --show-labels
  25. NAME STATUS AGE LABELS
  26. default Active 20h <none>
  27. ingress-nginx Active 20h <none>
  28. kube-node-lease Active 20h <none>
  29. kube-public Active 20h <none>
  30. kube-system Active 20h <none>
  31. test Active 8m52s app=test
  1. # 通过yaml文件创建
  2. apiVersion: v1
  3. kind: Namespace
  4. metadata:
  5. name: test
  6. labels:
  7. app: demo
  8. [rancher@master1 test]$ kubectl create -f test.yml
  9. namespace/test created
  10. [rancher@master1 test]$ kubectl delete -f .
  11. namespace "test" deleted

annotatin命令

  1. [rancher@master1 ~]$ kubectl annotate namespaces test pro=test
  2. namespace/test annotated
  3. [rancher@master1 ~]$ kubectl describe namespaces test
  4. Name: test
  5. Labels: app=test
  6. Annotations: pro: test
  7. Status: Active
  8. No resource quota.
  9. No LimitRange resource.
  10. [rancher@master1 ~]$
  11. # 取消label或annotation
  12. [rancher@master1 ~]$ kubectl annotate namespaces test pro-
  13. namespace/test annotated
  14. [rancher@master1 ~]$ kubectl label namespaces test app-
  15. namespace/test labeled