minikube start - 如何修改传递给 kubeadm 的 KubeletConfiguration?

问题描述

我想在启动 KubeletConfiguration.cpuCFSQuota = false 时设置传递给 config.yamlkubeadm 中的值 minikube关闭 cpu 资源检查,但我没有找到通过此处的文档 https://minikube.sigs.k8s.io/docs/handbook/config/ 执行此操作的选项。我找到的最接近的解决方案是使用选项 --extra-config=kubelet.cpu-cfs-quota=false,但 --cpu-cfs-quotakubelet 选项已被弃用,不再有效。

任何想法表示赞赏。

环境:

  • Ubuntu 20.04
  • Minikube 1.17.1
  • Kubernetes 1.20.2
  • 驱动程序泊坞窗 (20.10.2)

谢谢, 码头。

解决方法

public static <T> String parseAndWrite(List<T> listToParse,String outputFile) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.enable(SerializationFeature.INDENT_OUTPUT); String json = objectMapper.writeValueAsString(listToParse); // Create output file. StringBuilder filePath = new StringBuilder(); filePath.append("src/resources/").append(outputFile).append(".json"); try { objectMapper.writeValue(Paths.get(filePath.toString()).toFile(),json); return json; } catch (Exception e) { e.printStackTrace(); } return null; } 标志与 --extra-config=kubelet. 一起使用是一个好方法,但您还需要 Set Kubelet parameters via a config file

正如您已经注意到的 minikube start 标志:

为指定 CPU 的容器启用 CPU CFS 配额强制 限制(已弃用:此参数应通过配置文件设置 由 Kubelet 的 --cpu-cfs-quota 标志指定。

因此您需要通过创建 --config 配置文件来设置该参数:

配置文件必须是 JSON 或 YAML 表示 此结构中的参数。确保 Kubelet 具有读取权限 在文件上。

以下是该文件的示例:

kubelet

现在您可以使用该配置文件来设置 apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration evictionHard: memory.available: "200Mi" = cpuCFSQuota

false

然后用 // cpuCFSQuota enables CPU CFS quota enforcement for containers that // specify CPU limits. // Dynamic Kubelet Config (beta): If dynamically updating this field,consider that // disabling it may reduce node stability. // Default: true // +optional` CPUCFSQuota *bool `json:"cpuCFSQuota,omitempty"

调用 minikube

或者,您可以在没有 --extra-config=kubelet.config=/path/to/config.yaml 标志的情况下启动 minikube,并将 start the Kubelet with the --config flag 设置为 Kubelet 配置文件的路径。然后 Kubelet 将从该文件加载其配置。

我知道这些步骤比您预期的要多一些,但是通过配置文件设置 kubelet 参数是推荐的方法,因为它简化了节点部署和配置管理。