mirror of
https://github.com/phfroidmont/self-hosting.git
synced 2025-12-25 13:46:59 +01:00
Setting up k8s workers
This commit is contained in:
parent
a2ba31fab2
commit
ee38146367
14 changed files with 1013 additions and 0 deletions
115
roles/githubixx.flanneld/README.md
Normal file
115
roles/githubixx.flanneld/README.md
Normal file
|
|
@ -0,0 +1,115 @@
|
|||
ansible-role-flanneld
|
||||
=====================
|
||||
|
||||
This Ansible playbook is used in [Kubernetes the not so hard way with Ansible (at Scaleway) - Part 7 - Worker](https://www.tauceti.blog/post/kubernetes-the-not-so-hard-way-with-ansible-at-scaleway-part-7/). It installes flanneld which provides functionality for the Kubernetes pod network (makes it possible for pods on different hosts to communicate).
|
||||
|
||||
Versions
|
||||
--------
|
||||
|
||||
I tag every release and try to stay with [semantic versioning](http://semver.org) (well kind of). If you want to use the role I recommend to checkout the latest tag. The master branch is basically development while the tags mark stable releases. But in general I try to keep master in good shape too. A tag `v4.0.0_r0.10.0` means this is version `4.0.0` of this role and it's meant to be used with Flannel version `0.10.0` (but maybe also works with higher versions). If the role itself changes `vX.Y.Z` will increase. If the Flannel version changes `rX.Y.Z` will increase. This allows to tag bugfixes and new major versions of the role while it's still developed for a specific Flannel release.
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
This role must be rolled out before Docker is installed. Additionally etcd must be running (but without that you won't have any part of Kubernetes running anyways ;-) ). During run the playbook will connect to the first node it finds in the `k8s_etcd` group and executes `etcdclt` there to add a new entry into etcd. That entry contains the flannel network config and it is located at "`flannel_etcd_prefix`/config".
|
||||
|
||||
Changelog
|
||||
---------
|
||||
|
||||
**v4.0.0_r0.10.0**
|
||||
|
||||
- upgrade to Flannel v0.10.0
|
||||
- major refactoring
|
||||
- introduce flexible parameter settings for flannel daemon via `flannel_settings` and `flannel_settings_user`
|
||||
|
||||
**>= v3.0.0_r0.9.1**
|
||||
|
||||
- no change log available
|
||||
|
||||
Role Variables
|
||||
--------------
|
||||
|
||||
```
|
||||
# The interface on which the K8s services should listen on. As all cluster
|
||||
# communication should use the PeerVPN interface the interface name is
|
||||
# normally "tap0" or "peervpn0".
|
||||
k8s_interface: "tap0"
|
||||
# The directory to store the K8s certificates and other configuration
|
||||
k8s_conf_dir: "/var/lib/kubernetes"
|
||||
# CNI network plugin settings
|
||||
k8s_cni_conf_dir: "/etc/cni/net.d"
|
||||
# The directory from where to copy the K8s certificates. By default this
|
||||
# will expand to user's LOCAL $HOME (the user that run's "ansible-playbook ..."
|
||||
# plus "/k8s/certs". That means if the user's $HOME directory is e.g.
|
||||
# "/home/da_user" then "k8s_ca_conf_directory" will have a value of
|
||||
# "/home/da_user/k8s/certs".
|
||||
k8s_ca_conf_directory: "{{ '~/k8s/certs' | expanduser }}"
|
||||
|
||||
etcd_conf_dir: "/etc/etcd"
|
||||
etcd_bin_dir: "/usr/local/bin"
|
||||
etcd_client_port: 2379
|
||||
etcd_certificates:
|
||||
- ca-etcd.pem
|
||||
- ca-etcd-key.pem
|
||||
- cert-etcd.pem
|
||||
- cert-etcd-key.pem
|
||||
|
||||
flannel_version: "v0.10.0"
|
||||
flannel_etcd_prefix: "/kubernetes-cluster/network"
|
||||
flannel_ip_range: "10.200.0.0/16"
|
||||
flannel_backend_type: "vxlan"
|
||||
flannel_cni_name: "podnet"
|
||||
flannel_subnet_file_dir: "/run/flannel"
|
||||
flannel_options_dir: "/etc/flannel"
|
||||
flannel_bin_dir: "/usr/local/sbin"
|
||||
flannel_cni_conf_file: "10-flannel"
|
||||
|
||||
flannel_systemd_restartsec: "5"
|
||||
flannel_systemd_limitnofile: "40000"
|
||||
flannel_systemd_limitnproc: "1048576"
|
||||
|
||||
flannel_settings:
|
||||
"etcd-cafile": "{{k8s_conf_dir}}/ca-etcd.pem"
|
||||
"etcd-certfile": "{{k8s_conf_dir}}/cert-etcd.pem"
|
||||
"etcd-keyfile": "{{k8s_conf_dir}}/cert-etcd-key.pem"
|
||||
"etcd-prefix": "{{flannel_etcd_prefix}}"
|
||||
"iface": "{{k8s_interface}}"
|
||||
"public-ip": "{{hostvars[inventory_hostname]['ansible_' + k8s_interface].ipv4.address}}"
|
||||
"subnet-file": "{{flannel_subnet_file_dir}}/subnet.env"
|
||||
"ip-masq": "true"
|
||||
"healthz-ip": "0.0.0.0"
|
||||
"healthz-port": "0" # 0 = disable
|
||||
```
|
||||
|
||||
The settings for Flannel daemon defined in `flannel_settings` can be overriden by defining a variable called `flannel_settings_user`. You can also add additional settings by using this variable. E.g. to override `healthz-ip` default value and add `kubeconfig-file` setting add the following settings to `group_vars/all.yml` or `group_vars/k8s.yml` or where ever it fit's best for you:
|
||||
|
||||
```
|
||||
flannel_settings_user:
|
||||
"healthz-ip": "1.2.3.4"
|
||||
"kubeconfig-file": "/etc/k8s/k8s.cfg"
|
||||
```
|
||||
|
||||
Dependencies
|
||||
------------
|
||||
|
||||
https://galaxy.ansible.com/githubixx/etcd/ installed.
|
||||
|
||||
Example Playbook
|
||||
----------------
|
||||
|
||||
```
|
||||
- hosts: k8s:children
|
||||
roles:
|
||||
- githubixx.kubernetes-flanneld
|
||||
```
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE Version 3
|
||||
|
||||
Author Information
|
||||
------------------
|
||||
|
||||
[http://www.tauceti.blog](http://www.tauceti.blog)
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue