Kubernetes pod将不会启动,因为;没有与以下所有谓词匹配的节点可用::cpu不足“;
我不确定为什么会出现错误Kubernetes pod将不会启动,因为;没有与以下所有谓词匹配的节点可用::cpu不足“;,kubernetes,Kubernetes,我不确定为什么会出现错误没有与以下所有谓词匹配的节点可用::cpu不足(1) 我不记得设置过任何CPU限制。除非这是某种默认情况 kubectl-wordpress的输出: Name: wordpress-114465096-bn4rv Namespace: default Node: / Labels: app=wordpress pod-template-hash=114465096 Annotations: kubernetes.io
没有与以下所有谓词匹配的节点可用::cpu不足(1)
我不记得设置过任何CPU限制。除非这是某种默认情况
kubectl-wordpress的输出:
Name: wordpress-114465096-bn4rv
Namespace: default
Node: /
Labels: app=wordpress
pod-template-hash=114465096
Annotations: kubernetes.io/created-by={"kind":"SerializedReference","apiVersion":"v1","reference":{"kind":"ReplicaSet","namespace":"default","name":"wordpress-114465096","uid":"fff460df-7c4c-11e7-b3fd-42010a840026...
kubernetes.io/limit-ranger=LimitRanger plugin set: cpu request for container wordpress; cpu request for container cloudsql-proxy; cpu request for container nginx
Status: Pending
IP:
Controllers: ReplicaSet/wordpress-114465096
Containers:
wordpress:
Image: wordpress:latest
Port:
Requests:
cpu: 100m
Environment:
WORDPRESS_HOST: localhost
WORDPRESS_DB_USERNAME: <set to the key 'username' in secret 'cloudsql-db-credentials'> Optional: false
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-ql6k8 (ro)
/var/www/html from wordpress-persistent-storage (rw)
cloudsql-proxy:
Image: gcr.io/cloudsql-docker/gce-proxy:1.09
Port:
Command:
/cloud_sql_proxy
--dir=/cloudsql
-instances=inspiring-tower-99712:europe-west1:wordpressdb=tcp:3306
-credential_file=/secrets/cloudsql/credentials.json
Requests:
cpu: 100m
Environment: <none>
Mounts:
/cloudsql from cloudsql (rw)
/etc/ssl/certs from ssl-certs (rw)
/secrets/cloudsql from cloudsql-instance-credentials (ro)
/var/run/secrets/kubernetes.io/serviceaccount from default-token-ql6k8 (ro)
nginx:
Image: nginx:latest
Port: 80/TCP
Requests:
cpu: 100m
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-ql6k8 (ro)
Conditions:
Type Status
PodScheduled False
Volumes:
wordpress-persistent-storage:
Type: GCEPersistentDisk (a Persistent Disk resource in Google Compute Engine)
PDName: wordpress-disk
FSType: ext4
Partition: 0
ReadOnly: false
cloudsql-instance-credentials:
Type: Secret (a volume populated by a Secret)
SecretName: cloudsql-instance-credentials
Optional: false
ssl-certs:
Type: HostPath (bare host directory volume)
Path: /etc/ssl/certs
cloudsql:
Type: EmptyDir (a temporary directory that shares a pod's lifetime)
Medium:
default-token-ql6k8:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-ql6k8
Optional: false
QoS Class: Burstable
Node-Selectors: <none>
Tolerations: node.alpha.kubernetes.io/notReady=:Exists:NoExecute for 300s
node.alpha.kubernetes.io/unreachable=:Exists:NoExecute for 300s
Events:
FirstSeen LastSeen Count From SubObjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------- ------ -------
1h 22s 265 default-scheduler Warning FailedScheduling No nodes are available that match all of the following predicates:: Insufficient cpu (1).
配置文件(production.yaml):
这个错误是不言自明的,您需要300m(pod中的每个容器100m)的cpu,而您的节点没有预算来安排它。(您似乎只有一个节点群集?)
您可以描述该节点以查看已经调度了多少cpu时间
我不确定是什么将这些请求添加到您的部署中,因为您没有在模板中说明这些需求。可能是资源配额。除了配置中指定的容器外,还有其他容器在运行。默认情况下,它们由Kubernetes配置,并在默认命名空间中未显示的kube系统
命名空间中运行
您可以通过kubectl get pods--all namespace
查看所有pod
这些额外的容器占用了单节点CPU配额的72%
因此,cpu配额为10%的3个容器将超过cpu配额的100%(因为72%+(3*10)>100%)
至于为什么72%的集装箱被分配给其他集装箱,这里有一个问题:
可能有用的其他资源:
但是,通过向集群添加额外的节点,我能够让容器在有足够CPU的情况下运行。此外,高cpu实例在谷歌云上的分配效率似乎更高。我也遇到了同样的错误,但我创建了一个只有一个节点的集群。因此,我使用以下命令用最小和最大节点数更新了集群:
gcloud container clusters update <mycluster-name> --enable-autoscaling --min-nodes=1 --max-nodes=15
gcloud容器集群更新--启用自动缩放--最小节点=1--最大节点=15
就在下一刻,吊舱/吊舱的状态从挂起变为运行 是的,它目前是一个单节点集群。这些四行诗放在哪里?单个节点有多少“m”?我应该咨询哪些资源/文档?我通过更新部署配置(通过kubectl apply-f production.yaml
)得到错误。kubectl descripe节点将在节点上运行cpu。我相信1CPU=1000m。表达式0.1相当于表达式100m。这里有更多的细节。我在配置中只有3个容器,我假设这意味着0.3CPU,但是仍然有一些内置容器在运行。至于为什么它们被分配了我节点的70%——这是另一个问题。。。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: wordpress
labels:
app: wordpress
spec:
replicas: 1
selector:
matchLabels:
app: wordpress
template:
metadata:
labels:
app: wordpress
spec:
terminationGracePeriodSeconds: 30
containers:
- image: wordpress:latest
name: wordpress
imagePullPolicy: "Always"
env:
- name: WORDPRESS_HOST
value: localhost
- name: WORDPRESS_DB_USERNAME
valueFrom:
secretKeyRef:
name: cloudsql-db-credentials
key: username
volumeMounts:
- name: wordpress-persistent-storage
mountPath: /var/www/html
- image: nginx:latest
name: nginx
ports:
- containerPort: 80
name: nginx
- image: gcr.io/cloudsql-docker/gce-proxy:1.09
name: cloudsql-proxy
command: ["/cloud_sql_proxy", "--dir=/cloudsql",
"-instances=inspiring-tower-99712:europe-west1:wordpressdb=tcp:3306",
"-credential_file=/secrets/cloudsql/credentials.json"]
volumeMounts:
- name: cloudsql-instance-credentials
mountPath: /secrets/cloudsql
readOnly: true
- name: ssl-certs
mountPath: /etc/ssl/certs
- name: cloudsql
mountPath: /cloudsql
volumes:
- name: wordpress-persistent-storage
gcePersistentDisk:
pdName: wordpress-disk
fsType: ext4
- name: cloudsql-instance-credentials
secret:
secretName: cloudsql-instance-credentials
- name: ssl-certs
hostPath:
path: /etc/ssl/certs
- name: cloudsql
emptyDir:
gcloud container clusters update <mycluster-name> --enable-autoscaling --min-nodes=1 --max-nodes=15