k8s 节点调度
本文主要描述了k8s 的yaml里面节点调度的规则使用;其次讲述一下通过deployment的方式部署应用服务,如何结合对应svc来实现服务发现
·
本文主要描述了k8s 的yaml里面节点调度的规则使用; 其次讲述一下通过deployment的方式部署应用服务,如何结合对应svc来实现服务发现;
其次讲述一下通过deployment的方式部署应用服务,如何结合对应svc来实现服务发现;)
节点调度选择
方式一:通过nodeselector的方式
如官网中上述方式直接创建一个nginx的pod被调度到具有disktype:ssd标签的节点上。
注意:若含有多个key-value,则需要同时满足,才能被调度到对应节点上。
方式二:通过nodeAffinity的方式
通过这种更具表达性的方式去决定调度的节点(有如下operator操作:In, NotIn, Exists, DoesNotExist, Gt, Lt. 其中,NotIn 和 DoesNotExist用于实现反亲和性)
最后,总结这种方式的调度逻辑为:
matchExpressions下面的条件是与关系,同级matchExpressions是或关系
deployment与对应svc进行绑定;
本文以创建nginx服务为例,通过样例测试deploy与svc之间如何以标签形式绑定关系,并在svc中形成对应EP
deployment的yaml如下:(下列####表示省略了部分配置信息,该文主要描述deployment与对应svc进行绑定)
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
#####################
generation: 3
labels:
app: nginx ##关键
app/name: test.prod-ns1
name: test-nginx-1
namespace: prod-ns1
####
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: nginx ## 关键
project.cpaas.io/name: prod
service.cpaas.io/name: deployment-test-nginx
#####
template:
metadata:
annotations:
cpaas.io/creator: admin
creationTimestamp: null
labels:
app: nginx ## 关键
app.cpaas.io/name: test.prod-ns1
project/name: prod
service/name: deployment-test-nginx
#####
####注意:这里的三处,metadata的labels定义了deploy的标签,spec.selector定义了该匹配什么样标签的pod,template里面则定义了pod的标签类型!!####
SVC的yaml文件如下:
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: prod-ns1
labels:
app: nginx
spec:
selector:
app: nginx
clusterIP: None
###注意这里定义了一个headless类型的SVC,而通过标签选择器则使对应pod有了相应的svc;
ports:
- port: 80
最后:kubectl describe svc -n prod-ns1 nginx
显示出对应EP信息;
更多推荐
已为社区贡献3条内容
所有评论(0)