Ich schreibe ein Ansible-Playbook, das die Kubernetes-Version auf den Minions aktualisiert.Ansible-Playbook für zwei Gruppen
- name: Configure and start the Kubernetes Nodes
hosts: kubernetes-minions
serial: 1
tasks:
- name: backup K8S master files.
shell: "{{item}}"
with_items:
- cp /etc/kubernetes/config /var/tmp/k8s-backup/
- cp /etc/kubernetes/kubelet /var/tmp/k8s-backup/
- name: cordon the minion.
command: kubectl cordon {{ ansible_default_ipv4.interface }}
delegate_to: kubernetes-master
- name: Install latest version of Docker on Minion.
yum: name=kubernetes-1.3.0-0.3.git86dc49a.el7 state=present
- name: start the kubernetes kubelet
service: name=kubelet state=restarted enabled=yes
- name: start the kubernetes kube-proxy
service: name=kube-proxy state=restarted enabled=yes
- name: uncordon the minion.
command: kubectl uncordon {{ ansible_default_ipv4.interface }}
delegate_to: kubernetes-master
Meine Inventardatei sieht aus wie ::
[kubernetes-masters]
172.29.219.102
[kubernetes-minions]
172.29.219.105
172.29.219.106
172.29.219.107
Jetzt habe ich die Zielgruppe tp sein hosts: kubernetes-minions
definiert, wo die eigentliche yum update
geschehen soll, aber bevor dieser Schritt auf jedem Untergebener laufen, ich Ich muss diese Knoten auf der kubernetes-master
cordon Jetzt ist das Problem, wie anselsible, dass für den Schritt der cordon/uncordon, tun Sie es auf der Kubernetes-Master-Knoten und nicht die Günstling. Ich habe versucht, delegate_to: kubernetes-master
zu verwenden, aber es scheint, als ob es den Schritt auf dem Diener selbst ausgeführt hat.
EDITIEREN :: Das Upgrade auf die Minions wird sequentiell und nicht parallel durchgeführt, um Ausfallzeiten zu minimieren.
@techraf Für die Im Interesse der Automatisierung möchte ich die Dinge so einfach wie möglich halten. Wenn du zwei Spiele erwähnst, meinst du ein Spiel zum Kordon/Uncordon auf dem Meister und das andere Spiel, um das Paket zu aktualisieren? –