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