1、标签使用

1.1 标签维护

  • 查看所有

    在查看资源的时候通过指定 --show-labels 参数来输出对应的标签。

    kubectl get pod --show-labels
  • 查看指定标签

    通过 -L--labels=)参数可以指定需要查看的标签 key。

    kubectl get pod -L env
  • 添加标签

    在创建好资源自后,可以通过 label 为资源增加新的标签。

    kubectl label pod podname key=value
  • 修改标签

    修改标签同创建标签类似,需要增加一个 --overwrite 参数。

    kubectl label pod podname key=value --overwrite
  • 删除标签

    在具体键后面添加一个 - 来表示删除当前指定键的标签。

    kubectl label pod podname key-

1.2 使用标签过滤资源

  • 查看具有指定标签键值的资源。

    kubectl get pod -L key=value
  • 查看具有指定标签的资源。

    kubectl get pod -L key
  • 查看没有指定标签的资源。

    kubectl get pod -L '!key'
  • 其他复合过滤

    # 查看 key != value 的资源
    kubectl get pod -L key!=value
    ​
    # 查看值在一定范围的资源
    kubectl get pod -L key in (values, values)
    ​
    # 查看值不在一定范围的资源
    kubectl get pod -L ket notin (values, values)

    在包含多个逗号分隔的情况下,可以在标签选择器中同时使用多个条件,此时资源需要全部匹配才算成功匹配了选择器。

1.3 调度指定节点

标签的作用可以区分一类资源,在使用上可以利用标签完成资源调度到指定节点的能力,例如在创建 pod 的时候可以通过指定标签来通知 Kubernetes 将该 pod 调度到具有该标签的 node 上面。

nodeSelector:
    key: "value"

2、注解使用

和标签一样注解也是标记信息的一种手段,但是相对于标签而言更注重于说明而不是标记,出现在 annotations 中,也是键值对的存储方式。

3、命名空间

命名空间为资源名称提供了一个作用域,除了隔离资源,命名空间还可用于仅允许某些用户访问某些特定资源,甚至限制单个用户可用的计算资源数量。

尽管大多数对象的名称必须符合RFC 1035(域名)中规定的命名规范,这意味着它们可能只包含字母、数字、横杠(-)和点号,但命名空间(和另外几个)不允许包含点号。

3.1 命名空间使用

alias kcd='kubectl config set-context $(kubectl config currentcontext)--namespace'
kcd some-namespace # 快速命名空间优化