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