2015-12-11 10:52:20 +00:00
|
|
|
apiVersion: v1
|
|
|
|
kind: Pod
|
|
|
|
metadata:
|
|
|
|
name: kube-controller-manager
|
2018-03-30 11:29:13 +00:00
|
|
|
namespace: kube-system
|
2016-11-09 13:15:27 +00:00
|
|
|
labels:
|
2017-10-18 16:29:18 +00:00
|
|
|
k8s-app: kube-controller-manager
|
2017-09-01 06:02:23 +00:00
|
|
|
annotations:
|
2017-09-13 18:00:51 +00:00
|
|
|
kubespray.etcd-cert/serial: "{{ etcd_client_cert_serial }}"
|
2017-09-01 06:02:23 +00:00
|
|
|
kubespray.controller-manager-cert/serial: "{{ controller_manager_cert_serial }}"
|
2015-12-11 10:52:20 +00:00
|
|
|
spec:
|
|
|
|
hostNetwork: true
|
2017-03-28 14:33:07 +00:00
|
|
|
{% if kube_version | version_compare('v1.6', '>=') %}
|
2017-04-20 09:07:34 +00:00
|
|
|
dnsPolicy: ClusterFirst
|
2017-03-28 14:33:07 +00:00
|
|
|
{% endif %}
|
2015-12-11 10:52:20 +00:00
|
|
|
containers:
|
|
|
|
- name: kube-controller-manager
|
2015-12-14 08:54:58 +00:00
|
|
|
image: {{ hyperkube_image_repo }}:{{ hyperkube_image_tag }}
|
2016-11-22 15:16:04 +00:00
|
|
|
imagePullPolicy: {{ k8s_image_pull_policy }}
|
2016-12-23 14:44:44 +00:00
|
|
|
resources:
|
|
|
|
limits:
|
|
|
|
cpu: {{ kube_controller_cpu_limit }}
|
|
|
|
memory: {{ kube_controller_memory_limit }}
|
|
|
|
requests:
|
|
|
|
cpu: {{ kube_controller_cpu_requests }}
|
|
|
|
memory: {{ kube_controller_memory_requests }}
|
2015-12-11 10:52:20 +00:00
|
|
|
command:
|
|
|
|
- /hyperkube
|
|
|
|
- controller-manager
|
2017-06-27 04:27:25 +00:00
|
|
|
- --kubeconfig={{ kube_config_dir }}/kube-controller-manager-kubeconfig.yaml
|
2016-03-21 21:25:09 +00:00
|
|
|
- --leader-elect=true
|
2018-03-29 14:35:28 +00:00
|
|
|
- --service-account-private-key-file={{ kube_cert_dir }}/service-account-key.pem
|
2015-12-11 10:52:20 +00:00
|
|
|
- --root-ca-file={{ kube_cert_dir }}/ca.pem
|
2016-12-07 09:09:04 +00:00
|
|
|
- --cluster-signing-cert-file={{ kube_cert_dir }}/ca.pem
|
|
|
|
- --cluster-signing-key-file={{ kube_cert_dir }}/ca-key.pem
|
2016-07-08 14:45:34 +00:00
|
|
|
- --enable-hostpath-provisioner={{ kube_hostpath_dynamic_provisioner }}
|
2017-02-07 14:01:02 +00:00
|
|
|
- --node-monitor-grace-period={{ kube_controller_node_monitor_grace_period }}
|
|
|
|
- --node-monitor-period={{ kube_controller_node_monitor_period }}
|
|
|
|
- --pod-eviction-timeout={{ kube_controller_pod_eviction_timeout }}
|
2017-10-15 19:41:17 +00:00
|
|
|
- --profiling=false
|
|
|
|
- --terminated-pod-gc-threshold=12500
|
2016-11-25 10:33:39 +00:00
|
|
|
- --v={{ kube_log_level }}
|
2017-06-27 04:27:25 +00:00
|
|
|
{% if rbac_enabled %}
|
2017-10-15 19:41:17 +00:00
|
|
|
- --use-service-account-credentials=true
|
2017-06-27 04:27:25 +00:00
|
|
|
{% endif %}
|
2017-02-17 03:59:40 +00:00
|
|
|
{% if cloud_provider is defined and cloud_provider in ["openstack", "azure", "vsphere"] %}
|
2016-08-23 16:42:22 +00:00
|
|
|
- --cloud-provider={{cloud_provider}}
|
2016-03-31 12:38:08 +00:00
|
|
|
- --cloud-config={{ kube_config_dir }}/cloud_config
|
2017-11-23 13:43:36 +00:00
|
|
|
{% elif cloud_provider is defined and cloud_provider in ["aws", "external"] %}
|
2016-08-23 16:42:22 +00:00
|
|
|
- --cloud-provider={{cloud_provider}}
|
2016-12-07 16:41:53 +00:00
|
|
|
{% endif %}
|
|
|
|
{% if kube_network_plugin is defined and kube_network_plugin == 'cloud' %}
|
|
|
|
- --configure-cloud-routes=true
|
2017-08-25 07:07:50 +00:00
|
|
|
{% endif %}
|
2018-02-17 03:37:47 +00:00
|
|
|
{% if kube_network_plugin is defined and kube_network_plugin in ["cloud", "flannel", "canal", "cilium"] %}
|
2017-08-25 07:07:50 +00:00
|
|
|
- --allocate-node-cidrs=true
|
2016-12-07 16:41:53 +00:00
|
|
|
- --cluster-cidr={{ kube_pods_subnet }}
|
2017-08-25 07:07:50 +00:00
|
|
|
- --service-cluster-ip-range={{ kube_service_addresses }}
|
2017-10-01 09:43:00 +00:00
|
|
|
- --node-cidr-mask-size={{ kube_network_node_prefix }}
|
2016-03-31 12:38:08 +00:00
|
|
|
{% endif %}
|
2017-08-24 20:18:38 +00:00
|
|
|
{% if kube_feature_gates %}
|
|
|
|
- --feature-gates={{ kube_feature_gates|join(',') }}
|
|
|
|
{% endif %}
|
2017-04-17 15:09:34 +00:00
|
|
|
{% if controller_mgr_custom_flags is string %}
|
|
|
|
- {{ controller_mgr_custom_flags }}
|
2017-04-17 16:13:39 +00:00
|
|
|
{% else %}
|
2017-04-17 15:09:34 +00:00
|
|
|
{% for flag in controller_mgr_custom_flags %}
|
2017-04-14 21:33:04 +00:00
|
|
|
- {{ flag }}
|
2017-04-17 15:09:34 +00:00
|
|
|
{% endfor %}
|
|
|
|
{% endif %}
|
2015-12-11 10:52:20 +00:00
|
|
|
livenessProbe:
|
|
|
|
httpGet:
|
|
|
|
host: 127.0.0.1
|
|
|
|
path: /healthz
|
|
|
|
port: 10252
|
2016-02-01 12:41:49 +00:00
|
|
|
initialDelaySeconds: 30
|
|
|
|
timeoutSeconds: 10
|
2015-12-11 10:52:20 +00:00
|
|
|
volumeMounts:
|
2017-08-30 19:41:09 +00:00
|
|
|
- mountPath: /etc/ssl
|
2017-06-27 04:27:25 +00:00
|
|
|
name: ssl-certs-host
|
|
|
|
readOnly: true
|
2017-08-30 19:41:09 +00:00
|
|
|
{% for dir in ssl_ca_dirs %}
|
|
|
|
- mountPath: {{ dir }}
|
|
|
|
name: {{ dir | regex_replace('^/(.*)$', '\\1' ) | regex_replace('/', '-') }}
|
|
|
|
readOnly: true
|
|
|
|
{% endfor %}
|
2017-06-27 04:27:25 +00:00
|
|
|
- mountPath: "{{kube_config_dir}}/ssl"
|
|
|
|
name: etc-kube-ssl
|
|
|
|
readOnly: true
|
|
|
|
- mountPath: "{{ kube_config_dir }}/kube-controller-manager-kubeconfig.yaml"
|
|
|
|
name: kubeconfig
|
2015-12-11 10:52:20 +00:00
|
|
|
readOnly: true
|
2017-02-17 03:59:40 +00:00
|
|
|
{% if cloud_provider is defined and cloud_provider in ["openstack", "azure", "vsphere" ] %}
|
2017-06-27 04:27:25 +00:00
|
|
|
- mountPath: "{{ kube_config_dir }}/cloud_config"
|
2016-03-31 12:38:08 +00:00
|
|
|
name: cloudconfig
|
|
|
|
readOnly: true
|
2018-02-14 16:15:25 +00:00
|
|
|
{% endif %}
|
|
|
|
{% if cloud_provider is defined and cloud_provider in ["openstack"] and openstack_cacert is defined %}
|
|
|
|
- mountPath: "{{ kube_config_dir }}/openstack-cacert.pem"
|
|
|
|
name: openstackcacert
|
|
|
|
readOnly: true
|
2016-03-31 12:38:08 +00:00
|
|
|
{% endif %}
|
2015-12-11 10:52:20 +00:00
|
|
|
volumes:
|
2017-06-27 04:27:25 +00:00
|
|
|
- name: ssl-certs-host
|
|
|
|
hostPath:
|
2017-08-30 19:41:09 +00:00
|
|
|
path: /etc/ssl
|
|
|
|
{% for dir in ssl_ca_dirs %}
|
|
|
|
- name: {{ dir | regex_replace('^/(.*)$', '\\1' ) | regex_replace('/', '-') }}
|
|
|
|
hostPath:
|
|
|
|
path: {{ dir }}
|
|
|
|
{% endfor %}
|
2017-06-27 04:27:25 +00:00
|
|
|
- name: etc-kube-ssl
|
|
|
|
hostPath:
|
|
|
|
path: "{{ kube_config_dir }}/ssl"
|
|
|
|
- name: kubeconfig
|
|
|
|
hostPath:
|
|
|
|
path: "{{ kube_config_dir }}/kube-controller-manager-kubeconfig.yaml"
|
2017-02-17 03:59:40 +00:00
|
|
|
{% if cloud_provider is defined and cloud_provider in ["openstack", "azure", "vsphere"] %}
|
2016-03-31 12:38:08 +00:00
|
|
|
- hostPath:
|
2017-06-27 04:27:25 +00:00
|
|
|
path: "{{ kube_config_dir }}/cloud_config"
|
2016-03-31 12:38:08 +00:00
|
|
|
name: cloudconfig
|
|
|
|
{% endif %}
|
2018-02-14 16:15:25 +00:00
|
|
|
{% if cloud_provider is defined and cloud_provider in ["openstack"] and openstack_cacert is defined %}
|
|
|
|
- hostPath:
|
|
|
|
path: "{{ kube_config_dir }}/openstack-cacert.pem"
|
|
|
|
name: openstackcacert
|
|
|
|
{% endif %}
|