kubectl 日志不返回任何内容(空白)

Posted

技术标签:

【中文标题】kubectl 日志不返回任何内容(空白)【英文标题】:kubectl logs returns nothing (blank) 【发布时间】:2019-06-05 16:38:14 【问题描述】:
kubectl logs web-deployment-76789f7f64-s2b4r

什么都不返回!控制台提示返回没有错误。

我有一个处于 CrashLoopbackOff 循环中的 pod(但无法诊断它)-->

web-deployment-7f985968dc-rhx52       0/1       CrashLoopBackOff   6          7m

我在 Windows 上使用带有 kubectl 的 Azure AKS。我已经在没有问题的情况下运行了这个集群几个月。该容器使用 docker-compose 在我的工作站上运行良好。

kubectl describe 并没有太大帮助 - 那里没有有用的信息。

kubectl describe pod web-deployment-76789f7f64-s2b4r

Name:           web-deployment-76789f7f64-j6z5h
Namespace:      default
Node:           aks-nodepool1-35657602-0/10.240.0.4
Start Time:     Thu, 10 Jan 2019 18:58:35 +0000
Labels:         app=stweb
                pod-template-hash=3234593920
Annotations:    <none>
Status:         Running
IP:             10.244.0.25
Controlled By:  ReplicaSet/web-deployment-76789f7f64
Containers:
  stweb:
    Container ID:   docker://d1e184a49931bd01804ace51cb44bb4e3479786ec0df6e406546bfb27ab84e31
    Image:          virasana/stwebapi:2.0.20190110.20
    Image ID:       docker-pullable://virasana/stwebapi@sha256:2a1405f30c358f1b2a2579c5f3cc19b7d3cc8e19e9e6dc0061bebb732a05d394
    Port:           80/TCP
    Host Port:      0/TCP
    State:          Waiting
      Reason:       CrashLoopBackOff
    Last State:     Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Thu, 10 Jan 2019 18:59:27 +0000
      Finished:     Thu, 10 Jan 2019 18:59:27 +0000
    Ready:          False
    Restart Count:  3
    Environment:
      SUPPORT_TICKET_DEPLOY_DB_CONN_STRING_AUTH:  <set to the key 'SUPPORT_TICKET_DEPLOY_DB_CONN_STRING_AUTH' in secret 'mssql'>  Optional: false
      SUPPORT_TICKET_DEPLOY_DB_CONN_STRING:       <set to the key 'SUPPORT_TICKET_DEPLOY_DB_CONN_STRING' in secret 'mssql'>       Optional: false
      SUPPORT_TICKET_DEPLOY_JWT_SECRET:           <set to the key 'SUPPORT_TICKET_DEPLOY_JWT_SECRET' in secret 'mssql'>           Optional: false
      KUBERNETES_PORT_443_TCP_ADDR:               kscluster-rgksk8s-2cfe9c-8af10e3f.hcp.eastus.azmk8s.io
      KUBERNETES_PORT:                            tcp://kscluster-rgksk8s-2cfe9c-8af10e3f.hcp.eastus.azmk8s.io:443
      KUBERNETES_PORT_443_TCP:                    tcp://kscluster-rgksk8s-2cfe9c-8af10e3f.hcp.eastus.azmk8s.io:443
      KUBERNETES_SERVICE_HOST:                    kscluster-rgksk8s-2cfe9c-8af10e3f.hcp.eastus.azmk8s.io
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-98c7q (ro)
Conditions:
  Type           Status
  Initialized    True 
  Ready          False 
  PodScheduled   True 
Volumes:
  default-token-98c7q:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-98c7q
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type     Reason                 Age               From                               Message
  ----     ------                 ----              ----                               -------
  Normal   Scheduled              1m                default-scheduler                  Successfully assigned web-deployment-76789f7f64-j6z5h to aks-nodepool1-35657602-0
  Normal   SuccessfulMountVolume  1m                kubelet, aks-nodepool1-35657602-0  MountVolume.SetUp succeeded for volume "default-token-98c7q"
  Normal   Pulled                 24s (x4 over 1m)  kubelet, aks-nodepool1-35657602-0  Container image "virasana/stwebapi:2.0.20190110.20" already present on machine
  Normal   Created                22s (x4 over 1m)  kubelet, aks-nodepool1-35657602-0  Created container
  Normal   Started                22s (x4 over 1m)  kubelet, aks-nodepool1-35657602-0  Started container
  Warning  BackOff                7s (x6 over 1m)   kubelet, aks-nodepool1-35657602-0  Back-off restarting failed container

关于如何进行的任何想法?

非常感谢!

【问题讨论】:

【参考方案1】:

这是因为 pod 已经被销毁了,尝试这样做:

kubectl logs web-deployment-76789f7f64-s2b4r --previous

这将显示上一个 pod 的日志。

【讨论】:

这是空白太(最初)然后将其变形为未能获得容器状态“搬运工”“4992267bdc144301f79dadec0715950bdf4c7f370f6ef1484e58f15cb20d5f0b”:RPC错误:代码=未知DESC =错误:没有这样的容器:4992267bdc144301f79dadec0715950bdf4c7f370f6ef1484e58f15cb20d5f0b 跨度> 在您的问题中显示来自kubectl describe po xxx 的完整输出 当 pod 状态显示为“已完成”以及“CrashLoopbackOff”时发生 完成了吗?我说这意味着您的 pod 配置错误 这是我需要的。谢谢!【参考方案2】:

我正在使用多阶段 docker 构建,并且正在使用错误的目标进行构建! (我克隆了一个以前的 Visual Studio docker build 任务,它有以下参数:

--target=test

因为“测试”构建阶段没有定义入口点,所以容器正在启动,然后退出而没有记录任何内容!这就是 kubectl logs 返回空白的原因。

我把它改成了

--target=final

一切正常!

我的 Dockerfile 看起来像这样:

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80

FROM microsoft/dotnet:2.1-sdk AS build

WORKDIR /src

COPY . .

WORKDIR "/src"

RUN dotnet clean ./ST.Web/ST.Web.csproj
RUN dotnet build ./ST.Web/ST.Web.csproj -c Release -o /app

FROM build AS test
RUN dotnet tool install -g dotnet-reportgenerator-globaltool
RUN chmod 755 ./run-tests.sh && ./run-tests.sh

FROM build AS publish
RUN dotnet publish ./ST.Web/ST.Web.csproj -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "ST.Web.dll"]

【讨论】:

以上是关于kubectl 日志不返回任何内容(空白)的主要内容,如果未能解决你的问题,请参考以下文章

获取访问 kubectl 的永久证书

Kubernetes集群安装kube-prometheus后无法执行kubectl top node

使用kubeadm部署k8s集群05-配置kubectl访问kube-apiserver

kubectl常用命令

如果搜索参数为空白或缺失/错误,我如何使用 Xpath 函数“contains()”不返回任何内容?

Yii2 - JSONP 响应不返回任何内容(空白)并且不起作用,但 JSON 可以