Ansible Role - Kubernetes
Go to file
2018-06-03 20:39:50 -05:00
defaults Fixes #2: Make role work with nodes joining master. 2018-05-14 22:27:26 -05:00
handlers Initial commit. 2018-05-09 09:19:11 -05:00
meta Fix install on CentOS 7. 2018-05-09 16:09:32 -05:00
tasks Change order when applying flannel templates. 2018-06-03 20:39:50 -05:00
tests Really fix idempotence for Flannel tasks, and get CentOS mostly working. 2018-05-09 17:04:46 -05:00
.gitignore Initial commit. 2018-05-09 09:19:11 -05:00
.travis.yml Fixes #3: CentOS builds now passing. 2018-05-31 19:01:23 -05:00
LICENSE Initial commit. 2018-05-09 09:19:11 -05:00
README.md Fixes #2: Make role work with nodes joining master. 2018-05-14 22:27:26 -05:00

Ansible Role: Kubernetes

Build Status

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 nodes 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.