minikube kubernetes 上的待处理 pod:cpu 不足

mol*_*hui 2 kubernetes minikube

three services在我的本地运行一个应用程序,minikube同时安装在一个有16 个 cpu 和 64 GB 内存的服务器上,其中一个replicas是 2,我只为每个服务设置了 resources.limits,如下所示

resources:
  limits:
    cpu: "2"
    memory: "209715200"
Run Code Online (Sandbox Code Playgroud)

所有服务资源限制都是一样的。

但是,pending出现了一些服务。

待处理的Pod描述部分输出如下

Limits:
  cpu:     2
  memory:  209715200
Requests:
  cpu:     2
  memory:  209715200
...

Events:
  Type     Reason            Age        From               Message
  ----     ------            ----       ----               -------
  Warning  FailedScheduling  <unknown>  default-scheduler  0/1 nodes are available: 1 Insufficient cpu.
  Warning  FailedScheduling  <unknown>  default-scheduler  0/1 nodes are available: 1 Insufficient cpu.
Run Code Online (Sandbox Code Playgroud)

结果kubectl get pod如下

kubectl get pod
NAME                        READY   STATUS    RESTARTS   AGE
test1-777f54bcdb-pvfn5      1/1     Running   0          4m49s
test2-75ccb875b-lj9xl       1/1     Running   0          4m48s
test2-75ccb875b-s7xht       1/1     Running   0          4m48s
test3-797f6b795f-z9qv5      0/1     Pending   0          4m48s
Run Code Online (Sandbox Code Playgroud)

结果kubectl top node如下

kubectl top node
NAME CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
test   1057m        13%    31675Mi         50% 
Run Code Online (Sandbox Code Playgroud)

minikube 版本

# minikube version
minikube version: v1.9.2
commit: 93af9c1e43cab9618e301bc9fa720c63d5efa393
Run Code Online (Sandbox Code Playgroud)

kubectl 版本

Client Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.0", GitCommit:"2bd9643cee5b3b3a5ecbd3af49d09018f0773c77", GitTreeState:"clean", BuildDate:"2019-09-18T14:36:53Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.0", GitCommit:"2bd9643cee5b3b3a5ecbd3af49d09018f0773c77", GitTreeState:"clean", BuildDate:"2019-09-18T14:27:17Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}
Run Code Online (Sandbox Code Playgroud)

我很困惑我的服务器配置应该能够运行这个应用程序,但由于CPU 不足而挂起

任何意见将不胜感激,在此先感谢您!

Mar*_*ney 5

使用库存配置运行 minikube 不会利用您所有的硬件潜力。Minikube 允许您根据需要创建尽可能大的节点,这非常重要,因为除了其他应用程序之外,大多数人还在他们的工作站上使用 minikube,他们不希望 minikube 可以不受限制地访问使用您的硬件。

要使用自定义规范启动 minikube,您可以按照Radek 的描述进行操作,您可以在启动 minikube 时指定 CPU 和内存的数量。

$ minikube start --cpus N --memory N
Run Code Online (Sandbox Code Playgroud)

另一种选择是将这些参数设置为默认值:

$ minikube config set cpus N
$ minikube config set memory N 
Run Code Online (Sandbox Code Playgroud)

要检查所有可配置的参数,您可以运行minikube config.

使用有限资源的节点的另一个原因是,您可以拥有一个包含多个节点的 minikube 集群,也可以在一台机器上拥有多个集群。要创建具有多个节点的 minikube 集群,您可以运行:

$ minikube start -n X
Run Code Online (Sandbox Code Playgroud)

其中 X 是所需节点的数量。

如果您有一个正在运行的 minikube 集群并想向其中添加另一个节点,您可以运行:

$ minikube node add
Run Code Online (Sandbox Code Playgroud)

要创建辅助 minikube 集群,您可以运行:

$ minikube start -p cluster-name
Run Code Online (Sandbox Code Playgroud)

其中 cluster-name 是您选择的名称。