J'ai pu initialiser kubernetes en utilisant ansible
Enfin, je vais ajouter un worker k8s pour créer un environnement k8s final </ p>
MBP OS Sierra
Serveur MAAS (réseau 192.168.100.152 pour MAAS: 192.168.200.1)
serveur maître k8s (KVM: 192.168.100.191)
serveur ansible (KVM: 192.168.100.192)
k8s worker(192.168.200.151)
k8s worker(192.168.200.153)
dash-board Ver.1.8
Ajouter une machine avec un OS déployé avec MAAS en tant que travailleur k8s dans le réseau flanelle créé avec k8s
En outre, vous pouvez voir l'état d'utilisation des k8 sur le tableau de bord. P>
Cette fois, en raison du problème DHCP de MAAS, k8s-master et worker sont sur des réseaux différents, il est donc nécessaire de définir le pont sur le serveur MAAS p>
ubuntu18 a modifié le mode de configuration du réseau de 16 au maximum
J'aurais dû être capable d'écrire simplement /etc/netplan/50-cloud-init.yaml_bk, mais cette fois je l'ai écrit dans deux types de fichiers car le réglage du pont ne s'est pas bien passé. 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
De plus, définissez NAT pour pouvoir communiquer avec deux réseaux p>
sudo iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -j SNAT --to 192.168.100.152
Ajouter un worker k8s est presque le même que le master, mais vous avez besoin d'une commande pour le démarrer à la fin pour rejoindre le réseau flannel p>
La commande est affichée dans le contenu de sortie lorsque kubeadm init est exécuté, mais vous pouvez également la vérifier avec la commande suivante p>
(k8s-master)$ kubeadm token create --print-join-command
Créez un playbook pour la participation des collaborateurs à l'aide des commandes qui s'affichent p>
(ansible)$ sudo vi mlp.yml
Modifiez les hôtes comme vous l'avez fait lors du 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
Exécution du playbook Ansible
Si vous souhaitez utiliser python3, vous avez besoin de l'option après "-e" p>
~/ansible$ sudo ansible-playbook --private-key=id_rsa_common mlp.yml -e 'ansible_python_interpreter=/usr/bin/python3'
Si le playbook réussit, il sera dans l'état suivant 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
Une fois le nœud ajouté, exécutez l'image docker nginx pour le moment
La raison sera décrite plus tard p>
$ 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
Aucun problème si nginx devient Running p>
Même si vous n'avez pas de tableau de bord, vous pouvez utiliser Kubernetes, mais je veux l'utiliser
C'est pourquoi je vais l'installer p>
$ kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
Si aucune erreur n'apparaît et que "created" est affiché, c'est OK
Vérifiez si cela fonctionne 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
Démarrer le proxy kube p>
$ kubectl proxy --address 0.0.0.0 --accept-hosts '.*'
Starting to serve on [::]:8001
Si cela se produit, accédez-y avec un navigateur pour le voir.
L'écran de connexion apparaîtra p>
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login