我一直在尝试在我的系统上设置Knative开发环境。但是每次我部署 Istio 时,试点都处于待处理状态,我发现这是因为资源耗尽。
我遵循了Knative文档中的基本设置指南,即serving/blob/master/DEVELOPMENT.md
现在,如果我根据它安装和部署 istio,资源就会耗尽,并且由于没有可用的节点,istio-pilot 仍处于挂起状态。
如果我尝试与安装指南上给出的相同,即 https://knative.dev/docs/install/installing-istio/
它工作正常,直到稍后当我重新启动集群时,api服务器停止,根据我通过搜索发现的,这也是由于缺乏资源。
那么Knative设置的确切要求是什么?
我使用了带有 8 核处理器和 32GB RAM 的系统。
我分配错了吗? 据我所知,我们必须为单节点 kubernetes 结构提供至少 8Gb 内存和 6 个 CPU(这就是我正在使用的)。那么 Istio 和 Knative 部署使用的资源呢?
我检查了节点中的资源和限制,并将限制设置为 0%。
我已经尝试在 minikube 配置中限制 CPU 和 RAM,然后在启动 minikube 时使用 --cpu 和 --memory,但输出保持不变。
Minikube 开始于 : minikube start
🔥 Creating virtualbox VM (CPUs=6, Memory=8192MB, Disk=20000MB) ...
🐳 Preparing Kubernetes v1.15.2 on Docker 18.09.8 ...
🚜 Pulling images ...
ISTIO 部署者:
kubectl apply -f ./third_party/istio-1.2-latest/istio-crds.yaml
while [[ $(kubectl get crd gateways.networking.istio.io -o
jsonpath='{.status.conditions[?(@.type=="Established")].status}') !=
'True' ]]; do
echo "Waiting on Istio CRDs"; sleep 1
done
kubectl apply -f ./third_party/istio-1.2-latest/istio.yaml
飞行员保持待定状态,在描述吊舱后,我们得到:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling 71s (x4 over 5m12s) default-scheduler 0/1 nodes are available: 1 Insufficient cpu.
kubectl describe node nodename
输出:
Allocated resources:
(Total limits may be over 100 percent, i.e., overcommitted.)
Resource Requests Limits
-------- -------- ------
cpu 5105m (85%) 13800m (229%)
memory 3749366272 (45%) 9497290Ki (117%)
ephemeral-storage 0 (0%) 0 (0%)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Starting 19m kubelet, minikube Starting kubelet.
Normal NodeHasSufficientMemory 19m (x8 over 19m) kubelet, minikube Node minikube status is now: NodeHasSufficientMemory
Normal NodeHasNoDiskPressure 19m (x8 over 19m) kubelet, minikube Node minikube status is now: NodeHasNoDiskPressure
Normal NodeHasSufficientPID 19m (x7 over 19m) kubelet, minikube Node minikube status is now: NodeHasSufficientPID
Normal NodeAllocatableEnforced 19m kubelet, minikube Updated Node Allocatable limit across pods
Normal Starting 18m kube-proxy, minikube Starting kube-proxy.
设置应该已经成功,因为我也确实使用RequestQuotas和LimitRange设置了限制。但没有任何效果。
我在这里做错了什么?
你肯定没有足够的资源。仅对于Minikube上的Istio,您需要:
16384 MB 内存和 4 个 CPU
再加上上面未包含的Knative要求,您会发现您提供的资源还不够。