未将Pod调度到具有匹配标签的节点

时间:2020-08-06 14:00:06

标签: kubernetes amazon-eks

当我执行我的Pod时出现此错误。 Error from server (BadRequest): pod es-master-5cb49c68cc-w6dxv does not have a host assigned

它似乎与我的nodeAffinity有关,但是我没有立即发现任何错误。我似乎无法将其pod附加到我的任何节点上。我在节点或吊舱上没有任何污点或公差设置。我尝试过切换到每个节点上自动生成的标签,但是似乎没有任何效果。我什至尝试完全删除我的相似性部分,还尝试将nodeSelector本身添加到规范中。

这是我的部署配置和来自kubectl describe pod -n elasticsearch的输出

---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    component: elasticsearch
    role: master
  name: es-master
  namespace: elasticsearch
spec:
  replicas: 3
  selector:
    matchLabels:
      component: elasticsearch
      role: master
  template:
    metadata:
      labels:
        component: elasticsearch
        role: master
      annotations:
        iam.amazonaws.com/role: {REDACTED}
    spec:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - topologyKey: "kubernetes.io/hostname"
            labelSelector:
              matchLabels:
                component: elasticsearch
                role: master
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: topology.kubernetes.io/region
                operator: In
                values:
                - us-east-2

Name:           es-master-866f7fb558-298ht
Namespace:      elasticsearch
Priority:       0
Node:           <none>
Labels:         component=elasticsearch
                pod-template-hash=866f7fb558
                role=master
Annotations:    iam.amazonaws.com/role: {REDACTED}
                kubernetes.io/psp: eks.privileged
Status:         Pending
IP:             
Controlled By:  ReplicaSet/es-master-866f7fb558
Init Containers:
  init-sysctl:
    Image:      busybox:1.27.2
    Port:       <none>
    Host Port:  <none>
    Command:
      sysctl
      -w
      vm.max_map_count=262144
    Environment:  <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-xflv6 (ro)
Containers:
  elasticsearch:
    Image:       amazon/opendistro-for-elasticsearch:0.9.0
    Ports:       9300/TCP, 9200/TCP, 9600/TCP
    Host Ports:  0/TCP, 0/TCP, 0/TCP
    Limits:
      cpu:     2
      memory:  12Gi
    Requests:
      cpu:     2
      memory:  12Gi
    Liveness:  tcp-socket :transport delay=60s timeout=1s period=10s #success=1 #failure=3
    Environment:
      CLUSTER_NAME:            logs
      NUMBER_OF_MASTERS:       3
      NODE_MASTER:             true
      NODE_INGEST:             false
      NODE_DATA:               false
      NETWORK_HOST:            0.0.0.0
      TRANSPORT_TLS_PEM_PASS:  
      HTTP_TLS_PEM_PASS:       
      NODE_NAME:               es-master-866f7fb558-298ht (v1:metadata.name)
      DISCOVERY_SERVICE:       elasticsearch-discovery
      KUBERNETES_NAMESPACE:    elasticsearch (v1:metadata.namespace)
      PROCESSORS:              2 (limits.cpu)
      ES_JAVA_OPTS:            -Xms6g -Xmx6g
    Mounts:
      /usr/share/elasticsearch/config/admin-crt.pem from certs (ro,path="admin-crt.pem")
      /usr/share/elasticsearch/config/admin-key.pem from certs (ro,path="admin-key.pem")
      /usr/share/elasticsearch/config/admin-root-ca.pem from certs (ro,path="admin-root-ca.pem")
      /usr/share/elasticsearch/config/elasticsearch.yml from config (rw,path="elasticsearch.yml")
      /usr/share/elasticsearch/config/elk-crt.pem from certs (ro,path="elk-crt.pem")
      /usr/share/elasticsearch/config/elk-key.pem from certs (ro,path="elk-key.pem")
      /usr/share/elasticsearch/config/elk-root-ca.pem from certs (ro,path="elk-root-ca.pem")
      /usr/share/elasticsearch/config/logging.yml from config (rw,path="logging.yml")
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-xflv6 (ro)
Conditions:
  Type           Status
  PodScheduled   False 
Volumes:
  config:
    Type:      ConfigMap (a volume populated by a ConfigMap)
    Name:      elasticsearch
    Optional:  false
  certs:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  elasticsearch-tls-data
    Optional:    false
  default-token-xflv6:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-xflv6
    Optional:    false
QoS Class:       Burstable
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type     Reason            Age                  From               Message
  ----     ------            ----                 ----               -------
  Warning  FailedScheduling  59s (x3 over 3m44s)  default-scheduler  0/8 nodes are available: 8 Insufficient cpu.

所有节点均为m5a.large ec2实例。

1 个答案:

答案 0 :(得分:4)

错误非常清楚0/8 nodes are available: 8 Insufficient cpu,这意味着节点没有requests中指定的2个可用的CPU内核。解决方案是为节点提供更多的cpu或减少pod规范中的cpu requests