目录
存活性探测livenessProbe和就绪性探测readinessProbe
pod知识点
一、标签
标签概念
标签其实就一对 key/value ,被关联到对象上,比如Pod,标签的使用我们倾向于能够表示对象的特殊特点,就是一眼就看出了这个Pod是干什么的,标签可以用来划分特定的对象(比如版本,服务类型等),标签可以在创建一个对象的时候直接定义,也可以在后期随时修改,每一个对象可以拥有多个标签,但是,key值必须是唯一的。创建标签之后也可以方便我们对资源进行分组管理。如果对pod打标签,之后就可以使用标签来查看、删除指定的pod。
在k8s中,大部分资源都可以打标签。
给pod资源打标签
#对已经存在的pod打标签
[root@hd1.com~]# kubectl label pods pod-first release=v1
查看标签是否打成功:
[root@hd1.com~]# kubectl get pods pod-first --show-labels
显示如下,显示如下,说明标签达成功了;
NAME READY STATUS RESTARTS AGE LABELS
pod-first 1/1 Running 1 21h release=v1, app=tomcat-pod-first
查看资源标签
#查看默认名称空间下所有pod资源的标签
[root@hd1.com~]# kubectl get pods --show-labels
#查看默认名称空间下指定pod具有的所有标签
[root@hd1.com~]# kubectl get pods pod-first --show-labels
#列出默认名称空间下标签key是release的pod,不显示标签
[root@hd1.com~]# kubectl get pods -l release
#列出默认名称空间下标签key是release、值是v1的pod,不显示标签
[root@hd1.com~]# kubectl get pods -l release=v1
#列出默认名称空间下标签key是release的所有pod,并打印对应的标签值
[root@hd1.com~]# kubectl get pods -L release
#查看所有名称空间下的所有pod的标签
[root@hd1.com ~]# kubectl get pods --all-namespaces --show-labels
二、node节点选择器
可以使用pod中的nodeName或者nodeSelector字段指定要调度到的node节点
nodeName:指定pod节点运行在哪个具体node上
nodeSelector:指定pod调度到具有哪些标签的node节点上
通过这两种方式可以使pod到指定工作节点
#给node节点打标签
[root@hd1.com ~]# kubectl label nodes hd3.com disk=ceph
#查看节点的详细信息
[root@hd1 node]# kubectl describe nodes hd3.com
三、Pod节点亲合度
pod自身的亲和性调度有两种表示形式
podaffinity:pod和pod更倾向腻在一起,把相近的pod结合到相近的位置,如同一区域,同一机架,这样的话pod和pod之间更好通信,比方说有两个机房,这两个机房部署的集群有1000台主机,那么我们希望把nginx和tomcat都部署同一个地方的node节点上,可以提高通信效率;
podunaffinity:pod和pod更倾向不腻在一起,如果部署两套程序,那么这两套程序更倾向于反亲和性,这样相互之间不会有影响。
例1:pod节点亲和性
定义两个pod,第一个pod做为基准,第二个pod跟着它走
apiVersion: v1
kind: Pod
metadata:
name: pod-first
labels:
app2: myapp2
tier: frontend