Ich konnte Kubernetes mit ansible initialisieren.
Schließlich werde ich einen k8s-Worker hinzufügen, um eine endgültige k8s-Umgebung zu erstellen </ p>
MBP OS Sierra
MAAS-Server (192.168.100.152 Netzwerk für MAAS: 192.168.200.1)
k8s-master Server (KVM: 192.168.100.191)
Ansible Server (KVM: 192.168.100.192)
k8s worker(192.168.200.151)
k8s worker(192.168.200.153)
dash-board Ver.1.8
Fügen Sie einen Computer mit einem von MAAS als k8s-Worker bereitgestellten Betriebssystem in das von k8s
erstellte Flanell-Netzwerk ein
Außerdem können Sie den Nutzungsstatus von k8s im Dashboard anzeigen. P>
Dieses Mal befinden sich k8s-master und Worker aufgrund des DHCP-Problems von MAAS in unterschiedlichen Netzwerken. Daher muss die Bridge auf dem MAAS-Server p> eingerichtet werden
ubuntu18 hat die Art der Netzwerkeinstellungen von bis zu 16
geändert
Ich hätte einfach /etc/netplan/50-cloud-init.yaml_bk schreiben können, aber diesmal habe ich es in zwei Dateitypen geschrieben, weil die Bridge-Einstellung nicht gut lief. P>
$ sudo vi /etc/netplan/50-cloud-init.yaml_bk
network:
ethernets:
enp0s31f6:
addresses:
- 192.168.100.152/24
gateway4: 192.168.100.1
nameservers:
addresses:
- 8.8.8.8
search:
- 8.8.4.4
enp2s0:
addresses:
- 192.168.200.1/24
gateway4: 192.168.100.1
nameservers:
addresses:
- 8.8.8.8
search:
- 8.8.4.4
version: 2
$ sudo vi /etc/network/interfaces
auto lo
iface lo inet loopback
auto enp0s31f6
iface enp0s31f6 inet manual
auto br0
iface br0 inet static
address 192.168.100.152
netmask 255.255.255.0
gateway 192.168.100.1
dns-nameservers 8.8.8.8
bridge_ports enp0s31f6
bridge_maxwait 0
bridge_df 0
bridge_stp off
auto enp2s0
iface enp2s0 inet static
address 192.168.200.1
netmask 255.255.255.0
gateway 192.168.100.1
dns-nameservers 8.8.8.8
$ ifconfig
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.100.152 netmask 255.255.255.0 broadcast 192.168.100.255
inet6 fe80::329c:23ff:feac:5570 prefixlen 64 scopeid 0x20<link>
ether 30:9c:23:ac:55:70 txqueuelen 1000 (Ethernet)
RX packets 9579059 bytes 16579553543 (16.5 GB)
RX errors 0 dropped 657286 overruns 0 frame 0
TX packets 6047022 bytes 936298283 (936.2 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp0s31f6: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::329c:23ff:feac:5570 prefixlen 64 scopeid 0x20<link>
ether 30:9c:23:ac:55:70 txqueuelen 1000 (Ethernet)
RX packets 21689196 bytes 26237413396 (26.2 GB)
RX errors 0 dropped 475 overruns 0 frame 0
TX packets 6555651 bytes 4057603928 (4.0 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 16 memory 0xdf100000-df120000
enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.200.1 netmask 255.255.255.0 broadcast 192.168.200.255
inet6 fe80::6a05:caff:fe66:a834 prefixlen 64 scopeid 0x20<link>
ether 68:05:ca:66:a8:34 txqueuelen 1000 (Ethernet)
RX packets 6867754 bytes 970026556 (970.0 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 13304857 bytes 15246678579 (15.2 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 17 memory 0xdf0c0000-df0e0000
Stellen Sie außerdem NAT so ein, dass Sie mit zwei Netzwerken p> kommunizieren können
sudo iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -j SNAT --to 192.168.100.152
Das Hinzufügen eines k8s-Workers entspricht fast dem des Masters, Sie benötigen jedoch einen Befehl, um ihn am Ende zu starten und dem Flanell-Netzwerk beizutreten p>
Der Befehl wird im Ausgabeinhalt angezeigt, wenn kubeadm init ausgeführt wird. Sie können ihn jedoch auch mit dem folgenden Befehl p> überprüfen
(k8s-master)$ kubeadm token create --print-join-command
Erstellen Sie mit den angezeigten Befehlen p> ein Playbook für die Teilnahme der Mitarbeiter
(ansible)$ sudo vi mlp.yml
Bearbeiten Sie Hosts wie beim Mastering p>
$ sudo vi /etc/ansible/hosts
[master]
k8s-master
[mlp]
mlp01
$ sudo vi /etc/hosts
192.168.100.191 k8s-master 192.168.200.151 mlp01
Ansible Playbook-Ausführung
Wenn Sie python3 verwenden möchten, benötigen Sie die Option nach "-e" p>
~/ansible$ sudo ansible-playbook --private-key=id_rsa_common mlp.yml -e 'ansible_python_interpreter=/usr/bin/python3'
Wenn das Playbook erfolgreich ist, befindet es sich im folgenden Status p>
(k8s-master)$ kubectl get node
NAME STATUS ROLES AGE VERSION
k8s-master Ready master 3d v1.10.3
mlp01 Ready <none> 3d v1.10.2
Führen Sie nach dem Hinzufügen des Knotens vorerst das Nginx-Docker-Image aus.
Der Grund wird später p> beschrieben
$ sudo vi nginx-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx-container
image: nginx
ports:
- containerPort: 80
$ kubectl apply -f nginx-pod.yaml
create
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-pod 1/1 Running 0 3d
Kein Problem, wenn nginx ausgeführt wird p>
Auch wenn Sie kein Dashboard haben, können Sie Kubernetes verwenden, aber ich möchte es verwenden.
Deshalb werde ich es p> installieren
$ kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
Wenn kein Fehler vorliegt und "erstellt" angezeigt wird, ist dies in Ordnung.
Überprüfen Sie, ob es funktioniert p>
kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
default nginx-pod 1/1 Running 0 3d
kube-system kubernetes-dashboard-7d5dcdb6d9-7hptz 1/1 Running 0 3d
Starten Sie den Kube-Proxy p>
$ kubectl proxy --address 0.0.0.0 --accept-hosts '.*'
Starting to serve on [::]:8001
In diesem Fall greifen Sie mit einem Browser darauf zu, um es anzuzeigen.
Der Anmeldebildschirm wird p> angezeigt
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login
Stellen Sie ein Token aus, um sich anzumelden p>
$ kubectl -n kube-system get secret
Geben Sie mit dem ausgegebenen Token p> ein
Die folgenden Einstellungen gelten für Personen, bei denen es schwierig ist, jedes Mal Token auszugeben.
Danach können Sie mit SKIP auf dem Anmeldebildschirm
eingeben
Da es jedoch in Bezug auf die Sicherheit locker ist, wird empfohlen, es unter Bedingungen zu verwenden, unter denen keine Außenstehenden vorhanden sind, z. B. in einer internen Umgebung. P>
$ cat <<EOF | kubectl create -f -
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: kubernetes-dashboard
labels:
k8s-app: kubernetes-dashboard
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: kubernetes-dashboard
namespace: kube-system
EOF
Damit ist die Umgebungskonstruktion von Kubernetes p> abgeschlossen
Nachdem Sie diese Umgebung erstellt haben, können Sie sie automatisch auf den Knoten verteilen, indem Sie das Docker-Image von k8s-master aus starten.
Dies ist sehr praktisch, da Sie einen neuen Knoten hinzufügen können, sobald Sie einen Befehl zum Hinzufügen zum Flanell-Netzwerk haben. P>
Ich habe die Netzwerkeinstellungen am Anfang dieses Artikels erwähnt, aber bis dies entschieden wurde, wurde weiterhin ein Fehler angezeigt, dass die Kommunikation nicht erfolgreich war.
Eindruck, dass ich durch die Änderung der Einstellungsmethode aufgrund der Versionsänderung von ubuntu18 p> beeinflusst wurde
Die Ursache ist, dass ich gerade vergessen habe, Swap zu löschen, aber ich neige dazu, seine Existenz zu vergessen p>
Dem Master wurde ein Knoten hinzugefügt. Durch einfaches Installieren des Dashboards → Starten des Proxys wurde das Dashboard nicht im Browser angezeigt, und nur der Verzeichnisbaum der Datei wurde auf der Browserseite angezeigt.
Ich habe versucht, den Proxy-Pod wie in der Mitte der Seite gezeigt zu starten, und danach wurde das Dashboard angezeigt, wenn ich gemäß dem Verfahren vorging
Es scheint, dass es auf anderen Seiten, auf die verwiesen wird, kein ähnliches Symptom gab, und es ist nicht bekannt, ob es sich um die Spezifikation der Dashboard-Version handelt oder ob es eine Einstellung gibt, die ich nicht alleine vorgenommen habe. P>
Ich habe versucht, eine NAT-Umgebung mit iptables zu erstellen
offizielle Seite von kubernetes
access control
Hinzufügen von Kubernetes / Web UI (Dashboard)
Dashboard auf Kubernetes installieren und ohne Authentifizierung zugreifen p>
Recommended Posts