garutilorenzo.ansible-role-linux-kubernetes

Instalacja i konfiguracja klastra Kubernetes z wysoką dostępną

Ta rola Ansible zainstaluje i skonfiguruje klaster Kubernetes z wysoką dostępnością. Repozytorium automatyzuje proces instalacji Kubernetes przy użyciu kubeadm.

To repozytorium stanowi tylko przykład, jak używać automatyzacji Ansible do instalacji i konfiguracji klastra Kubernetes. Do środowiska produkcyjnego należy używać Kubespray.

Wymagania

Zainstaluj Ansible, ipaddr i netaddr:

pip install -r requirements.txt

Pobierz rolę z GitHub:

ansible-galaxy install git+https://github.com/garutilorenzo/ansible-role-linux-kubernetes.git

Zmienne roli

Ta rola akceptuje następujące zmienne:

Var Wymagane Domyślne Opis
kubernetes_subnet tak 192.168.25.0/24 Podsieć, w której będzie wdrażany Kubernetes. Jeśli VM lub serwer fizyczny ma więcej niż jeden interfejs, Ansible wybierze interfejs używany przez Kubernetes w zależności od podsieci interfejsu.
disable_firewall nie nie Jeśli ustawione na tak, Ansible wyłączy zaporę.
kubernetes_version nie 1.25.0 Wersja Kubernetes do zainstalowania.
kubernetes_cri nie containerd CRI Kubernetes do zainstalowania.
kubernetes_cni nie flannel CNI Kubernetes do zainstalowania.
kubernetes_dns_domain nie cluster.local Domyślna strefa DNS Kubernetes.
kubernetes_pod_subnet nie 10.244.0.0/16 Podsieć podów Kubernetes.
kubernetes_service_subnet nie 10.96.0.0/12 Podsieć usług Kubernetes.
kubernetes_api_port nie 6443 Port nasłuchujący kubeapi.
setup_vip nie nie Skonfiguruj adres VIP Kubernetes za pomocą kube-vip.
kubernetes_vip_ip nie 192.168.25.225 Wymagany, jeśli setup_vip jest ustawione na tak. Adres IP VIP dla planu kontrolnego.
kubevip_version nie v0.4.3 Wersja kontenera kube-vip.
install_longhorn nie nie Zainstaluj Longhorn, chmurową natywną rozproszoną pamięć blokową dla Kubernetes.
longhorn_version nie v1.3.1 Wydanie Longhorn.
install_nginx_ingress nie nie Zainstaluj kontroler nginx ingress.
nginx_ingress_controller_version nie controller-v1.3.0 Wersja kontrolera nginx ingress.
nginx_ingress_controller_http_nodeport nie 30080 NodePort używany przez kontroler nginx ingress dla przychodzącego ruchu http.
nginx_ingress_controller_https_nodeport nie 30443 NodePort używany przez kontroler nginx ingress dla przychodzącego ruchu https.
enable_nginx_ingress_proxy_protocol nie nie Włącz tryb protokołu proxy kontrolera nginx ingress.
enable_nginx_real_ip nie nie Włącz moduł rzeczywistego IP kontrolera nginx ingress.
nginx_ingress_real_ip_cidr nie 0.0.0.0/0 Wymagany, jeśli enable_nginx_real_ip jest ustawione na tak. Ufa podsieci do użycia z modułem rzeczywistego IP.
nginx_ingress_proxy_body_size nie 20m Maksymalny rozmiar ciała proxy kontrolera nginx ingress.
sans_base nie [lista wartości, zobacz defaults/main.yml] Lista adresów IP lub FQDN używanych do podpisywania certyfikatu kube-api.

Dodatkowe zmienne

Ta rola akceptuje dodatkową zmienną kubernetes_init_host. Zmienna ta jest używana, gdy klaster jest uruchamiany po raz pierwszy. Wartość tej zmiennej musi być nazwą hosta jednego z węzłów master. Kiedy Ansible będzie działać na dopasowanym hoście, Kubernetes zostanie zainicjowany.

Zasoby klastra wdrożone

Dzięki tej roli zainstalowane zostaną kontroler nginx ingress i Longhorn.

Kontroler nginx ingress

Kontroler nginx ingress jest wykorzystywany jako kontroler wejścia.

Instalacja odbywa się na bare metal, a kontroler wejścia jest następnie eksponowany za pomocą usługi NodePort. Możesz dostosować porty eksponowane przez usługę NodePort, używając zmiennych roli do zmiany tych wartości.

Longhorn

Longhorn to lekki, niezawodny i potężny system rozproszonej pamięci blokowej dla Kubernetes.

Longhorn wdraża rozproszoną pamięć blokową za pomocą kontenerów i mikroserwisów. Longhorn tworzy dedykowany kontroler pamięci dla każdej objętości urządzenia blokowego i synchronicznie replikuję tę objętość w wielu replikach przechowywanych na wielu węzłach. Kontroler pamięci i repliki są samodzielnie orkiestracyjne przy użyciu Kubernetes.

Vagrant

Aby przetestować tę rolę, możesz użyć Vagranta i Virtualbox do uruchomienia przykładowej infrastruktury. Po pobraniu tego repozytorium użyj Vagranta, aby uruchomić maszyny wirtualne:

vagrant up

W pliku Vagrantfile możesz wprowadzić swój publiczny klucz ssh bezpośrednio do pliku authorized_keys użytkownika vagrant. Musisz zmienić placeholder CHANGE_ME w pliku Vagrantfile. Możesz również dostosować liczbę wdrożonych maszyn wirtualnych, zmieniając zmienną NNODES (Domyślnie: 6).

Użycie tej roli

Aby użyć tej roli, postępuj zgodnie z przykładem w katalogu examples/. Dostosuj plik hosts.ini do swoich hostów i uruchom playbook:

lorenzo@mint-virtual:~$ ansible-playbook -i hosts-ubuntu.ini site.yml -e kubernetes_init_host=k8s-ubuntu-0

Najpierw zbierane są dane, a następnie instalowane różne komponenty, aż do zakończenia procesu instalacji. Możesz zweryfikować status klastra i sprawdzić węzły oraz stan podów.

Teraz mamy wdrożony klaster Kubernetes w trybie wysokiej dostępności, możemy sprawdzić status klastra:

root@k8s-ubuntu-0:~# kubectl get nodes

Możesz także sprawdzić status podów:

root@k8s-ubuntu-0:~# kubectl get pods --all-namespaces

Możemy zobaczyć, że Longhorn, nginx ingress i wszystkie pady kube-system są uruchomione.

Możemy także sprawdzić usługę kontrolera nginx ingress:

root@k8s-ubuntu-0:~# kubectl get svc -n ingress-nginx

Możemy zobaczyć, że kontroler nginx ingress nasłuchuje na porcie 30080 dla http i 30443 dla https. Z zewnętrznej maszyny możemy przetestować kontroler ingress:

lorenzo@mint-virtual:~$ curl -v http://192.168.25.110:30080
O projekcie

Install and configure a high available Kubernetes cluster

Zainstaluj
ansible-galaxy install garutilorenzo.ansible-role-linux-kubernetes
Licencja
gpl-3.0
Pobrania
24
Właściciel
☁️ Multi Cloud solution architect • 🖥️ Linux system engineer • 🚀 DevOps • 👨‍💻Software developer