geerlingguy.kubernetes
Rola Ansible: Kubernetes
Rola Ansible do instalacji Kubernetes na systemie Linux.
Wymagania
Wymaga kompatybilnego Container Runtime; zalecana rola do instalacji CRI: geerlingguy.containerd.
Zmienne roli
Dostępne zmienne są wymienione poniżej, wraz z wartościami domyślnymi (zobacz defaults/main.yml):
kubernetes_packages:
- name: kubelet
state: present
- name: kubectl
state: present
- name: kubeadm
state: present
- name: kubernetes-cni
state: present
Pakiety Kubernetes do zainstalowania na serwerze. Możesz podać listę nazw pakietów lub ustawić name i state, aby mieć większą kontrolę nad tym, czy pakiet jest present, absent, latest itp.
kubernetes_version: '1.25'
kubernetes_version_rhel_package: '1.25.1'
Wersja minorowa Kubernetes, którą chcesz zainstalować. Prosta kubernetes_version jest używana do pinowania wersji pakietu apt na Debianie oraz jako wersja Kubernetes przekazywana do polecenia kubeadm init (zobacz kubernetes_version_kubeadm). Zmienna kubernetes_version_rhel_package musi być konkretną wersją Kubernetes i służy do pinowania wersji na serwerach Red Hat / CentOS.
kubernetes_role: control_plane
Określa, czy dany serwer ma pełnić rolę control_plane (domyślnie) czy node. Na kontrolnym węźle zostanie uruchomione kubeadm init, aby zainicjować cały kontrolny węzeł K8s, natomiast node będzie mieć uruchomione kubeadm join, aby dołączyć je do control_plane.
Zmienne do konfiguracji kubeadm i kubelet przez kubeadm init za pomocą pliku konfiguracyjnego (zalecane)
Ta rola uruchomi kubeadm init z --config <FILE>.
kubernetes_kubeadm_kubelet_config_file_path: '/etc/kubernetes/kubeadm-kubelet-config.yaml'
Ścieżka do <FILE>. Jeśli katalog nie istnieje, ta rola go utworzy.
Poniższe zmienne są analizowane jako opcje do apiVersion, kind) pliku konfiguracyjnego zostanie utworzony przez tę rolę, więc nie definiuj ich w zmiennych (zobacz templates/kubeadm-kubelet-config.j2).
kubernetes_config_init_configuration:
localAPIEndpoint:
advertiseAddress: "{{ kubernetes_apiserver_advertise_address | default(ansible_default_ipv4.address, true) }}"
Definiuje opcje pod kind: InitConfiguration. Umieszczenie kubernetes_apiserver_advertise_address tutaj jest dla zachowania zgodności ze starszymi wersjami tej roli, gdzie kubernetes_apiserver_advertise_address było używane z opcją linii poleceń.
kubernetes_config_cluster_configuration:
networking:
podSubnet: "{{ kubernetes_pod_network.cidr }}"
kubernetesVersion: "{{ kubernetes_version_kubeadm }}"
Opcje pod kind: ClusterConfiguration. Umieszczenie kubernetes_pod_network.cidr i kubernetes_version_kubeadm tutaj jest dla zachowania zgodności ze starszymi wersjami tej roli, gdzie były używane z opcjami linii poleceń.
kubernetes_config_kubelet_configuration:
cgroupDriver: systemd
Opcje do konfiguracji kubelet na dowolnych węzłach w klastrze przez proces kubeadm init. Aby uzyskać składnię opcji, przeczytaj dokumentację kubelet config file i kubelet integration.
UWAGA: To sposób rekomendowany do konfiguracji kubelet. Większość opcji linii poleceń jest przestarzała.
UWAGA: Rekomendowany cgroupDriver zależy od Twojego Container Runtime. Korzystając z tej roli z Dockerem zamiast containerd, należy zmienić tę wartość na cgroupfs.
kubernetes_config_kube_proxy_configuration: {}
Opcje do konfiguracji proxy kubeleta w sekcji KubeProxyConfiguration pliku konfiguracyjnego kubeleta.
Zmienne do konfiguracji kubeadm i kubelet przez opcje linii poleceń
kubernetes_kubelet_extra_args: ""
kubernetes_kubelet_extra_args_config_file: /etc/default/kubelet
Dodatkowe argumenty do przekazania do kubelet podczas uruchamiania. Na przykład, aby pozwolić na uruchomienie kubelet, nawet jeśli swap jest włączony na serwerze, ustaw to na: "--fail-swap-on=false". Lub aby określić adres IP węzła promowany przez kubelet, ustaw to na "--node-ip={{ ansible_host }}". Ta opcja jest przestarzała. Proszę użyć kubernetes_config_kubelet_configuration zamiast tego.
kubernetes_kubeadm_init_extra_opts: ""
Dodatkowe argumenty do przekazania do kubeadm init podczas inicjalizacji kontrolnego węzła K8s. Na przykład, aby określić dodatkowe Subject Alternative Names dla certyfikatu serwera API, ustaw to na: "--apiserver-cert-extra-sans my-custom.host"
kubernetes_join_command_extra_opts: ""
Dodatkowe argumenty do przekazania do wygenerowanego polecenia kubeadm join podczas inicjalizacji węzłów K8s. Na przykład, aby zignorować niektóre błędy wstępne, takie jak włączony swap, ustaw to na: --ignore-preflight-errors=Swap
Dodatkowe zmienne
kubernetes_allow_pods_on_control_plane: true
Określa, czy usunąć oznaczenie, które zabrania wdrażania podów na kontrolnym węźle Kubernetes. Jeśli masz klaster z pojedynczym węzłem, to powinno być ustawione na True. W przeciwnym razie, ustaw na False, jeśli chcesz mieć dedykowany kontrolny węzeł Kubernetes, który nie uruchamia innych podów.
kubernetes_pod_network:
# Flannel CNI.
cni: 'flannel'
cidr: '10.244.0.0/16'
#
# Calico CNI.
# cni: 'calico'
# cidr: '192.168.0.0/16'
#
# Weave CNI.
# cni: 'weave'
# cidr: '192.168.0.0/16'
Ta rola obecnie wspiera flannel (domyślnie), calico lub weave dla sieci podów klastra. Wybierz tylko jedną dla swojego klastra; konwersja między nimi nie jest wykonywana automatycznie i może prowadzić do uszkodzenia sieci; jeśli musisz przełączyć się z jednego na drugi, powinno to być zrobione poza tą rolą.
kubernetes_apiserver_advertise_address: ''
kubernetes_version_kubeadm: 'stable-{{ kubernetes_version }}'
kubernetes_ignore_preflight_errors: 'all'
Opcje przekazane do kubeadm init podczas inicjalizacji kontrolnego węzła Kubernetes. kubernetes_apiserver_advertise_address domyślnie przyjmuje wartość ansible_default_ipv4.address, jeśli pozostawisz ją pustą.
kubernetes_apt_release_channel: "stable"
kubernetes_apt_keyring_file: "/etc/apt/keyrings/kubernetes-apt-keyring.asc"
kubernetes_apt_repository: "deb [signed-by={{ kubernetes_apt_keyring_file }}] https://pkgs.k8s.io/core:/{{ kubernetes_apt_release_channel }}:/v{{ kubernetes_version }}/deb/ /"
Opcje repozytoriów Apt dla instalacji Kubernetes.
kubernetes_yum_base_url: "https://pkgs.k8s.io/core:/stable:/v{{ kubernetes_version }}/rpm/"
kubernetes_yum_gpg_key: "https://pkgs.k8s.io/core:/stable:/v{{ kubernetes_version }}/rpm/repodata/repomd.xml.key"
kubernetes_yum_gpg_check: true
kubernetes_yum_repo_gpg_check: true
Opcje repozytoriów Yum dla instalacji Kubernetes. Możesz zmienić kubernete_yum_gpg_key na inny adres URL, jeśli jesteś za zaporą ogniową lub podać zaufane lustro. Zazwyczaj w kombinacji ze zmianą kubernetes_yum_base_url.
kubernetes_flannel_manifest_file: https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Plik manifestu Flannel do zastosowania w klastrze Kubernetes w celu włączenia sieci. Możesz skopiować własne pliki na serwer i zastosować je zamiast tego, jeśli musisz dostosować konfigurację sieci Flannel.
kubernetes_calico_manifest_file: https://projectcalico.docs.tigera.io/manifests/calico.yaml
Plik manifestu Calico do zastosowania w klastrze Kubernetes (jeśli używasz Calico zamiast Flannel).
Zależności
Brak.
Przykładowe Playbooki
Klaster z pojedynczym węzłem (tylko kontrolny węzeł)
- hosts: all
vars:
kubernetes_allow_pods_on_control_plane: true
roles:
- geerlingguy.docker
- geerlingguy.kubernetes
Klaster z dwoma lub więcej węzłami (jeden kontrolny węzeł)
Zmienne inwentaryzacyjne dla kontrolnego węzła:
kubernetes_role: "control_plane"
Zmienne inwentaryzacyjne dla węzłów:
kubernetes_role: "node"
Playbook:
- hosts: all
vars:
kubernetes_allow_pods_on_control_plane: true
roles:
- geerlingguy.docker
- geerlingguy.kubernetes
Następnie zaloguj się na kontrolny węzeł Kubernetes i uruchom jako root kubectl get nodes, a powinieneś zobaczyć listę wszystkich serwerów.
Licencja
MIT / BSD
Informacje o autorze
Ta rola została stworzona w 2018 roku przez Jeffa Geerlinga, autora Ansible for DevOps.
Kubernetes for Linux.
ansible-galaxy install geerlingguy.kubernetes