在部署EFK过程中发现其中worker01节点上的日志可以收集,而worker02节点上的日志无法收集,这个时候就可以将worker02的节点上的服务调度到worker01上,从而帮助我们排错。
先决条件
已经建立好一个kubernetes集群
步骤一:添加标签到节点
这里不做过多讲解,详情可以参考本文
步骤二:添加 nodeSelector 字段到 Pod 配置中
增加deployment的yaml,位于spec的子节点,和containers同级,这里我们根据hostname进行匹配。
apiVersion: apps/v1
kind: Deployment
metadata:
name: roxe-send
labels:
app: roxe-send
logging: "true"
spec:
replicas: 1
selector:
matchLabels:
app: roxe-send
template:
metadata:
labels:
app: roxe-send
spec:
containers:
- name: roxe-send
image: harbor.roxepro.top/dev-images/roxe-send:202107-6688f455
ports:
- containerPort: 10086
nodeSelector:
kubernetes.io/hostname: k8s-worker-node1
应用配置文件,通过kubectl get pods -o wide 即可查看pod服务是否调度到指定的node节点上。
常见的标签、注解和污点
kubernetes.io/hostname
failure-domain.beta.kubernetes.io/zone
failure-domain.beta.kubernetes.io/region
topology.kubernetes.io/zone
topology.kubernetes.io/region
beta.kubernetes.io/instance-type
node.kubernetes.io/instance-type
kubernetes.io/os
kubernetes.io/arch
ref: https://kubernetes.io/zh/docs/reference/labels-annotations-taints/