专栏首页TKETKE操作指南 - 容器化业务操作排错总结(十七)
原创

TKE操作指南 - 容器化业务操作排错总结(十七)

以下是针对wordpress 容器化,在操作过程中可能出现的问题,进行了总结。

问题一:docker push无法上传。

问题描述:docker push提示没有权限上传基础镜像至腾讯云Docker仓库。

解决方案:需要先登录远程仓库后,再进行上传。

问题二:构建失败。

问题描述:构建一直显示正在构建,且控制台显示空白,没有提示。

解决方案:检查Dockerfile第一行,镜像地址是否正确。

问题三:wordpress下的nginx容器挂载主机目录,启动失败。

问题描述:nginx容器启动失败,在工作负载中---Deployment---wordpress---日志提示:找不到/data/logs/nginx目录

解决方案:1.修改yaml文件,找到将"- mountPath: /data/logs" 修改为"- mountPath: /data/logs/nginx",点击完成即可。

2.在新建工作负载时,nginx实例中挂载路径要填写/data/logs/nginx,子路径填写nginx。

问题四:nginx容器启动失败。

问题描述:nginx容器启动失败,在事件中看到容器一直在不断重启。

解决方案:容器服务要已守护进程的方式启动,检查基础镜像中的/etc/nginx.conf配置文件,添加daemon off;

问题五:php容器启动失败。

问题描述:php容器启动失败,在事件中看到容器一直在不断重启。

解决方案:容器服务要已守护进程的方式启动,检查基础镜像中的/etc/php-fpm.conf的配置文件,修改daemonize=no

问题六:wordpress 容器服务部署成功,但是在浏览器访问php页面未更新。

问题描述:wordpress 容器服务部署成功,但是在浏览器访问php页面未更新。

解决方案:登录wordpress 容器控制台,检查php代码是否更新。

问题七:k8s集群报错Orphaned pod found - but volume paths are still present on disk

问题描述:今天在排查一个问题发现集群内节点非正常移除,被调度为not ready,集群上的服务运行在此节点上的状态都变成了unknown or nodelost导致有些服务无法正常运行了。

解决方案:先将异常节点剔除了,把服务调度正常后,查看kubectl,/var/log/syslog(ubuntu的messages)发现一直在刷以下的报错,从错误信息可以推测到,这台计算节点存在一个孤儿Pod,并且该Pod挂载了数据卷(volume),阻碍了Kubelet对孤儿Pod正常的回收清理,所以我们要清理该孤儿pod。

通过id号,进入kubelet的目录,可以发现里面装的是容器的数据,etc-hosts文件中还保留着podname

# cd /var/lib/kubelet/pods/86d60ee9-9fae-11e8-8cfc-525400290b20

/var/lib/kubelet/pods/86d60ee9-9fae-11e8-8cfc-525400290b20# ls
containers  etc-hosts  plugins  volumes

/var/lib/kubelet/pods/86d60ee9-9fae-11e8-8cfc-525400290b20# cat etc-hosts 
# Kubernetes-managed hosts file.
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
fe00::0	ip6-mcastprefix
fe00::1	ip6-allnodes
fe00::2	ip6-allrouters
172.16.1.180	omc-test-2509590746-mw56s

最后要删除该pod信息

# rm -rf 86d60ee9-9fae-11e8-8cfc-525400290b20

问题八:容器挂载NFS操作如下:

Events:
Type Reason Age From Message
Warning FailedMount 5m (x36 over lh) kubelet, 172.16.2.7 (combined from similar events): MountVolume.Setup failed for volume "runtime" : mount failed: exit status 32 
Mounting command: systemd-run
Mounting arguments: --description=Kubernetes transient mount for /var/lib/kubelet/pods/8b986f57-ff44-lle8-93d9-Oa587f800f51/voluines/kubernetes.io-nfs/runtime --scope -- mount -t nfs 172.16.3.6:/tspms/ts-development/ 
runtime /var/lib/kubelet/pods/8b986f57-ff44-lle8-93d9-Oa587f800f51/voluines/kubernetes.io-nfs/runtime
Output; Running scope as unit run-r6921855d6e6943fea742c4397f65d90e.scope._______________________________
mount.nfs: access denied by server while mounting 172.16.3.6:/tspms/ts-development/runtime
—Warning—FailedMount—12s (x36 over lh)—kubelet, 172.16.2.7—Unable to mount volumes for pod "tspms-5c97cb47bc-jzhkd_ts-development(8b986f57-ff44-lle8-93d9-Oa587f800f51)": timeout expired waiting for volumes to a 
ttach or mount for pod "ts-development'7"tspms-5c97cb47bc-jzhkd".list of unmounted volumes=[runtimeJ.list of unattached volumes=[runtime default-token-wfhg7) 

问题描述:挂载NFS v3版本 一定要加上fsid

nfs 挂载格式:

v4:
mount -t nfs4 vip:/ /localdir

v3:
mount -t nfs -o vers=3 vip:/fsid /localdir

解决方案:

总结来说 用v3挂载一定要加上fsid,在本文中对应为8pw2jq8u,具体的还得参照你cfs中对应的fsid

mount -t nfs 172.16.3.6:/8pw2jq8u/tspms/ts-development/runtime

那么要解决真正的问题,把服务启动正常,把yaml文件中volume的path调整为含有fsid的格式。

在yaml文件的体现为:

  volumes:
  - name: runtime
    nfs:
      path: /8pw2jq8u/tspms/ts-development/runtime
      server: 172.16.3.6

最后总结一点,在控制台中应该如何展示呢?其实还是一样的,在nfs ip后面加上fsid即可,fsid在cfs界面中获取。

问题九:kubernetes 基础集群排障

问题描述:集群状态及日志查看命令

解决方案(命令):

//node节点状态查看
# kubectl get nodes  //查看 Node 状态
# kubectl describe node 10.0.0.10   //查看 Node 节点状态,节点IP为10.0.0.10

//pod状态查看
# kubectl get pods -o wide    //查看pod状态
# kubectl -n kube-system get pods -o wide   //查看pod状态及运行节点
# kubectl describe pod nginx-2217866662-nhkqz  //查看 Pod 事件,kubectl describe pod <pod-name>


//k8s-dns状态查看
# PODNAME=$(kubectl -n kube-system get pod -l k8s-app=kube-dns -o jsonpath='{.items[0].metadata.name}')
# kubectl -n kube-system logs $PODNAME -c kubedns


//组件日志查看
# journalctl -l -u kubelet   //查看Kubelet 日志
# journalctl -l -u kube-proxy   //Kube-proxy 日志


原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • TKE操作指南 - TKE K8S问题排查(十八)

    问题描述:查看pod日志报错,Normal Killing 39s (x735 over 15h) kubelet, 10.179.80.31 Kill...

    亮哥说TKE
  • TKE操作指南 - TKE产品介绍(一)

    腾讯云容器服务(Tencent Kubernetes Engine,TKE)是高度可扩展的高性能容器管理服务,您可以在托管的云服务器实例集群上轻松运行应用程序。...

    亮哥说TKE
  • TKE操作指南 - 使用TKE CVM容器集群的业务优势(七)

    2.用户可通过访问services IP或者ingress 域名直接访问容器应用。

    亮哥说TKE
  • 解密自愈的Kubernetes:一步一步来

    https://www.msystechnologies.com/blog/decoding-the-self-healing-kubernetes-step-...

    CNCF
  • 浏览器中Get与POST请求的区别

    本文采用CC BY-NC-SA 3.0 Unported协议进行许可,转载请保留此文章链接

    Debug客栈
  • SaaS平台的运营人员,在其中扮演什么角色?

    跟互联网行业不一样,SaaS行业其实分工已经非常标准化,从后到前,在每个环节,都有对应的岗位角色。而最大的问题就是,运营不在其中。

    谢秉航
  • 如何将你写的框架添加cocoapod支持[转]

    // 代码仓库clone 地址 git clonehttps://github.com/boyXiong/XWSwiftRefreshT.git

    freesan44
  • “客户成功经理”是十八般武艺傍身还是巧妇难为无米之炊?

    路人甲:就是客户第一年合同结束前去和客户拉拉关系,争取客户能第二年续签,相当于销售角色吧。

    臭豆腐
  • MES 实施:从保姆型顾问到导师型顾问

    掐指算下来,在 MES 行业做保姆已经好几年了,把客户服务的也挺妥帖。也是该提升下自己的层次逐渐向导师型顾问转变了,当然这也对自己的业务能力有更高的要求。所以从...

    李英杰同学
  • [2013.9.6]说说Win7的Aero效果

    最近看到别人写的一个例程,就是把控制台弄成了全透明,我把源码下载下来做了研 究。

    ApacheCN_飞龙

扫码关注云+社区

领取腾讯云代金券