[LINUX] Erstellen einer Kubernetes-Umgebung mit ansible 1

Einführung

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

Ziel

Bauen Sie einen Zustand auf, in dem k8s mit ansible installiert werden können

Umgebung

MBP OS Sierra
MAAS-Server (192.168.100.152)
k8s-master Server (KVM: 192.168.100.191)
Ansible Server (KVM: 192.168.100.192)

ansible Ver.2.5.1
kubernetes Ver.1.10.3

Installieren Sie KVM auf dem MAAS-Server

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 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

$ 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.

Starten Sie KVM im Terminal auf dem Desktop, um das Erstellungsfenster zu starten

$ virt-manager
0001_New-Virtual-Machine.png

Erstellen Sie hier eine neue KVM mit den folgenden Spezifikationen

  Hostname: ansible
 Speicher: 4 GB
CPU:2
 Speicher: 30 GB

 Hostname: k8s-master
 Speicher: 8 GB
CPU:4
 Speicher: 40 GB  



 

Ansible bauen

Installieren Sie ansible tatsächlich auf dem von KVM erstellten ansible-Server

$ 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

$ sudo mkdir ansible

Erstellen Sie ein Playbook, um k8s auf k8s-master 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

$ 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"

~/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

Schlussfolgerung

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.

Ich bin gestolpert

Docker-Version

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.

kube-dns hat nicht funktioniert

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.

Referenzseite

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

Recommended Posts