首页
学习
活动
专区
圈层
工具
发布
50 篇文章
1
kubernetes与velero的第一次尝试
2
在Kubernetes中如何针对Namespace进行资源限制?
3
kubernetes之metrics-server安装与配置
4
kubernetes部署metrics-server
5
Kubernetes1.20.9摘掉一个master节点再重新加入(ETCD需要注意的)
6
Kubernetes 1.17.17升级到1.18.20
7
Kubernetes 1.18.20升级到1.19.12
8
Kubernetes 1.19.12升级到1.20.9(强调一下selfLink)
9
Kubernetes 1.16.15升级到1.17.17
10
使用 kainstall 工具一键部署 kubernetes 高可用集群
11
附034.Kubernetes_v1.21.0高可用部署架构二
12
附016.Kubernetes_v1.17.4高可用部署
13
附022.Kubernetes_v1.18.3高可用部署架构一
14
附024.Kubernetes_v1.18.3高可用部署架构二
15
使用 StatefulSet 部署 etcd 集群
16
Kubernetes 稳定性保障手册 -- 极简版
17
Linux(centos7)离现安装kubernetes1.19.2和docker——组件部分
18
docker register 私有仓库部署 - http模式
19
KubeSphere 开源 KubeEye:Kubernetes 集群自动巡检工具
20
K8S 中的 CPUThrottlingHigh 到底是个什么鬼?
21
全链路分布式跟踪系统 Apache SkyWalking 入门教程
22
pod Evicted的状态究竟是何人所为
23
使用 ezctl 工具部署和管理 Kubernetes 集群
24
Kubernetes部署策略详解
25
kubernetes容器探针检测
26
使用Spring Boot实现动态健康检查HealthChecks
27
真一文搞定 ingress-nginx 的使用
28
K8S备份、恢复、迁移神器 Velero
29
一次关于k8s kubectl top 和 contained ps 不一致的问题探究
30
kubernetes备份恢复之velero
31
使用 Velero 进行集群备份与迁移
32
TKE集群中nginx-ingress使用实践
33
使用velero进行kubernetes灾备
34
Kubernetes 映射外部服务
35
运维体系建设套路
36
k8s解决pod调度不均衡的问题
37
ingress中虚拟路径解决方案
38
容器下的两地三中心建设
39
k8s集群外的主机访问pod的解决方案
40
k8s基础-健康检查机制
41
k8s基础-标签使用
42
ingress-nginx请求改写
43
nginx ingress server alias 多域名多证书问题
44
JAVA | Java 解决跨域问题 花式解决跨域问题
45
如何通过ingress-nginx实现应用灰度发布?
46
在Kubernetes(k8s)中使用GPU
47
使用 Prometheus-Operator 监控 Calico
48
使用Kubespray部署Kubernetes集群
49
云原生下的CI/CD:Argo CD 详解,手把手教你入门
50
Pod的健康检查机制
清单首页k8s文章详情

k8s基础-标签使用

标签

标签是一种简单却又功能强大的kubernetes特性,不仅可以组织pod,也可以组织所有其他的kubernetes资源,标签是可以附加到资源的任意键值对,用以选择具有该确切标签的资源,只要标签的key在资源内是唯一的,一个资源便可以拥有多个标签。

示例

创建pod时指定标签

代码语言:javascript
复制
# cat kubia.yml 
apiVersion: v1
kind: Pod
metadata:
  name: kubia-manual-v2
  labels:
    creation_method: manual
    env: prod
spec:
  containers:
  - image: luksa/kubia
    name: kubia
    ports:
    - containerPort: 8080
      protocol: TCP

启动pod kubectl create -f . 查看标签

代码语言:javascript
复制
# kubectl get pod --show-labels
NAME                READY   STATUS    RESTARTS   AGE   LABELS
kubia-manual-v2     1/1     Running   0          43m   creation_method=manual,env=prod

将标签显示在列中

代码语言:javascript
复制
# kubectl get pod -L env,creation_method
NAME                READY   STATUS    RESTARTS   AGE   ENV    CREATION_METHOD
kubia-manual-v2     1/1     Running   0          45m   prod   manual

修改现有标签

代码语言:javascript
复制
# kubectl label pod kubia-manual-v2 env=test --overwrite
pod/kubia-manual-v2 labeled

查看修改后的标签

代码语言:javascript
复制
# kubectl get pod --show-labels
NAME                READY   STATUS    RESTARTS   AGE   LABELS
kubia-manual-v2     1/1     Running   0          46m   creation_method=manual,env=test

创建新的标签

代码语言:javascript
复制
# kubectl label pod kubia-manual-v2 create_time=2019
pod/kubia-manual-v2 labeled

查看新创建的标签

代码语言:javascript
复制
# kubectl get pod --show-labels                     
NAME                READY   STATUS    RESTARTS   AGE   LABELS
kubia-manual-v2     1/1     Running   0          48m   create_time=2019,creation_method=manual,env=test

使用标签选择器列出pod

代码语言:javascript
复制
# kubectl get pod -l env=dev
NAME                READY   STATUS    RESTARTS   AGE
producer-consumer   2/2     Running   4          16d

列出所有包含env值的pod

代码语言:javascript
复制
# kubectl get pod -l env
NAME                READY   STATUS    RESTARTS   AGE
kubia-manual-v2     1/1     Running   0          52m
producer-consumer   2/2     Running   4          16d

列出不包含某标签值的pod

代码语言:javascript
复制
# kubectl get pod -l '!create_time'
NAME                READY   STATUS    RESTARTS   AGE
producer-consumer   2/2     Running   4          16d

列出某个标签不包含某值的pod

代码语言:javascript
复制
# kubectl get pod -l env!=test
NAME                READY   STATUS    RESTARTS   AGE
producer-consumer   2/2     Running   4          16d

或者

代码语言:javascript
复制
v# kubectl get pod -l 'env notin (prod,dev)'
NAME              READY   STATUS    RESTARTS   AGE
kubia-manual-v2   1/1     Running   0          58m

列出某个标签包含某个值的pod

代码语言:javascript
复制
# kubectl get pod -l 'env in (test,dev)'   
NAME                READY   STATUS    RESTARTS   AGE
kubia-manual-v2     1/1     Running   0          59m
producer-consumer   2/2     Running   4          16d

以上是或的关系,env这个标签或者为test,或者为dev

也可以设置多个条件来列出pod

代码语言:javascript
复制
# kubectl get pod -l 'env in (test,dev)',create_time=2019
NAME              READY   STATUS    RESTARTS   AGE
kubia-manual-v2   1/1     Running   0          62m

通过标签控制pod调度

如果我们没有给node节点设置label,那么pod会由k8s进行调度,如果我们想让某一些pod运行到指定的nodes节点上时,标签选择器就可以派上用场了。 首先给node节点创建标签

代码语言:javascript
复制
# kubectl label node node1 server=backend
node/node1 labeled

查看node节点的标签

代码语言:javascript
复制
# kubectl get nodes -l server
NAME    STATUS   ROLES    AGE   VERSION
node1   Ready    <none>   18d   v1.15.3

将pod调度到指定节点

代码语言:javascript
复制
# cat nginx-backend.yml 
apiVersion: v1
kind: Pod
metadata:
  name: nginx-backend
spec:
  nodeSelector:
    server: 'backend'
  containers:
  - image: nginx:latest
    name: nginx-backend
    ports:
    - containerPort: 80
      protocol: TCP

启动pod kubectl create -f nginx-backend.yml 查看pod是否运行在指定节点

代码语言:javascript
复制
# kubectl get pod -o wide | grep nginx-backend
nginx-backend       1/1     Running   0          3m31s   192.168.166.151   node1   <none>           <none>

当我们想删除一组带有指定标签的pod时

代码语言:javascript
复制
kubectl delete pod -l env=test
下一篇
举报
领券