mirror of
https://github.com/geerlingguy/ansible-role-kubernetes.git
synced 2024-11-18 19:10:39 +01:00
117 lines
3.4 KiB
Markdown
117 lines
3.4 KiB
Markdown
# Ansible Role: Kubernetes
|
|
|
|
[![Build Status](https://travis-ci.org/geerlingguy/ansible-role-kubernetes.svg?branch=master)](https://travis-ci.org/geerlingguy/ansible-role-kubernetes)
|
|
|
|
An Ansible Role that installs [Kubernetes](https://kubernetes.io) 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
|
|
|
|
```yaml
|
|
- hosts: all
|
|
|
|
vars:
|
|
kubernetes_allow_pods_on_master: True
|
|
|
|
roles:
|
|
- geerlingguy.docker
|
|
- geerlingguy.kubernetes
|
|
```
|
|
|
|
### Two or more nodes (single master) cluster
|
|
|
|
Master inventory vars:
|
|
|
|
```yaml
|
|
kubernetes_role: "master"
|
|
```
|
|
|
|
Node(s) inventory vars:
|
|
|
|
```yaml
|
|
kubernetes_role: "node"
|
|
```
|
|
|
|
Playbook:
|
|
|
|
```yaml
|
|
- 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](https://www.jeffgeerling.com/), author of [Ansible for DevOps](https://www.ansiblefordevops.com/).
|