我遇到一个问题,我想要运行的容器似乎没有在我的群集上启动。
我已经尝试过寻找可能的解决方案,但是有一个令人惊讶的缺乏信息来帮助解决这个问题或其中的任何问题。
这是我能收集的最多:
$ kubectl describe pods/elasticsearch
Name: elasticsearch
Namespace: default
Image(s): my.image.host/my-project/elasticsearch
Node: /
Labels: <none>
Status: Pending
Reason:
Message:
IP:
Replication Controllers: <none>
Containers:
elasticsearch:
Image: my.image.host/my-project/elasticsearch
Limits:
cpu: 100m
State: Waiting
Ready: False
Restart Count: 0
Events:
FirstSeen LastSeen Count From SubobjectPath Reason Message
Mon, 19 Oct 2015 10:28:44 -0500 Mon, 19 Oct 2015 10:34:09 -0500 12 {scheduler } failedScheduling no nodes available to schedule pods
我也看到了这个:
$ kubectl get pod elasticsearch -o wide
NAME READY STATUS RESTARTS AGE NODE
elasticsearch 0/1 Pending 0 5s
我想我想知道:存在哪些先决条件以便我可以确信我的容器将在容器引擎中运行?在这种情况下我需要做什么才能让它运行?
这是我的yml
文件:
apiVersion: v1
kind: Pod
metadata:
name: elasticsearch
spec:
containers:
- name: elasticsearch
image: my.image.host/my-project/elasticsearch
ports:
- containerPort: 9200
resources:
volumeMounts:
- name: elasticsearch-data
mountPath: /usr/share/elasticsearch
volumes:
- name: elasticsearch-data
gcePersistentDisk:
pdName: elasticsearch-staging
fsType: ext4
以下是关于我的节点的更多输出:
$ kubectl get nodes
NAME LABELS STATUS
gke-elasticsearch-staging-00000000-node-yma3 kubernetes.io/hostname=gke-elasticsearch-staging-00000000-node-yma3 NotReady
答案 0 :(得分:5)
您的群集中只有一个节点,其状态位于NotReady
。所以你将无法安排任何豆荚。您可以通过查看/var/log/kubelet.log
来尝试确定节点未准备就绪的原因。您还可以向群集中添加新节点(将群集大小扩展到2)或删除节点(它将自动替换为实例组管理器),以查看这些选项中的任何一个是否为您提供了工作节点。
答案 1 :(得分:1)
调度程序似乎无法在群集中看到任何节点。您可以运行kubectl get nodes
和gcloud compute instances list
来确认群集中是否有任何节点。在创建群集时是否正确指定了节点数(--num-nodes)?