在部署EFK过程中发现其中worker01节点上的日志可以收集,而worker02节点上的日志无法收集,这个时候就可以将worker02的节点上的服务调度到worker01上,从而帮助我们排错。

    先决条件
    已经建立好一个kubernetes集群

    步骤一:添加标签到节点
    这里不做过多讲解,详情可以参考本文

    步骤二:添加 nodeSelector 字段到 Pod 配置中

    增加deployment的yaml,位于spec的子节点,和containers同级,这里我们根据hostname进行匹配。

    1. apiVersion: apps/v1
    2. kind: Deployment
    3. metadata:
    4. name: roxe-send
    5. labels:
    6. app: roxe-send
    7. logging: "true"
    8. spec:
    9. replicas: 1
    10. selector:
    11. matchLabels:
    12. app: roxe-send
    13. template:
    14. metadata:
    15. labels:
    16. app: roxe-send
    17. spec:
    18. containers:
    19. - name: roxe-send
    20. image: harbor.roxepro.top/dev-images/roxe-send:202107-6688f455
    21. ports:
    22. - containerPort: 10086
    23. nodeSelector:
    24. 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/