问题描述
我想在启动 KubeletConfiguration.cpuCFSQuota = false
时设置传递给 config.yaml
的 kubeadm
中的值 minikube
以关闭 cpu 资源检查,但我没有找到通过此处的文档 https://minikube.sigs.k8s.io/docs/handbook/config/ 执行此操作的选项。我找到的最接近的解决方案是使用选项 --extra-config=kubelet.cpu-cfs-quota=false
,但 --cpu-cfs-quota
的 kubelet
选项已被弃用,不再有效。
任何想法表示赞赏。
环境:
- 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"
或者,您可以在没有 --extra-config=kubelet.config=/path/to/config.yaml
标志的情况下启动 minikube,并将 start the Kubelet with the --config
flag 设置为 Kubelet 配置文件的路径。然后 Kubelet 将从该文件加载其配置。
我知道这些步骤比您预期的要多一些,但是通过配置文件设置 kubelet 参数是推荐的方法,因为它简化了节点部署和配置管理。