更改 Kubernetes 的默认行为

Pra*_*ati 1 configuration kubernetes

我在笔记本电脑上使用 Kubeadm 设置了一个 K8S 集群(1 个主节点和 2 个从节点)。

  • 部署了一个 Pod 的 6 个副本。其中 3 个被部署到每个奴隶身上。
  • 关闭了其中一个从站。
  • 在正在运行的节点上调度 3 个 pod 大约需要 6 分钟。

最初,我认为它必须与 K8S 设置有关。经过一番挖掘发现,这是因为这里提到的控制器管理器和 Kubelet 的 K8S 中的默认值。这是有道理的。我查看了关于在哪里更改配置属性的 K8S 文档,还查看了集群节点上的配置文件,但无法弄清楚。

kubelet: node-status-update-frequency=4s (from 10s)
controller-manager: node-monitor-period=2s (from 5s)
controller-manager: node-monitor-grace-period=16s (from 40s)
controller-manager: pod-eviction-timeout=30s (from 5m)
Run Code Online (Sandbox Code Playgroud)

有人可以指出需要做些什么才能使上述配置更改永久化以及相同的不同选项吗?

Ric*_*ico 6

在 kubelet 上,在所有节点上更改此文件:

/var/lib/kubelet/kubeadm-flags.env
Run Code Online (Sandbox Code Playgroud)

在此行的末尾或任何位置添加选项:

KUBELET_KUBEADM_ARGS=--cgroup-driver=cgroupfs --cni-bin-dir=/opt/cni/bin 
--cni-conf-dir=/etc/cni/net.d --network-plugin=cni 
--resolv-conf=/run/systemd/resolve/resolv.conf 
--node-status-update-frequency=10s <== add this
Run Code Online (Sandbox Code Playgroud)

在 master 上的 kube-controller-manager 更改以下文件:

/etc/kubernetes/manifests/kube-controller-manager.yaml
Run Code Online (Sandbox Code Playgroud)

在这个部分:

  containers:
  - command:
    - kube-controller-manager
    - --address=127.0.0.1
    - --allocate-node-cidrs=true
    - --cloud-provider=aws
    - --cluster-cidr=192.168.0.0/16
    - --cluster-signing-cert-file=/etc/kubernetes/pki/ca.crt
    - --cluster-signing-key-file=/etc/kubernetes/pki/ca.key
    - --controllers=*,bootstrapsigner,tokencleaner
    - --kubeconfig=/etc/kubernetes/controller-manager.conf
    - --leader-elect=true
    - --node-cidr-mask-size=24
    - --root-ca-file=/etc/kubernetes/pki/ca.crt
    - --service-account-private-key-file=/etc/kubernetes/pki/sa.key
    - --use-service-account-credentials=true
    - –-node-monitor-period=5s  <== add this line
Run Code Online (Sandbox Code Playgroud)

在你的主人上做一个sudo systemctl restart docker 在你所有的节点上做一个sudo systemctl restart kubelet

您应该让新配置生效。

希望能帮助到你。