10-Pod的基础管理下篇(标签管理)

一、什么是标签

​ 所谓的标签就是用于为K8S集群的资源做标识,将来基于这个标签进行管理。

​ K8S一切皆资源,几乎K8S所有资源都支持标签进行管理。

二、查看K8S集群所有资源

[root@master231 pods]# kubectl api-resources 
NAME                              SHORTNAMES                                      APIVERSION                             NAMESPACED   KIND
bindings                                                                          v1                                     true         Binding
componentstatuses                 cs                                              v1                                     false        ComponentStatus
configmaps                        cm                                              v1                                     true         ConfigMap
endpoints                         ep                                              v1                                     true         Endpoints
events                            ev                                              v1                                     true         Event
limitranges                       limits                                          v1                                     true         LimitRange
namespaces                        ns                                              v1                                     false        Namespace
nodes                             no                                              v1                                     false        Node
persistentvolumeclaims            pvc                                             v1                                     true         PersistentVolumeClaim
persistentvolumes                 pv                                              v1                                     false        PersistentVolume
pods                              po                                              v1                                     true         Pod
podtemplates                                                                      v1                                     true         PodTemplate
replicationcontrollers            rc                                              v1                                     true         ReplicationController
resourcequotas                    quota                                           v1                                     true         ResourceQuota
secrets                                                                           v1                                     true         Secret
serviceaccounts                   sa                                              v1                                     true         ServiceAccount
services                          svc                                             v1                                     true         Service
mutatingwebhookconfigurations                                                     admissionregistration.k8s.io/v1        false        MutatingWebhookConfiguration
validatingwebhookconfigurations                                                   admissionregistration.k8s.io/v1        false        ValidatingWebhookConfiguration
customresourcedefinitions         crd,crds                                        apiextensions.k8s.io/v1                false        CustomResourceDefinition
apiservices                                                                       apiregistration.k8s.io/v1              false        APIService
controllerrevisions                                                               apps/v1                                true         ControllerRevision
daemonsets                        ds                                              apps/v1                                true         DaemonSet
deployments                       deploy                                          apps/v1                                true         Deployment
replicasets                       rs                                              apps/v1                                true         ReplicaSet
statefulsets                      sts                                             apps/v1                                true         StatefulSet
tokenreviews                                                                      authentication.k8s.io/v1               false        TokenReview
localsubjectaccessreviews                                                         authorization.k8s.io/v1                true         LocalSubjectAccessReview
selfsubjectaccessreviews                                                          authorization.k8s.io/v1                false        SelfSubjectAccessReview
selfsubjectrulesreviews                                                           authorization.k8s.io/v1                false        SelfSubjectRulesReview
subjectaccessreviews                                                              authorization.k8s.io/v1                false        SubjectAccessReview
horizontalpodautoscalers          hpa                                             autoscaling/v2                         true         HorizontalPodAutoscaler
cronjobs                          cj                                              batch/v1                               true         CronJob
jobs                                                                              batch/v1                               true         Job
certificatesigningrequests        csr                                             certificates.k8s.io/v1                 false        CertificateSigningRequest
leases                                                                            coordination.k8s.io/v1                 true         Lease
bgpconfigurations                                                                 crd.projectcalico.org/v1               false        BGPConfiguration
bgppeers                                                                          crd.projectcalico.org/v1               false        BGPPeer
blockaffinities                                                                   crd.projectcalico.org/v1               false        BlockAffinity
caliconodestatuses                                                                crd.projectcalico.org/v1               false        CalicoNodeStatus
clusterinformations                                                               crd.projectcalico.org/v1               false        ClusterInformation
felixconfigurations                                                               crd.projectcalico.org/v1               false        FelixConfiguration
globalnetworkpolicies                                                             crd.projectcalico.org/v1               false        GlobalNetworkPolicy
globalnetworksets                                                                 crd.projectcalico.org/v1               false        GlobalNetworkSet
hostendpoints                                                                     crd.projectcalico.org/v1               false        HostEndpoint
ipamblocks                                                                        crd.projectcalico.org/v1               false        IPAMBlock
ipamconfigs                                                                       crd.projectcalico.org/v1               false        IPAMConfig
ipamhandles                                                                       crd.projectcalico.org/v1               false        IPAMHandle
ippools                                                                           crd.projectcalico.org/v1               false        IPPool
ipreservations                                                                    crd.projectcalico.org/v1               false        IPReservation
kubecontrollersconfigurations                                                     crd.projectcalico.org/v1               false        KubeControllersConfiguration
networkpolicies                                                                   crd.projectcalico.org/v1               true         NetworkPolicy
networksets                                                                       crd.projectcalico.org/v1               true         NetworkSet
endpointslices                                                                    discovery.k8s.io/v1                    true         EndpointSlice
events                            ev                                              events.k8s.io/v1                       true         Event
flowschemas                                                                       flowcontrol.apiserver.k8s.io/v1beta2   false        FlowSchema
prioritylevelconfigurations                                                       flowcontrol.apiserver.k8s.io/v1beta2   false        PriorityLevelConfiguration
ingressclasses                                                                    networking.k8s.io/v1                   false        IngressClass
ingresses                         ing                                             networking.k8s.io/v1                   true         Ingress
networkpolicies                   netpol                                          networking.k8s.io/v1                   true         NetworkPolicy
runtimeclasses                                                                    node.k8s.io/v1                         false        RuntimeClass
apiservers                                                                        operator.tigera.io/v1                  false        APIServer
imagesets                                                                         operator.tigera.io/v1                  false        ImageSet
installations                                                                     operator.tigera.io/v1                  false        Installation
tigerastatuses                                                                    operator.tigera.io/v1                  false        TigeraStatus
poddisruptionbudgets              pdb                                             policy/v1                              true         PodDisruptionBudget
podsecuritypolicies               psp                                             policy/v1beta1                         false        PodSecurityPolicy
bgpconfigurations                 bgpconfig,bgpconfigs                            projectcalico.org/v3                   false        BGPConfiguration
bgppeers                                                                          projectcalico.org/v3                   false        BGPPeer
blockaffinities                   blockaffinity,affinity,affinities               projectcalico.org/v3                   false        BlockAffinity
caliconodestatuses                caliconodestatus                                projectcalico.org/v3                   false        CalicoNodeStatus
clusterinformations               clusterinfo                                     projectcalico.org/v3                   false        ClusterInformation
felixconfigurations               felixconfig,felixconfigs                        projectcalico.org/v3                   false        FelixConfiguration
globalnetworkpolicies             gnp,cgnp,calicoglobalnetworkpolicies            projectcalico.org/v3                   false        GlobalNetworkPolicy
globalnetworksets                                                                 projectcalico.org/v3                   false        GlobalNetworkSet
hostendpoints                     hep,heps                                        projectcalico.org/v3                   false        HostEndpoint
ipamconfigurations                ipamconfig                                      projectcalico.org/v3                   false        IPAMConfiguration
ippools                                                                           projectcalico.org/v3                   false        IPPool
ipreservations                                                                    projectcalico.org/v3                   false        IPReservation
kubecontrollersconfigurations                                                     projectcalico.org/v3                   false        KubeControllersConfiguration
networkpolicies                   cnp,caliconetworkpolicy,caliconetworkpolicies   projectcalico.org/v3                   true         NetworkPolicy
networksets                       netsets                                         projectcalico.org/v3                   true         NetworkSet
profiles                                                                          projectcalico.org/v3                   false        Profile
clusterrolebindings                                                               rbac.authorization.k8s.io/v1           false        ClusterRoleBinding
clusterroles                                                                      rbac.authorization.k8s.io/v1           false        ClusterRole
rolebindings                                                                      rbac.authorization.k8s.io/v1           true         RoleBinding
roles                                                                             rbac.authorization.k8s.io/v1           true         Role
priorityclasses                   pc                                              scheduling.k8s.io/v1                   false        PriorityClass
csidrivers                                                                        storage.k8s.io/v1                      false        CSIDriver
csinodes                                                                          storage.k8s.io/v1                      false        CSINode
csistoragecapacities                                                              storage.k8s.io/v1beta1                 true         CSIStorageCapacity
storageclasses                    sc                                              storage.k8s.io/v1                      false        StorageClass
volumeattachments                                                                 storage.k8s.io/v1                      false        VolumeAttachment

三、响应式打标签

1.查看现有的Pod的标签

[root@master231 pods]# kubectl get pods --show-labels
NAME                READY   STATUS    RESTARTS   AGE    LABELS
xiuxian-resources   1/1     Running   0          161m   <none>

2.为Pod打标签

[root@master231 pods]# kubectl label pods xiuxian-resources apps=test address=changping
pod/xiuxian-resources labeled

[root@master231 pods]# kubectl get pods --show-labels
NAME                READY   STATUS    RESTARTS   AGE    LABELS
xiuxian-resources   1/1     Running   0          161m   apps=test,address=changping

3.修改标签

[root@master231 pods]# kubectl label pods xiuxian-resources apps=test address=beijing  --show-labels

4.删除标签

[root@master231 pods]# kubectl label pods xiuxian-resources apps-
pod/xiuxian-resources unlabeled

四、声明式管理标签

1.官方编写说明

[root@master231 mytest]# kubectl explain po.metadata.labels
KIND:     Pod
VERSION:  v1

FIELD:    labels <map[string]string>

DESCRIPTION:
     Map of string keys and values that can be used to organize and categorize
     (scope and select) objects. May match selectors of replication controllers
     and services. More info: http://kubernetes.io/docs/user-guide/labels

2.创建标签

2.1 编写资源清单

[root@master231 pods]# cat 09-pods-labels.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: xiuxian-labels
  # 为资源打标签,可以自定义键值对,将来可以基于标签进行过滤
  labels:
     apps: xiuxian
spec:
  nodeName: worker233
  containers:
  - image: dezyan/gametest:gametest
    name: c1
    resources:
      requests:
         cpu: 0.5
         memory: 1Gi
      limits:
         cpu: 1.5
         memory: 2Gi
    command:
    - tail
    - -f
    - /etc/hosts
    imagePullPolicy: IfNotPresent

2.2 创建pod观察标签信息

[root@master231 pods]# kubectl create -f 09-pods-labels.yaml 
pod/xiuxian-labels created
[root@master231 pods]# 
[root@master231 pods]# kubectl get pods --show-labels
NAME             READY   STATUS    RESTARTS   AGE   LABELS
xiuxian-labels   1/1     Running   0          5s    apps=xiuxian

3.修改标签

3.1编写资源清单

[root@master231 pods]# cat 09-pods-labels.yaml
apiVersion: v1
kind: Pod
metadata:
  name: xiuxian-labels
  # 为资源打标签,可以自定义键值对,将来可以基于标签进行过滤
  #修改原标签值即可
  labels:
     apps: FanRenXiuXianZhuan
spec:
……………………

3.2 验证

#注意要使用apply,使用Create会报错
# 非幂等性命令,说白了,就是无法重复执行!
[root@master231 pods]# kubectl create -f  09-pods-labels.yaml  
Error from server (AlreadyExists): error when creating "09-pods-labels.yaml": pods "xiuxian-labels" already exists


# 幂等性命令,可以执行多次,如果资源存在则尝试更新,若资源不存在则尝试创建。
[root@master231 pods]# kubectl apply -f  09-pods-labels.yaml  

[root@master231 pods]# kubectl get pods --show-labels
NAME             READY   STATUS    RESTARTS   AGE     LABELS
xiuxian-labels   1/1     Running   0          2m13s   apps=FanRenXiuXianZhuan

4.删除标签

把资源清单中的标签注释即可

[root@master231 pods]# cat 09-pods-labels.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: xiuxian-labels
  # 为资源打标签,可以自定义键值对,将来可以基于标签进行过滤
  #labels:
  #   apps: FanRenXiuXianZhuan
spec:

五、声明式和响应式的区别

相同点:
	都可以管理资源。
		
不同点:
	- 1.声明式修改需要先更改配置文件,而后apply配置文件使之生效,将来传输比较方便;
	- 2.响应式修改立即生效,将来配置时基于文件传输不太方便,需要单独使用shell脚本来实现;

六、基于标签管理Pod

1.环境准备

1.1 创建资源

[root@master231 pods]# kubectl apply -f  01-pods-single-xiuxian.yaml 
pod/xiuxian-xixi created
#无标签
[root@master231 pods]# kubectl get pods -o wide --show-labels
NAME             READY   STATUS    RESTARTS   AGE   IP              NODE        NOMINATED NODE   READINESS GATES   LABELS
xiuxian-labels   1/1     Running   0          11m   10.100.140.89   worker233   <none>           <none>            <none>
xiuxian-xixi     1/1     Running   0          23s   10.100.140.90   worker233   <none>           <none>            <none>

1.2 为资源打标签

[root@master231 pods]# kubectl label pod xiuxian-labels class=linux96
pod/xiuxian-labels labeled
[root@master231 pods]# kubectl label pod xiuxian-xixi school=IMNC
pod/xiuxian-xixi labeled
[root@master231 pods]# kubectl label pod xiuxian-xixi class=linux97
pod/xiuxian-xixi labeled

[root@master231 pods]# kubectl get pods --show-labels
NAME             READY   STATUS    RESTARTS   AGE   LABELS
xiuxian-labels   1/1     Running   0          12m   class=linux96
xiuxian-xixi     1/1     Running   0          75s   class=linux97,school=IMNC

2.基于标签过滤Pod之包含特定标签

[root@master231 pods]# kubectl get pods --show-labels -l class
NAME             READY   STATUS    RESTARTS   AGE    LABELS
xiuxian-labels   1/1     Running   0          13m    class=linux96
xiuxian-xixi     1/1     Running   0          114s   class=linux97,school=IMNC

3.基于标签过滤pod之含特定值

[root@master231 pods]# kubectl get pod --show-labels -l "class in (linux96)"
NAME             READY   STATUS    RESTARTS   AGE     LABELS
xiuxian-labels   1/1     Running   0          16m     class=linux96
[root@master231 pods]# kubectl get pod --show-labels -l "class notin (linux96)"
xiuxian-xixi     1/1     Running   0          114s   class=linux97,school=IMNC

4.基于标签删除资源

[root@master231 pods]# # kubectl delete pod --show-labels -l "class notin (linux96)"
xiuxian-labels   1/1     Running   0          13m    class=linux96
posted @ 2025-04-09 09:21  丁志岩  阅读(34)  评论(0)    收藏  举报