3.4 KiB
Ansible Role: Kubernetes
An Ansible Role that installs Kubernetes on Linux.
Requirements
Requires Docker; recommended role for Docker installation: geerlingguy.docker
.
Role Variables
Available variables are listed below, along with default values (see defaults/main.yml
):
kubernetes_packages:
- name: kubelet
state: present
- name: kubeadm
state: present
- name: kubernetes-cni
state: present
Kubernetes packages to be installed on the server. You can either provide a list of package names, or set name
and state
to have more control over whether the package is present
, absent
, latest
, etc.
kubernetes_role: master
Whether the particular server will serve as a Kubernetes master
(default) or node
. The master will have kubeadm init
run on it to intialize the entire K8s control plane, while node
s will have kubeadm join
run on them to join them to the master
.
kubernetes_kubelet_extra_args: ""
Extra args to pass to kubelet
during startup. E.g. to allow kubelet
to start up even if there is swap is enabled on your server, set this to: "--fail-swap-on=false"
.
kubernetes_allow_pods_on_master: True
Whether to remove the taint that denies pods from being deployed to the Kubernetes master. If you have a single-node cluster, this should definitely be True
. Otherwise, set to False
if you want a dedicated Kubernetes master which doesn't run any other pods.
kubernetes_enable_web_ui: False
Whether to enable the Kubernetes web dashboard UI (only accessible on the master itself, or proxied).
kuberenetes_debug: False
Whether to show extra debug info in Ansible's logs (e.g. the output of the kubeadm init
command).
kubernetes_pod_network_cidr: '10.0.1.0/16'
kubernetes_apiserver_advertise_address: ''
kubernetes_version: 'stable-1.10'
kubernetes_ignore_preflight_errors: 'all'
Options passed to kubeadm init
when initializing the Kubernetes master. The apiserver_advertise_address
defaults to ansible_default_ipv4.address
if it's left empty.
kubernetes_apt_release_channel: main
kubernetes_apt_repository: "deb http://apt.kubernetes.io/ kubernetes-xenial {{ kubernetes_apt_release_channel }}"
kubernetes_apt_ignore_key_error: False
Apt repository options for Kubernetes installation.
kubernetes_yum_arch: x86_64
Yum repository options for Kubernetes installation.
Dependencies
None.
Example Playbooks
Single node (master-only) cluster
- hosts: all
vars:
kubernetes_allow_pods_on_master: True
roles:
- geerlingguy.docker
- geerlingguy.kubernetes
Two or more nodes (single master) cluster
Master inventory vars:
kubernetes_role: "master"
Node(s) inventory vars:
kubernetes_role: "node"
Playbook:
- hosts: all
vars:
kubernetes_allow_pods_on_master: True
roles:
- geerlingguy.docker
- geerlingguy.kubernetes
Then, log into the Kubernetes master, and run kubectl get nodes
as root, and you should see a list of all the servers.
License
MIT / BSD
Author Information
This role was created in 2018 by Jeff Geerling, author of Ansible for DevOps.