关键词:
【中文标题】pod 没有在 kubernetes 中创建,但存在部署?【英文标题】:pod are not getting created in kubernetes but deployment exists? 【发布时间】:2019-10-25 17:56:41 【问题描述】:我有一个在 Azure 云上运行的集群。我在该集群上部署了对等服务。但是该部署的 pod 没有被创建。我还扩大了该分解的副本集。
即使我尝试创建 docker busybox 映像的简单部署,它也无法创建 pod。
请指导我可能是什么问题?
编辑
描述部署的输出
Name: peer0-org-myorg
Namespace: internal
CreationTimestamp: Tue, 28 May 2019 06:12:21 +0000
Labels: cattle.io/creator=norman
workload.user.cattle.io/workloadselector=deployment-internal-peer0-org-myorg
Annotations: deployment.kubernetes.io/revision=1
field.cattle.io/creatorId=user-b29mj
field.cattle.io/publicEndpoints=null
Selector: workload.user.cattle.io/workloadselector=deployment-internal-peer0-org-myorg
Replicas: 1 desired | 1 updated | 1 total | 1 available | 0 unavailable
StrategyType: Recreate
MinReadySeconds: 0
Pod Template:
Labels: workload.user.cattle.io/workloadselector=deployment-internal-peer0-org-myorg
Annotations: cattle.io/timestamp=2019-06-11T08:19:40Z
field.cattle.io/ports=[["containerPort":7051,"dnsName":"peer0-org-myorg-hostport","hostPort":7051,"kind":"HostPort","name":"7051tcp70510","protocol":"TCP","sourcePort":7051,"containerPo...
Containers:
peer0-org-myorg:
Image: hyperledger/fabric-peer:1.4.0
Ports: 7051/TCP, 7053/TCP
Host Ports: 7051/TCP, 7053/TCP
Environment:
CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS: couchdb0:5984
CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD: root
CORE_LEDGER_STATE_COUCHDBCONFIG_USERNAME: root
CORE_LEDGER_STATE_STATEDATABASE: CouchDB
CORE_LOGGING_CAUTHDSL: INFO
CORE_LOGGING_GOSSIP: WARNING
CORE_LOGGING_GRPC: WARNING
CORE_LOGGING_MSP: WARNING
CORE_PEER_ADDRESS: peer0-org-myorg-com:7051
CORE_PEER_ADDRESSAUTODETECT: true
CORE_PEER_FILESYSTEMPATH: /var/hyperledger/peers/peer0/production
CORE_PEER_GOSSIP_EXTERNALENDPOINT: peer0-org-myorg-com:7051
CORE_PEER_GOSSIP_ORGLEADER: false
CORE_PEER_GOSSIP_USELEADERELECTION: true
CORE_PEER_ID: peer0.org.myorg.com
CORE_PEER_LOCALMSPID: orgMSP
CORE_PEER_MSPCONFIGPATH: /mnt/crypto/crypto-config/peerOrganizations/org.myorg.com/peers/peer0.org.myorg.com/msp
CORE_PEER_PROFILE_ENABLED: true
CORE_PEER_TLS_CERT_FILE: /mnt/crypto/crypto-config/peerOrganizations/org.myorg.com/peers/peer0.org.myorg.com/tls/server.crt
CORE_PEER_TLS_ENABLED: false
CORE_PEER_TLS_KEY_FILE: /mnt/crypto/crypto-config/peerOrganizations/org.myorg.com/peers/peer0.org.myorg.com/tls/server.key
CORE_PEER_TLS_ROOTCERT_FILE: /mnt/crypto/crypto-config/peerOrganizations/org.myorg.com/peers/peer0.org.myorg.com/tls/ca.crt
CORE_PEER_TLS_SERVERHOSTOVERRIDE: peer0.org.myorg.com
CORE_VM_ENDPOINT: unix:///host/var/run/docker.sock
FABRIC_LOGGING_SPEC: DEBUG
Mounts:
/host/var/run from worker1-dockersock (ro)
/mnt/crypto from crypto (ro)
/var/hyperledger/peers from vol2 (rw)
Volumes:
crypto:
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: worker1-crypto-pvc
ReadOnly: false
vol2:
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: worker1-pvc
ReadOnly: false
worker1-dockersock:
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: worker1-dockersock
ReadOnly: false
Conditions:
Type Status Reason
---- ------ ------
Progressing True NewReplicaSetAvailable
Available True MinimumReplicasAvailable
OldReplicaSets: peer0-org-myorg-6d6645ddd7 (1/1 replicas created)
NewReplicaSet: <none>
Events: <none>
【问题讨论】:
kubectl describe deploy %deploymentname%
看看它是否说了什么有意义的东西
正如你所说,部署已创建但没有 pod,我们需要的是副本集的输出来找出它无法创建 pod 的原因,你能做一个kubectl get replicaset
然后找到对应于你的部署然后kubectl describe replicaset <replicaset_name>
【参考方案1】:
您的 pod 可能被破坏的原因有上百万种,您可以获得大量信息,这些信息可以为您提供有关未创建 pod 的原因的更多信息。我会开始:
豆荚在说什么:
kubectl get pods --all-namespaces -o wide
如果您可以看到 pod 但它们有错误,那么错误说明了什么。进一步描述破碎的豆荚。
kubectl describe pod <pod-name>
或者抓取日志
kubectl logs <pod-name>
您的部署可能出了点问题。检查部署。
kubectl get deployments
描述部署(如上面的 pod),查找错误。
在您提供更多信息之前,我们无法真正帮助您。到目前为止,您进行了哪些调试尝试?显示了哪些错误,您在哪里看到它们?尝试创建 pod 时实际发生的情况。
kubectl 获取/描述/记录所有内容,让我们知道实际发生了什么。
这是一个很好的起点:
Troubleshoot clusters Kubectl command cheatsheet编辑:在 Azure 门户中添加了故障排除图片(在下面的 cmets 中提到)
【讨论】:
kubectl get pods --all-namespaces -o wide 我没有看到任何有关部署的同行。这是在没有任何 pod 的情况下创建部署的问题。检查更新问题 我可以看到对等方的部署,但看不到 pod 你能澄清最后的评论吗?当您运行get deployments
时,您正在搜索的部署在列表中还是不存在?如果你运行kubectl rollout status <deployment-name>
会怎样。
如果您要部署的部署已正确编写和应用,您应该会看到至少尝试创建自己的 pod。我们会在列表中看到它们,并且至少能够看到错误。部署本身似乎有些不正确。检查您正在部署的 yaml 是否有错误。手动将此 yaml 应用到您的集群并 (kubectl apply
) 检查结果。 get deployments
返回什么?描述?豆荚看起来像什么?他们现在在吗?
还有!转到 Azure 门户。转到有问题的资源组。检查“活动”选项卡中的事件。这里有错误吗?此外,在左上角的概览选项卡下,您应该有一个指向“部署”的链接。也检查这个是否有错误。您的失败部署应在此处列出,它可以告诉您出了什么问题。【参考方案2】:
kube-apiserver
(k8s 主平面组件)负责为您的 API 请求提供服务,例如:kubectl create ..
或 kubectl scale
...
现在将这些 kubernetes 资源的状态实际维护到所需状态是kube-controller-manager
(另一个 k8s 主平面组件)的工作。
此外,将这些资源调度到节点是 kube-scheduler
(另一个 k8s 主平面组件)的工作。
上述信息并假设(我认为)您正在使用托管 Kubernetes,因此上述组件由您的云提供商管理。但是根据我的(本地 kubernetes)经验,我可以说,如果您的部署命令正确执行,则意味着 kube-apiserver 工作正常,但 kube-controller 工作不正常。此外,如果 pod 出现但卡在创建状态,那么这是 kube-scheduler 的问题,它没有完成它的工作。
总而言之,kube-controller和kube-scheduler的日志值得查看。
【讨论】:
我们正在使用牧场主。有时我们会收到诸如控制器管理器不健康的警报 @PankajCheema 当控制器管理器不健康时,将发生以下情况(例如):您的命令kubectl create/scale/.. ..
将成功执行,但您的资源(工作负载/pod)不会实际创建或扩展。跨度>
【参考方案3】:
我在 Mac 上使用“Docker Desktop”时遇到了类似的情况,并通过增加“Docker Desktop Preferences”中的 Docker 资源来克服...
所以,请尝试增加您的 Kubernetes 集群资源。
【讨论】:
Kubernetes 中的网络策略问题
】Kubernetes中的网络策略问题【英文标题】:Issuewithnetworkpoliciesinkubernetes【发布时间】:2020-08-2400:56:22【问题描述】:创建一个命名空间取证取证命名空间内的所有pod都不能与外界通信(出口隔离)在默认命名空间中创建一个名... 查看详情
如何在 kubernetes Jobs 中创建 init 容器?
】如何在kubernetesJobs中创建init容器?【英文标题】:HowtocreateinitcontainerinkubernetesJobs?【发布时间】:2020-08-0604:18:26【问题描述】:在job.yaml下面用于创建工作。未创建初始化容器。[root@app]#kubectl版本客户端版本:version.InfoMajor:"1",M... 查看详情
pods和nodes
参考技术AKubernetesPods当你在模块2中创建一个Deployment的时候,Kubernetes创建了一个Pod来放置你的应用实例。Pod是Kubernetes中的一个抽象概念,一个Pod包含了一组应用容器(比如Docker或者rkt)和这些容器共用的资源。这些资源包括:Po... 查看详情
Kubernetes OOM pod 被杀死,因为内核内存增长太多
】KubernetesOOMpod被杀死,因为内核内存增长太多【英文标题】:KubernetesOOMpodkilledbecausekernelmemorygrowstomuch【发布时间】:2019-05-1402:22:11【问题描述】:我正在开发一个java服务,它基本上在网络文件系统中创建文件来存储数据。它在... 查看详情
kubernetes网络策略,允许访问特定ip
】kubernetes网络策略,允许访问特定ip【英文标题】:kubernetesnetworkpolicies,allowaccesstoaspecificip【发布时间】:2020-10-0602:20:38【问题描述】:我有以下任务要执行创建一个名为forensics的命名空间取证命名空间内的所有pod都不应与外界... 查看详情
用户“system:anonymous”无法在命名空间“default”的 API 组“”中创建资源“pods”
...户“system:anonymous”无法在命名空间“default”的API组“”中创建资源“pods”【英文标题】:User"system:anonymous"cannotcreateresource"pods"inAPIgroup""inthenamespace"default"【发布时间】:2019-10-2209:27:14【问题描述】... 查看详情
访问在 kubernetes 集群中创建的微服务 (Laravel/Lumen PHP)
】访问在kubernetes集群中创建的微服务(Laravel/LumenPHP)【英文标题】:Accessingamicroservicecreatedinsideakubernetescluster(Laravel/LumenPHP)【发布时间】:2021-08-0807:00:07【问题描述】:我在理解和让它发挥作用时遇到了一些麻烦。所以基本上我已... 查看详情
在 K3s Kubernetes 中创建 NFS 共享的链接
】在K3sKubernetes中创建NFS共享的链接【英文标题】:CreatingalinktoanNFSshareinK3sKubernetes【发布时间】:2020-10-0422:24:16【问题描述】:我对Kubernetes很陌生,并试图让node-red在一个小的树莓派集群上运行我很高兴地做到了这一点,但注意... 查看详情
有没有办法访问 Istio 在 GKE 中创建的 promsd 服务?
】有没有办法访问Istio在GKE中创建的promsd服务?【英文标题】:IsthereawayaccessthepromsdservicecreatedbyIstioinGKE?【发布时间】:2020-05-2020:38:38【问题描述】:我想从集群中的另一个pod访问由Istio运行的Prometheus服务。在我使用Kind的本地开... 查看详情
如何使用 RBAC API 在 Kubernetes 中创建受限于命名空间的用户/组?
】如何使用RBACAPI在Kubernetes中创建受限于命名空间的用户/组?【英文标题】:Howtocreateusers/groupsrestrictedtonamespaceinKubernetesusingRBACAPI?【发布时间】:2017-05-0915:07:30【问题描述】:问题我想向dev组内的许多不同的开发人员(不同的主... 查看详情
无法在 Kubernetes 集群中执行 GitLab Runner:无法在命名空间“gitlab”中的 API 组“”中创建资源“秘密”
】无法在Kubernetes集群中执行GitLabRunner:无法在命名空间“gitlab”中的API组“”中创建资源“秘密”【英文标题】:NotabletoexecuteGitLabRunnerinKubernetescluster:cannotcreateresource"secrets"inAPIgroup""inthenamespace"gitlab"【发... 查看详情
有没有办法在 kubernetes 部署(或 statefulset)中为每个 pod 创建一个持久卷?
】有没有办法在kubernetes部署(或statefulset)中为每个pod创建一个持久卷?【英文标题】:Isthereawaytocreateapersistentvolumeperpodinakubernetesdeployment(orstatefulset)?【发布时间】:2019-04-2308:30:22【问题描述】:我目前正在创建一个kubernetes部... 查看详情
如何在 kubernetes 中使用 yaml 文件删除和重新创建 pod
】如何在kubernetes中使用yaml文件删除和重新创建pod【英文标题】:Howtodeleteandrecreatepodsusingyamlfileinkubernetes【发布时间】:2018-08-1723:34:36【问题描述】:我有一个yaml文件,可用于创建pod。我正在使用仪表板,所以我可以简单地选择... 查看详情
如何使用heredoc在k8s pod yaml定义中创建yaml文件?
】如何使用heredoc在k8spodyaml定义中创建yaml文件?【英文标题】:Howtouseheredoctocreateayamlfileink8spodyamldefinition?【发布时间】:2021-12-0913:36:15【问题描述】:我想在k8spod启动后创建一个yaml,在我之前的尝试中,我只是上传yaml文件并使... 查看详情
没有 pod 指标的 Kubernetes
】没有pod指标的Kubernetes【英文标题】:Kuberneteswithoutpodmetrics【发布时间】:2020-05-2221:05:38【问题描述】:我正在尝试将指标部署到Kubernetes,但发生了一些非常奇怪的事情,我有一个工人和一个主人。我有以下pod列表:NAMESPACENAME... 查看详情
kubernetes第七篇:pod进阶controller进阶resource和dashboard(代码片段)
文章目录一、前言二、Pod进阶学习之路2.1Pod的生命周期Lifecycle2.2Pod的重启策略RestartPolicy2.3静态Pod2.4Pod的健康检查2.5ConfigMap2.5.1ConfigMap的创建创建方式1:命令行创建configmap创建方式2:根据配置文件中创建configmap创建方式3... 查看详情
8.k8s资源部署
参考技术A很少在Kubernetes中直接创建一个Pod,甚至是单实例(Singleton)的Pod。这是因为Pod被设计成了相对临时性的、用后即抛的一次性实体,不支持高可用。一般使用工作负载资源来创建和管理多个Pod。资源的控制器能够处理副... 查看详情
terraform-kubernetes-provider 如何从文件中创建秘密?
】terraform-kubernetes-provider如何从文件中创建秘密?【英文标题】:terraform-kubernetes-providerhowtocreatesecretfromfile?【发布时间】:2019-08-1601:38:11【问题描述】:我正在使用terraformkubernetes-provider,我想将类似kubectl的命令翻译成TF:kubectlc... 查看详情