kubernetes-sigs/kubespray

unpredictable extra args

Open

#12,021 建立於 2025年3月5日

在 GitHub 查看
 (12 留言) (0 反應) (1 負責人)HTML (4,419 fork)batch import
help wantedkind/bugtriage/accepted

倉庫指標

Star
 (10,380 star)
PR 合併指標
 (平均合併 25天) (30 天內合併 26 個 PR)

描述

What happened?

kubespray has ability to add Custom flags to control plane components. But in docs doesnt writes, which extra arg are possible.

E.G. my extra args

kube_kubeadm_controller_extra_args:
  node-monitor-grace-period: 20s
  allocate-node-cidrs: true

kube_kubeadm_apiserver_extra_args:
  default-not-ready-toleration-seconds: 10
  default-unreachable-toleration-seconds: 10

kubelet_config_extra_args:
  nodeStatusUpdateFrequency: 5s 
  nodeStatusReportFrequency: 5s

kubelet is ok

but api-server and controller-manager in generated kubeadmconfig

  - name: default-not-ready-toleration-seconds  DEFAULT VALUES
    value: "300"
  - name: default-unreachable-toleration-seconds
    value: "300"
...
  - name: "default-not-ready-toleration-seconds"   MY ARGS
    value: "10"
  - name: "default-unreachable-toleration-seconds"
    value: "10"

controllerManager:
  extraArgs:
  - name: node-monitor-grace-period DEFAULT
    value: "40s"

...
  - name: "node-monitor-grace-period" DUPLICATE
    value: "20s"
  - name: "allocate-node-cidrs" OK
    value: "True"

I suspect - jinja generete this value from defaut var

{% if kube_apiserver_pod_eviction_not_ready_timeout_seconds is defined %}
  - name: default-not-ready-toleration-seconds
    value: "{{ kube_apiserver_pod_eviction_not_ready_timeout_seconds }}"
{% endif %}
{% if kube_apiserver_pod_eviction_unreachable_timeout_seconds is defined %}
  - name: default-unreachable-toleration-seconds
    value: "{{ kube_apiserver_pod_eviction_unreachable_timeout_seconds }}"
{% endif %}

 - name: node-monitor-grace-period
    value: "{{ kube_controller_node_monitor_grace_period }}"

It is another vars, when classic extra

In this case Add section in docementation about default vars, which opposite extra args or Make default args more obviously, for avoid collision

What did you expect to happen?

extra args added in kubeadm config is expected and planned

How can we reproduce it (as minimally and precisely as possible)?

add some extra args in k8s-cluster.yaml and deploy

OS

Ubuntu 22.04.5 LTS

Version of Ansible

2.16.10

Version of Python

3.10.12

Version of Kubespray (commit)

release-2.27

Network plugin used

calico

Full inventory with variables

.

Command used to invoke ansible

ansible-playbook -i ./inventory/kubetest/hosts.yaml -u *** -b --private-key *** cluster.yml --tags "master"

Output of ansible run

.

Anything else we need to know

No response

貢獻者指南