2016-05-28 12 views
3

Ich habe einen Kubernetes Cluster auf GKE. Ich weiß, dass Kubernetes Hülsen mit den gleichen Etiketten ausbreiten wird, aber das passiert mir nicht. Hier ist meine Knotenbeschreibung. HierKubernetes Pods sind nicht über verschiedene Knoten verteilt

Name:     gke-pubnation-cluster-prod-high-cpu-14a766ad-node-dpob 
Conditions: 
    Type   Status LastHeartbeatTime      LastTransitionTime      Reason       Message 
    ----   ------ -----------------      ------------------      ------       ------- 
    OutOfDisk  False Fri, 27 May 2016 21:11:17 -0400   Thu, 26 May 2016 22:16:27 -0400   KubeletHasSufficientDisk  kubelet has sufficient disk space available 
    Ready   True Fri, 27 May 2016 21:11:17 -0400   Thu, 26 May 2016 22:17:02 -0400   KubeletReady     kubelet is posting ready status. WARNING: CPU hardcapping unsupported 
Capacity: 
cpu:   2 
memory:  1848660Ki 
pods:   110 
System Info: 
Machine ID: 
Kernel Version:    3.16.0-4-amd64 
OS Image:      Debian GNU/Linux 7 (wheezy) 
Container Runtime Version:  docker://1.9.1 
Kubelet Version:    v1.2.4 
Kube-Proxy Version:   v1.2.4 
Non-terminated Pods:   (2 in total) 
    Namespace      Name                     CPU Requests CPU Limits Memory Requests Memory Limits 
    ---------      ----                     ------------ ---------- --------------- ------------- 
    kube-system     fluentd-cloud-logging-gke-pubnation-cluster-prod-high-cpu-14a766ad-node-dpob   80m (4%)  0 (0%)    200Mi (11%)  200Mi (11%) 
    kube-system     kube-proxy-gke-pubnation-cluster-prod-high-cpu-14a766ad-node-dpob      20m (1%)  0 (0%)    0 (0%)   0 (0%) 
Allocated resources: 
    (Total limits may be over 100%, i.e., overcommitted. More info: http://releases.k8s.io/HEAD/docs/user-guide/compute-resources.md) 
    CPU Requests CPU Limits  Memory Requests Memory Limits 
    ------------ ----------  --------------- ------------- 
    100m (5%)  0 (0%)   200Mi (11%)  200Mi (11%) 
No events. 

Name:     gke-pubnation-cluster-prod-high-cpu-14a766ad-node-qhw2 
Conditions: 
    Type   Status LastHeartbeatTime      LastTransitionTime      Reason       Message 
    ----   ------ -----------------      ------------------      ------       ------- 
    OutOfDisk  False Fri, 27 May 2016 21:11:17 -0400   Fri, 27 May 2016 18:16:38 -0400   KubeletHasSufficientDisk  kubelet has sufficient disk space available 
    Ready   True Fri, 27 May 2016 21:11:17 -0400   Fri, 27 May 2016 18:17:12 -0400   KubeletReady     kubelet is posting ready status. WARNING: CPU hardcapping unsupported 
Capacity: 
pods:   110 
cpu:   2 
memory:  1848660Ki 
System Info: 
Machine ID: 
Kernel Version:    3.16.0-4-amd64 
OS Image:      Debian GNU/Linux 7 (wheezy) 
Container Runtime Version:  docker://1.9.1 
Kubelet Version:    v1.2.4 
Kube-Proxy Version:   v1.2.4 
Non-terminated Pods:   (10 in total) 
    Namespace      Name                     CPU Requests CPU Limits Memory Requests Memory Limits 
    ---------      ----                     ------------ ---------- --------------- ------------- 
    default      pn-minions-deployment-prod-3923308490-axucq            100m (5%)  0 (0%)    0 (0%)   0 (0%) 
    default      pn-minions-deployment-prod-3923308490-mvn54            100m (5%)  0 (0%)    0 (0%)   0 (0%) 
    default      pn-minions-deployment-staging-2522417973-8cq5p           100m (5%)  0 (0%)    0 (0%)   0 (0%) 
    default      pn-minions-deployment-staging-2522417973-9yatt           100m (5%)  0 (0%)    0 (0%)   0 (0%) 
    kube-system     fluentd-cloud-logging-gke-pubnation-cluster-prod-high-cpu-14a766ad-node-qhw2   80m (4%)  0 (0%)    200Mi (11%)  200Mi (11%) 
    kube-system     heapster-v1.0.2-1246684275-a8eab              150m (7%)  150m (7%) 308Mi (17%)  308Mi (17%) 
    kube-system     kube-dns-v11-uzl1h                  310m (15%)  310m (15%) 170Mi (9%)  920Mi (50%) 
    kube-system     kube-proxy-gke-pubnation-cluster-prod-high-cpu-14a766ad-node-qhw2      20m (1%)  0 (0%)    0 (0%)   0 (0%) 
    kube-system     kubernetes-dashboard-v1.0.1-3co2b              100m (5%)  100m (5%) 50Mi (2%)  50Mi (2%) 
    kube-system     l7-lb-controller-v0.6.0-o5ojv               110m (5%)  110m (5%) 70Mi (3%)  120Mi (6%) 
Allocated resources: 
    (Total limits may be over 100%, i.e., overcommitted. More info: http://releases.k8s.io/HEAD/docs/user-guide/compute-resources.md) 
    CPU Requests CPU Limits  Memory Requests Memory Limits 
    ------------ ----------  --------------- ------------- 
    1170m (58%) 670m (33%)  798Mi (44%)  1598Mi (88%) 
No events. 

ist die Beschreibung für Einsätze:

Name:     pn-minions-deployment-prod 
Namespace:    default 
Labels:     app=pn-minions,environment=production 
Selector:    app=pn-minions,environment=production 
Replicas:    2 updated | 2 total | 2 available | 0 unavailable 
OldReplicaSets:   <none> 
NewReplicaSet:   pn-minions-deployment-prod-3923308490 (2/2 replicas created) 

Name:     pn-minions-deployment-staging 
Namespace:    default 
Labels:     app=pn-minions,environment=staging 
Selector:    app=pn-minions,environment=staging 
Replicas:    2 updated | 2 total | 2 available | 0 unavailable 
OldReplicaSets:   <none> 
NewReplicaSet:   pn-minions-deployment-staging-2522417973 (2/2 replicas created) 

Wie Sie sehen können, alle vier Hülsen sind auf dem gleichen Knoten. Sollte ich etwas zusätzlich tun, um diese Arbeit zu machen?

Antwort

1

Standardmäßig werden Pods mit unbegrenzten CPU- und Speicherbeschränkungen ausgeführt. Dies bedeutet, dass jeder Pod im System so viel CPU und Speicher auf dem Knoten verbrauchen kann, der den Pod ausführt. http://kubernetes.io/docs/admin/limitrange/

Wenn Sie das CPU-Limit nicht angeben, weiß kubernetes nicht, wie viel CPU-Ressourcen benötigt werden, und versucht, Pods in einem Knoten zu erstellen. Hier

ist ein Beispiel für Deployment

apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: jenkins 
spec: 
    replicas: 4 
    template: 
    metadata: 
     labels: 
     app: jenkins 
    spec: 
     containers: 
     - name: jenkins 
      image: quay.io/naveensrinivasan/jenkins:0.4 
      ports: 
      - containerPort: 8080 
      resources: 
      limits: 
       cpu: "400m" 
#   volumeMounts: 
#   - mountPath: /var/jenkins_home 
#    name: jenkins-volume 
#  volumes: 
#   - name: jenkins-volume 
#   awsElasticBlockStore: 
#   volumeID: vol-29c4b99f 
#   fsType: ext4 
     imagePullSecrets: 
     - name: registrypullsecret 

Hier ist der Ausgang der kubectl describe po | grep Node nach der Bereitstellung zu schaffen.

~ aws_kubernetes [email protected]  ~/revature/devops/jenkins   jenkins ● k describe po | grep Node 
Node:  ip-172-20-0-26.us-west-2.compute.internal/172.20.0.26 
Node:  ip-172-20-0-29.us-west-2.compute.internal/172.20.0.29 
Node:  ip-172-20-0-27.us-west-2.compute.internal/172.20.0.27 
Node:  ip-172-20-0-29.us-west-2.compute.internal/172.20.0.29 

Es ist jetzt in 4 verschiedenen Knoten erstellt. Es basiert auf CPU-Limits in Ihrem Cluster. Sie können replicas erhöhen/verringern, um zu sehen, dass es in verschiedenen Knoten bereitgestellt wird.

Dies ist nicht GKE oder AWS-spezifisch.

+0

"wird nicht wissen, wie viel CPU-Ressourcen benötigt werden" -> sollte dies die Aufgabe der Ressourcenanforderung sein? http://kubernetes.io/docs/user-guide/compute-resources/ – Daiwei

+1

Ja, das ist die Aufgabe der Ressourcenanforderung – Naveen

+0

Ich habe einen Standardgrenzbereich im Cluster. Sie können in meiner Frage sehen, dass die Pods von der Standard-CPU-Anfrage geerbt wurden. Bedeutet das, dass das nicht genug ist? – Daiwei