k8s创建多个副本默认先用第一台服务器,当第一台服务器资源满了才会去第二台服务器创建副本
解决方案:1. 给相应的节点打上标签,并添加亲和性。
2.使用DaemonSet 参考文档https://blog.csdn.net/yanggd1987/article/details/107507216
1.给相应节点打上标签
#查看节点全部标签
kubectl get node --show-labels
执行如下命令标注 node-75是配置 标签serviceType值为query-service
kubectl label node node-75 serviceType=query-service
然后通过 kubectl get node --show-labels 查看全部节点的 label。
如果要删除 label disktype,就执行如下命令删除即可:
kubectl label node k8s-node1 disktype-
2.给部署yaml加上亲和性
spec:
replicas: 4
selector:
matchLabels:
app: http-socsp-query
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: http-socsp-query
spec:
#亲和性添加 有nodeAffinity根据node选择 Podaffinity 根据pod等
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: serviceType
operator: In
values:
- query-service
containers:
- image: 192.168.0.74:5000/http-socsp-query:latest
imagePullPolicy: Always
ports:
- containerPort: 19237
name: http-socsp-query
resources: {}
volumeMounts:
3.运行yaml文件
kubectl apply -f http-socsp-query.yaml
4.查看pod运行情况
kubectl get pod -o wide
5.副本数根据节点完成了均匀分配
评论区