2017-06-23 4 views
1

Also, ich schreibe einen benutzerdefinierten Auto-Rescheduler für meine Cluster und ich benutze Python-Client-Bibliothek, um dies zu tun. Da sich der Reschedler noch im Vorschlag befindet und nichts dafür getan wurde, ist die einzige bekannte Methode, den Pod aus dem überlasteten Knoten zu löschen und den Replikationscontroller und den Scheduler für den Rest zuständig zu machen (einen neuen Pod erstellen und einem geeigneten zuweisen) Knoten). Was ich wissen möchte ist, kann ich die Client-Bibliothek verwenden, um die Pods von einem Knoten zum anderen zu verschieben, ohne den Pod zu löschen. Grundsätzlich möchte ich zuerst einen Pod in einem geeigneten Knoten erstellen und dann den Pod im überlasteten Knoten löschen. Ist das möglich?Re Scheduling Pods von einem Knoten zum anderen

Antwort

0

Mithilfe der Knotenbeschriftung können Sie den Container in übereinstimmenden Knoten starten. Dazu müssen Sie zuerst die Knotenbezeichnung festlegen und die Implementierungsdatei aktualisieren und anwenden.

Hier ist die Beispiel-XML-Datei, die ich für die Bereitstellung von Blaugrün verwendet habe, siehe diese Hilfe.

  1. Web-Server auf Knoten ausgeführt markierten Web
apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: webserver-blue 
spec: 
    replicas: 2 
    template: 
    metadata: 
     labels: 
     type: webserver 
     color: blue 
    spec: 
     containers: 
     - image: nginx:1.12.0 
     name: webserver-container 
     ports: 
     - containerPort: 80 
      name: http-server 
     nodeSelector:   
     svrtype: web 
  1. ein anderer Knoten Label als newweb und Aktualisierung und Bereitstellung mit anderen Namen und Knoten gesetzt Beschriften Sie die Konfiguration.
apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: webserver-green 
spec: 
    replicas: 2 
    template: 
    metadata: 
     labels: 
     type: webserver 
     color: green 
    spec: 
     containers: 
     - image: nginx:1.13.0 
     name: webserver-container 
     ports: 
     - containerPort: 80 
      name: http-server 
     nodeSelector:   
     svrtype: newweb 

Nach dem Testen Sie die alte entfernen. Das Problem hierbei ist, dass Sie den Datenverkehr jeweils nur einer Bereitstellung zuweisen können.

+0

Aber Pods sind mit einer Bereitstellung verknüpft. Wenn Sie mehrere Pods verwenden und nur einem Knoten einen Pod zuweisen möchten, wie tun Sie das? –

+0

Ich schlug vor, wie Blau-Grün-Bereitstellung. Aber denke nur, dass du den Namen des Pods ändern musst. z.B. https://github.com/thesandlord/container-orchestration-comparisons/tree/master/blue-green-deployment/kubernetes – sfgroups

Verwandte Themen