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
Émettez un jeton pour vous connecter p>
$ kubectl -n kube-system get secret
Entrez en utilisant le jeton émis p>
Les paramètres suivants sont destinés aux personnes qui ont du mal à émettre des jetons à chaque fois.
Après cela, vous pourrez entrer avec SKIP sur l'écran de connexion
Cependant, comme il est lâche en termes de sécurité, il est recommandé de l'utiliser dans des conditions où il n'y a pas d'étrangers tels que l'environnement interne uniquement. 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
Ceci termine la construction de l'environnement de kubernetes p>
Une fois que vous avez créé cet environnement, vous pouvez le distribuer automatiquement au nœud en démarrant l'image docker à partir de k8s-master.
C'est très pratique car vous pouvez ajouter un nouveau nœud dès que vous avez une commande pour l'ajouter au réseau flanelle. P>
Les paramètres réseau sont répertoriés au début de cet article, mais tant que cela n'a pas été décidé, la communication n'a pas abouti et les erreurs se sont poursuivies.
Impression que j'ai été influencé par le changement de méthode de réglage en raison du changement de version d'ubuntu18 p>
La cause est que j'ai juste oublié de supprimer le swap, mais j'ai tendance à oublier son existence p>
Un nœud a été ajouté au maître, et juste en installant le tableau de bord → proxy de démarrage, le tableau de bord n'a pas été affiché dans le navigateur, et seule l'arborescence des répertoires du fichier est apparue sur la page du navigateur.
J'ai essayé de démarrer le proxy-pod comme indiqué au milieu de la page, et après cela, si je procédais selon la procédure, le tableau de bord s'affichait
Il semble qu'il n'y ait pas eu de symptôme similaire sur d'autres pages référencées, et on ne sait pas s'il s'agit de la spécification de la version du tableau de bord ou s'il existe un paramètre que je n'ai pas fait seul. P>
J'ai essayé de créer un environnement NAT avec iptables
page officielle de kubernetes
access control
Ajout de Kubernetes / Web UI (tableau de bord)
Installez Dashboard sur Kubernetes et accédez sans authentification p>
Recommended Posts