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 日志不返回任何内容(空白)的主要内容,如果未能解决你的问题,请参考以下文章
Kubernetes集群安装kube-prometheus后无法执行kubectl top node
使用kubeadm部署k8s集群05-配置kubectl访问kube-apiserver