一、资源配置清单

  1、自主式Pod资源

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

  2、资源的清单格式,大多数清单格式都遵循如下条件:

    a、一级字段:apiVersion(group/version),kind,metadata(name,namespace,labels,annotations....),spec,status(只读)

二、在spec中常用的定义资源的字段

  1、spec.containers <[]object>#列表对象

    a、 name <string> #容器名称

    b、 image <string>  #镜像名称 一般格式为 项目名称/用户名称/镜像名称:标签

    c、  imagePullPolicy <string>#镜像获取策略

    d、Always(总是到仓库中下载,无论本地有没有都要去仓库中下载),Never(本地有就用,本地没有也不下载),IfNotPreseat(如果本地存在则直接使用,如果本地不存在就去仓库下载)。如果镜像标签为latest则默认为Always,如果镜像标签不是latest则默认为IfNotPresent模式。一旦对象创建后就不能被更改。

    e、ports #暴露端口

    f、command #默认启动命令,如果要用到shell 需要手动指定,不指定的话默认运行默认启动命令,相当于docker中的entrypoint

    g、args #向entrypoint 传递参数。默认启动命令为  entrypoint 命令 + Cmd 命令,若指定了args那么就变成了entrypoint命令 + args命令 ,args相当于docker中的Cmd命令 

    h、command 和 args与镜像中的各标签对比如下

       Kubernetes 学习6 Pod控制器应用进阶 随笔

三、资源标签

  1、资源标签的键名和值必须小于等于63个字符。key 和 value 都需要小于等于63个字符。并且键名只能使用字母数字下划线点号连接线。并且只能以字母或者数字开头。

  2、通过命令查看标签

[root@k8smaster manifests]# kubectl get pods -o wide --show-labels
NAME                          READY     STATUS    RESTARTS   AGE       IP            NODE       LABELS
myapp-848b5b879b-5k4s4        1/1       Running   0          4d        10.244.2.14   k8snode2   pod-template-hash=4046164356,run=myapp
myapp-848b5b879b-bzblz        1/1       Running   0          4d        10.244.1.21   k8snode1   pod-template-hash=4046164356,run=myapp
myapp-848b5b879b-hzbf5        1/1       Running   0          4d        10.244.1.22   k8snode1   pod-template-hash=4046164356,run=myapp
nginx-deploy-5b595999-d9lv5   1/1       Running   0          4d        10.244.2.4    k8snode2   pod-template-hash=16151555,run=nginx-deploy
pod-demo                      2/2       Running   1          1h        10.244.1.23   k8snode1   app=myapp,tier=frontend

  3、显示拥有app标签的值

[root@k8smaster manifests]# kubectl get pods -o wide -L app
NAME                          READY     STATUS    RESTARTS   AGE       IP            NODE       APP
myapp-848b5b879b-5k4s4        1/1       Running   0          4d        10.244.2.14   k8snode2   
myapp-848b5b879b-bzblz        1/1       Running   0          4d        10.244.1.21   k8snode1   
myapp-848b5b879b-hzbf5        1/1       Running   0          4d        10.244.1.22   k8snode1   
nginx-deploy-5b595999-d9lv5   1/1       Running   0          4d        10.244.2.4    k8snode2   
pod-demo                      2/2       Running   0          4m        10.244.2.16   k8snode2   myapp

  4、显示拥有app标签的pod

[root@k8smaster manifests]# kubectl get pods -o wide -l app --show-labels
NAME       READY     STATUS    RESTARTS   AGE       IP            NODE       LABELS
pod-demo   2/2       Running   0          8m        10.244.2.16   k8snode2   app=myapp,tier=frontend

  5、给pod用命令打标签

[root@k8smaster manifests]# kubectl label pods pod-demo release=canary #金丝雀
pod/pod-demo labeled
[root@k8smaster manifests]# kubectl get pods -o wide -l app --show-labels
NAME       READY     STATUS    RESTARTS   AGE       IP            NODE       LABELS
pod-demo   2/2       Running   0          13m       10.244.2.16   k8snode2   app=myapp,release=canary,tier=frontend

  6、修改已有标签

[root@k8smaster manifests]# kubectl get pods -o wide -l app --show-labels
NAME       READY     STATUS    RESTARTS   AGE       IP            NODE       LABELS
pod-demo   2/2       Running   0          13m       10.244.2.16   k8snode2   app=myapp,release=canary,tier=frontend
[root@k8smaster manifests]# kubectl label pods pod-demo release=stable --overwrite
pod/pod-demo labeled
[root@k8smaster manifests]# kubectl get pods -o wide -l app --show-labels
NAME       READY     STATUS    RESTARTS   AGE       IP            NODE       LABELS
pod-demo   2/2       Running   0          15m       10.244.2.16   k8snode2   app=myapp,release=stable,tier=frontend

  7、k8s的标签选择器有两类

    a、等值关系标签选择器: = ,==,!=(不等于)

[root@k8smaster manifests]# kubectl get pods
NAME                          READY     STATUS    RESTARTS   AGE
myapp-848b5b879b-5k4s4        1/1       Running   0          4d
myapp-848b5b879b-bzblz        1/1       Running   0          4d
myapp-848b5b879b-hzbf5        1/1       Running   0          4d
nginx-deploy-5b595999-d9lv5   1/1       Running   0          4d
pod-demo                      2/2       Running   0          22m
[root@k8smaster manifests]# kubectl label pods nginx-deploy-5b595999-d9lv5 release=canary  
pod/nginx-deploy-5b595999-d9lv5 labeled
[root@k8smaster manifests]# kubectl get pods -o wide --show-labels -l release  #查看包含release标签的pod
NAME                          READY     STATUS    RESTARTS   AGE       IP            NODE       LABELS
nginx-deploy-5b595999-d9lv5   1/1       Running   0          4d        10.244.2.4    k8snode2   pod-template-hash=16151555,release=canary,run=nginx-deploy
pod-demo                      2/2       Running   0          24m       10.244.2.16   k8snode2   app=myapp,release=stable,tier=frontend
[root@k8smaster manifests]# kubectl get pods -o wide --show-labels -l release=canary  #查看包含release=canary标签的pod
NAME                          READY     STATUS    RESTARTS   AGE       IP           NODE       LABELS
nginx-deploy-5b595999-d9lv5   1/1       Running   0          4d        10.244.2.4   k8snode2   pod-template-hash=16151555,release=canary,run=nginx-deploy
[root@k8smaster manifests]# kubectl get pods -o wide --show-labels -l release,app  #查看既包含release又包含app标签的pod
NAME       READY     STATUS    RESTARTS   AGE       IP            NODE       LABELS
pod-demo   2/2       Running   0          24m       10.244.2.16   k8snode2   app=myapp,release=stable,tier=frontend
[root@k8smaster manifests]# kubectl get pods -o wide --show-labels -l release=stable,app=myapp #查看release=stable和app=myapp的pod
NAME       READY     STATUS    RESTARTS   AGE       IP            NODE       LABELS
pod-demo   2/2       Running   0          25m       10.244.2.16   k8snode2   app=myapp,release=stable,tier=frontend
[root@k8smaster manifests]# kubectl get pods -o wide --show-labels -l release!=stable,app!=myapp #查看release不等于stable和app不等于myapp的pod
NAME                          READY     STATUS    RESTARTS   AGE       IP            NODE       LABELS
myapp-848b5b879b-5k4s4        1/1       Running   0          4d        10.244.2.14   k8snode2   pod-template-hash=4046164356,run=myapp
myapp-848b5b879b-bzblz        1/1       Running   0          4d        10.244.1.21   k8snode1   pod-template-hash=4046164356,run=myapp
myapp-848b5b879b-hzbf5        1/1       Running   0          4d        10.244.1.22   k8snode1   pod-template-hash=4046164356,run=myapp
nginx-deploy-5b595999-d9lv5   1/1       Running   0          4d        10.244.2.4    k8snode2   pod-template-hash=16151555,release=canary,run=nginx-deploy
[root@k8smaster manifests]# kubectl get pods -o wide --show-labels -l release!=stable #查看release不等于stable的pod
NAME                          READY     STATUS    RESTARTS   AGE       IP            NODE       LABELS
myapp-848b5b879b-5k4s4        1/1       Running   0          4d        10.244.2.14   k8snode2   pod-template-hash=4046164356,run=myapp
myapp-848b5b879b-bzblz        1/1       Running   0          4d        10.244.1.21   k8snode1   pod-template-hash=4046164356,run=myapp
myapp-848b5b879b-hzbf5        1/1       Running   0          4d        10.244.1.22   k8snode1   pod-template-hash=4046164356,run=myapp
nginx-deploy-5b595999-d9lv5   1/1       Running   0          4d        10.244.2.4    k8snode2   pod-template-hash=16151555,release=canary,run=nginx-deploy

    b、集合关系的标签选择器

      KEY in {VALUE1,VALUE2,...}

      KEY notin {VALUE1,VALUE2...}

      KEY #存在此键

      !KEY #不存在此键

[root@k8smaster manifests]# kubectl get pods -o wide --show-labels 
NAME                          READY     STATUS    RESTARTS   AGE       IP            NODE       LABELS
myapp-848b5b879b-5k4s4        1/1       Running   0          4d        10.244.2.14   k8snode2   pod-template-hash=4046164356,run=myapp
myapp-848b5b879b-bzblz        1/1       Running   0          4d        10.244.1.21   k8snode1   pod-template-hash=4046164356,run=myapp
myapp-848b5b879b-hzbf5        1/1       Running   0          4d        10.244.1.22   k8snode1   pod-template-hash=4046164356,run=myapp
nginx-deploy-5b595999-d9lv5   1/1       Running   0          4d        10.244.2.4    k8snode2   pod-template-hash=16151555,release=canary,run=nginx-deploy
pod-demo                      2/2       Running   0          39m       10.244.2.16   k8snode2   app=myapp,release=stable,tier=frontend

[root@k8smaster manifests]# kubectl get pods -o wide --show-labels -l "release in (canary,beta,alpha)"
NAME                          READY     STATUS    RESTARTS   AGE       IP           NODE       LABELS
nginx-deploy-5b595999-d9lv5   1/1       Running   0          4d        10.244.2.4   k8snode2   pod-template-hash=16151555,release=canary,run=nginx-deploy
[root@k8smaster manifests]# kubectl get pods -o wide --show-labels -l "release notin (canary,beta,alpha)"
NAME                     READY     STATUS    RESTARTS   AGE       IP            NODE       LABELS
myapp-848b5b879b-5k4s4   1/1       Running   0          4d        10.244.2.14   k8snode2   pod-template-hash=4046164356,run=myapp
myapp-848b5b879b-bzblz   1/1       Running   0          4d        10.244.1.21   k8snode1   pod-template-hash=4046164356,run=myapp
myapp-848b5b879b-hzbf5   1/1       Running   0          4d        10.244.1.22   k8snode1   pod-template-hash=4046164356,run=myapp
pod-demo                 2/2       Running   0          41m       10.244.2.16   k8snode2   app=myapp,release=stable,tier=frontend

 58分35秒

      

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄