mirror of
https://github.com/geerlingguy/ansible-role-kubernetes.git
synced 2025-08-10 13:49:41 +02:00
Added config support for kubeadm.
`kubeadmin` can now take a --config argument instead of parsing in flags. This was required in order to increase the number of pods running on a host from 110 to 500. Can now align the pod-network-cidr with kubeadm and Calico instead of use the Calico default network of 192.168.0.0/16.
This commit is contained in:
parent
41be8a0d07
commit
ba45b91e00
@ -24,8 +24,8 @@ Available variables are listed below, along with default values (see `defaults/m
|
|||||||
|
|
||||||
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 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_version: '1.17'
|
kubernetes_version: '1.19'
|
||||||
kubernetes_version_rhel_package: '1.17.2'
|
kubernetes_version_rhel_package: '1.19.0'
|
||||||
|
|
||||||
The minor version of Kubernetes to install. The plain `kubernetes_version` is used to pin an apt package version on Debian, and as the Kubernetes version passed into the `kubeadm init` command (see `kubernetes_version_kubeadm`). The `kubernetes_version_rhel_package` variable must be a specific Kubernetes release, and is used to pin the version on Red Hat / CentOS servers.
|
The minor version of Kubernetes to install. The plain `kubernetes_version` is used to pin an apt package version on Debian, and as the Kubernetes version passed into the `kubeadm init` command (see `kubernetes_version_kubeadm`). The `kubernetes_version_rhel_package` variable must be a specific Kubernetes release, and is used to pin the version on Red Hat / CentOS servers.
|
||||||
|
|
||||||
|
@ -50,4 +50,7 @@ kubernetes_flannel_manifest_file_rbac: https://raw.githubusercontent.com/coreos/
|
|||||||
kubernetes_flannel_manifest_file: https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
|
kubernetes_flannel_manifest_file: https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
|
||||||
|
|
||||||
# Calico config files
|
# Calico config files
|
||||||
kubernetes_calico_manifest_file: https://docs.projectcalico.org/v3.10/manifests/calico.yaml
|
kubernetes_calico_manifest_file: https://docs.projectcalico.org/v3.17/manifests/calico.yaml
|
||||||
|
|
||||||
|
# Kubeadm config extras
|
||||||
|
kubernetes_kube_controller_manager_node_cidr_mask_size: 24
|
||||||
|
2
meta/.galaxy_install_info
Normal file
2
meta/.galaxy_install_info
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
install_date: Wed Jan 6 10:17:50 2021
|
||||||
|
version: 5.0.1
|
@ -1,12 +1,25 @@
|
|||||||
---
|
---
|
||||||
|
- name: Ensure .kube directory exists.
|
||||||
|
file:
|
||||||
|
path: ~/.kube
|
||||||
|
state: directory
|
||||||
|
mode: 0755
|
||||||
|
|
||||||
|
- name: Get Kubernetes bootstrap token.
|
||||||
|
command: kubeadm token generate
|
||||||
|
register: kubernetes_bootstrap_token
|
||||||
|
|
||||||
|
- name: Add Kubernetes kube controller manager extra options override file.
|
||||||
|
template:
|
||||||
|
src: kubeadm-config.j2
|
||||||
|
dest: ~/.kube/kubeadm-config.yml
|
||||||
|
mode: 0644
|
||||||
|
|
||||||
- name: Initialize Kubernetes master with kubeadm init.
|
- name: Initialize Kubernetes master with kubeadm init.
|
||||||
command: >
|
command: >
|
||||||
kubeadm init
|
kubeadm init
|
||||||
--pod-network-cidr={{ kubernetes_pod_network.cidr }}
|
--config ~/.kube/kubeadm-config.yml
|
||||||
--apiserver-advertise-address={{ kubernetes_apiserver_advertise_address | default(ansible_default_ipv4.address, true) }}
|
|
||||||
--kubernetes-version {{ kubernetes_version_kubeadm }}
|
|
||||||
--ignore-preflight-errors={{ kubernetes_ignore_preflight_errors }}
|
--ignore-preflight-errors={{ kubernetes_ignore_preflight_errors }}
|
||||||
{{ kubernetes_kubeadm_init_extra_opts }}
|
|
||||||
register: kubeadmin_init
|
register: kubeadmin_init
|
||||||
when: not kubernetes_init_stat.stat.exists
|
when: not kubernetes_init_stat.stat.exists
|
||||||
|
|
||||||
@ -16,12 +29,6 @@
|
|||||||
verbosity: 2
|
verbosity: 2
|
||||||
when: not kubernetes_init_stat.stat.exists
|
when: not kubernetes_init_stat.stat.exists
|
||||||
|
|
||||||
- name: Ensure .kube directory exists.
|
|
||||||
file:
|
|
||||||
path: ~/.kube
|
|
||||||
state: directory
|
|
||||||
mode: 0755
|
|
||||||
|
|
||||||
- name: Symlink the kubectl admin.conf to ~/.kube/conf.
|
- name: Symlink the kubectl admin.conf to ~/.kube/conf.
|
||||||
file:
|
file:
|
||||||
src: /etc/kubernetes/admin.conf
|
src: /etc/kubernetes/admin.conf
|
||||||
@ -38,10 +45,24 @@
|
|||||||
changed_when: "'created' in flannel_result.stdout"
|
changed_when: "'created' in flannel_result.stdout"
|
||||||
when: kubernetes_pod_network.cni == 'flannel'
|
when: kubernetes_pod_network.cni == 'flannel'
|
||||||
|
|
||||||
|
- name: Download Calico networking manifest.
|
||||||
|
get_url:
|
||||||
|
url: "{{ kubernetes_calico_manifest_file }}"
|
||||||
|
dest: "~/.kube/calico_manifest.yaml"
|
||||||
|
mode: "0644"
|
||||||
|
when: kubernetes_pod_network.cni == 'calico'
|
||||||
|
|
||||||
|
- name: Replace Calico default CIDR network with Kuberenetes pod networking.
|
||||||
|
replace:
|
||||||
|
path: ~/.kube/calico_manifest.yaml
|
||||||
|
regexp: "192.168.0.0/16"
|
||||||
|
replace: "{{ kubernetes_pod_network.cidr }}"
|
||||||
|
when: kubernetes_pod_network.cni == 'calico'
|
||||||
|
|
||||||
- name: Configure Calico networking.
|
- name: Configure Calico networking.
|
||||||
command: "{{ item }}"
|
command: "{{ item }}"
|
||||||
with_items:
|
with_items:
|
||||||
- kubectl apply -f {{ kubernetes_calico_manifest_file }}
|
- kubectl apply -f ~/.kube/calico_manifest.yaml
|
||||||
register: calico_result
|
register: calico_result
|
||||||
changed_when: "'created' in calico_result.stdout"
|
changed_when: "'created' in calico_result.stdout"
|
||||||
when: kubernetes_pod_network.cni == 'calico'
|
when: kubernetes_pod_network.cni == 'calico'
|
||||||
|
42
templates/kubeadm-config.j2
Normal file
42
templates/kubeadm-config.j2
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
apiVersion: kubeadm.k8s.io/v1beta2
|
||||||
|
kind: InitConfiguration
|
||||||
|
bootstrapTokens:
|
||||||
|
- groups:
|
||||||
|
- system:bootstrappers:kubeadm:default-node-token
|
||||||
|
token: {{ kubernetes_bootstrap_token.stdout }}
|
||||||
|
ttl: 24h0m0s
|
||||||
|
usages:
|
||||||
|
- signing
|
||||||
|
- authentication
|
||||||
|
localAPIEndpoint:
|
||||||
|
advertiseAddress: {{ kubernetes_apiserver_advertise_address | default(ansible_default_ipv4.address, true) }}
|
||||||
|
bindPort: 6443
|
||||||
|
nodeRegistration:
|
||||||
|
criSocket: /var/run/dockershim.sock
|
||||||
|
name: node1
|
||||||
|
taints:
|
||||||
|
- effect: NoSchedule
|
||||||
|
key: node-role.kubernetes.io/master
|
||||||
|
---
|
||||||
|
apiVersion: kubeadm.k8s.io/v1beta2
|
||||||
|
kind: ClusterConfiguration
|
||||||
|
apiServer:
|
||||||
|
timeoutForControlPlane: 4m0s
|
||||||
|
certificatesDir: /etc/kubernetes/pki
|
||||||
|
clusterName: kubernetes
|
||||||
|
controllerManager: {}
|
||||||
|
dns:
|
||||||
|
type: CoreDNS
|
||||||
|
etcd:
|
||||||
|
local:
|
||||||
|
dataDir: /var/lib/etcd
|
||||||
|
imageRepository: k8s.gcr.io
|
||||||
|
kubernetesVersion: v1.17.0
|
||||||
|
networking:
|
||||||
|
dnsDomain: cluster.local
|
||||||
|
serviceSubnet: 10.96.0.0/12
|
||||||
|
podSubnet: {{ kubernetes_pod_network.cidr }}
|
||||||
|
controllerManager:
|
||||||
|
extraArgs:
|
||||||
|
node-cidr-mask-size: "{{ kubernetes_kube_controller_manager_node_cidr_mask_size }}"
|
||||||
|
scheduler: {}
|
Loading…
Reference in New Issue
Block a user