Die Installation von K8s auf dem Knoten wird so weit wie möglich mit Ansible automatisiert.
Ansible Executor und K8s Master verwenden KVM des MAAS-Servers p>
Bauen Sie einen Zustand auf, in dem k8s mit ansible p> installiert werden können
MBP OS Sierra
MAAS-Server (192.168.100.152)
k8s-master Server (KVM: 192.168.100.191)
Ansible Server (KVM: 192.168.100.192) p>
ansible Ver.2.5.1
kubernetes Ver.1.10.3
Installieren Sie KVM, um einen Ansible-Server und einen K8s-Server auf dem Basis-MAAS-Server zu erstellen.
Schließen Sie sich nach der Installation der libvirt-Gruppe an, damit sie ohne sudo p> ausgeführt werden kann
$ sudo apt install -y qemu-kvm libvirt0 libvirt-bin virt-manager bridge-utils
$ sudo systemctl enable libvirt-bin
$ sudo gpasswd libvirtd -a <username>
Installieren Sie den Desktop auf dem MAAS-Server, da es bequemer ist, die Desktop-Umgebung zum Erstellen von KVM zu verwenden p>
$ sudo apt -y install ubuntu-desktop
Die Desktop-Installation braucht Zeit, warten Sie also eine Weile
Der Desktop wird automatisch angezeigt, wenn die Installation abgeschlossen und neu gestartet wurde. P>
Starten Sie KVM im Terminal auf dem Desktop, um das Erstellungsfenster p> zu starten
$ virt-manager
Erstellen Sie hier eine neue KVM mit den folgenden Spezifikationen p>
Hostname: ansible
Speicher: 4 GB
CPU:2
Speicher: 30 GB
Hostname: k8s-master
Speicher: 8 GB
CPU:4
Speicher: 40 GB code> pre>
Ansible bauen h1>
Installieren Sie ansible tatsächlich auf dem von KVM erstellten ansible-Server p>
$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo apt-add-repository ppa:ansible/ansible
$ sudo apt-get update
$ sudo apt-get install ansible
Erstellen Sie dieses Mal einen ansiblen Ordner direkt unter der Startseite und verwalten Sie verschiedene Dateien p>
$ sudo mkdir ansible
Erstellen Sie ein Playbook, um k8s auf k8s-master p> zu installieren
$ sudo vi k8s-master.yaml
---
- hosts: k8s-master
remote_user: $ Benutzername
become: yes
tasks:
--name: Installationsvoraussetzungen und Docker.io #docker Install
become: yes
apt: name={{item}} update_cache=yes
with_items:
- apt-transport-https
- ca-certificates
- curl
- software-properties-common
- docker.io
- name: user add to docker group
user: name=gauss group=docker append=yes
--name: K8S GPG-Schlüssel hinzufügen # k8s Vorbereitung für die Installation
apt_key:
url: https://packages.cloud.google.com/apt/doc/apt-key.gpg
- name: Add K8S APT repository
apt_repository:
repo: deb http://apt.kubernetes.io/ kubernetes-xenial main
- name: Install K8S
apt: name={{item}} update_cache=yes
with_items:
- kubelet
- kubeadm
- kubectl
--name: Swap-Datei aus / etc / fstab entfernen #swap muss gelöscht werden, sonst schlägt es fehl
mount:
name: swap
fstype: swap
state: absent
- name: Disable swap
command: swapoff -a
when: ansible_swaptotal_mb > 0
--name: Stellen Sie den Docker-Dienst so ein, dass er beim Booten gestartet wird. # Starten Sie den Docker auch nach dem Neustart automatisch
service: name=docker enabled=yes
--name: Setzt den Kubelet-Dienst so, dass er beim Booten startet. # Startet k8s automatisch, auch nach dem Neustart
service: name=kubelet enabled=yes
--name: Initialisierung von k8s-master # k8sm
become: yes
shell: kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.100.191
- name: Make Directory .kube
file:
path: /.kube
state: directory
Besitzer: $ Besitzer
group: docker
mode: 0755
- name: Copy the .kube config
become: yes
file:
src: /home/$username/ansible/admin.conf
dest: ~/.kube/config
Besitzer: $ Besitzer
group: docker
mode: 0600
- name: Export Kubernetes
lineinfile:
Pfad: /home/$username/.kube/config
state: absent
regexp: '^%KUBECONFIG'
--name: Flanell anwenden $ Erstellt ein Flanell-Netzwerk
sudo: yes
shell: kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml
Fügen Sie als Nächstes ansible Hosts hinzu p>
$ sudo vi /etc/ansible/hosts
[master]
k8s-master
$ sudo vi /etc/hosts
192.168.100.191 k8s-master
Führen Sie ein ansible Playbook aus, wenn Sie bereit sind
Wenn Sie python3 verwenden möchten, benötigen Sie die Option nach "-e" p>
~/ansible$ sudo ansible-playbook --private-key=id_rsa_common k8s-master.yml -e 'ansible_python_interpreter=/usr/bin/python3'
Vollständig, wenn kein Fehler vorliegt p>
Schlussfolgerung h1>
Die Version von k8s ändert sich schnell und Ubuntu ist 18.04. Ich habe mich gefragt, was mit der neuen Version passieren würde, aber ich war erleichtert über den Erfolg der Initialisierung. P>
Ich bin gestolpert h1>
Docker-Version h3>
Wenn beim Initialisieren von k8s das neueste Docker (18.03) installiert ist, ist die unterstützte Version bis zum 17.03. Daher wurde eine Meldung angezeigt, in der ich zum Downgrade aufgefordert wurde, sodass ich 17.03
neu installiert habe
Es ist jedoch immer noch fehlgeschlagen, daher habe ich docker.io hinzugefügt und es war erfolgreich. P>
kube-dns hat nicht funktioniert h3>
In dem in der ansible-Datei ausgeführten Befehl kubeadm init wurde die Netzwerknotation von --pod-network-cidr ursprünglich auf "10.0.0.0" gesetzt, mit dieser Einstellung jedoch kube- im Paket DNS hat nicht funktioniert
Als ich jede Seite überprüfte, stellte ich fest, dass "10.244.0.0" für dieses Netzwerk korrekt zu sein scheint, und als ich den Befehl mit dieser Einstellung ausführte, funktionierte kube-dns normal. P>
Referenzseite h2>
Ubuntu 16.04 : Installieren Sie KVM und starten Sie die virtuelle Maschine
Einführung in Ansible. [Einführung]
offizielle Seite von kubernetes
Einführung in die Docker-Containerverwaltung mit Kubernetes
Installieren Sie kubernetes v1.8 + Flannel mit kubeadm p>