前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TKE操作指南 - 容器化业务操作排错总结(十七)

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

原创
作者头像
亮哥说TKE
修改2019-08-15 11:23:30
1.4K0
修改2019-08-15 11:23:30
举报
文章被收录于专栏:TKETKE

以下是针对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

代码语言:javascript
复制
# 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信息

代码语言:javascript
复制
# rm -rf 86d60ee9-9fae-11e8-8cfc-525400290b20

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

代码语言:javascript
复制
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 挂载格式:

代码语言:javascript
复制
v4:
mount -t nfs4 vip:/ /localdir

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

解决方案:

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

代码语言:javascript
复制
mount -t nfs 172.16.3.6:/8pw2jq8u/tspms/ts-development/runtime

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

在yaml文件的体现为:

代码语言:javascript
复制
  volumes:
  - name: runtime
    nfs:
      path: /8pw2jq8u/tspms/ts-development/runtime
      server: 172.16.3.6

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

问题九:kubernetes 基础集群排障

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

解决方案(命令):

代码语言:javascript
复制
//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 日志


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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 以下是针对wordpress 容器化,在操作过程中可能出现的问题,进行了总结。
  • 问题一:docker push无法上传。
  • 问题二:构建失败。
  • 问题三:wordpress下的nginx容器挂载主机目录,启动失败。
  • 问题四:nginx容器启动失败。
  • 问题五:php容器启动失败。
  • 问题六:wordpress 容器服务部署成功,但是在浏览器访问php页面未更新。
  • 问题七:k8s集群报错Orphaned pod found - but volume paths are still present on disk
  • 问题八:容器挂载NFS操作如下:
  • 问题九:kubernetes 基础集群排障
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档