Kubernetes应用迁移问题定位
这个帖子记录所有的应用迁移中遇到的问题。
- 关于镜像无法启动后无法定位问题
在原有的Dockerfile中修改,加入
RUN echo "aaa" > /etc/a.log CMD ["tail",“-f","/etc/a.log"]
然后通过kubectl exec -it ... bash进去手工运行进行定位
- Zookeeper基本操作命令
查找生产者消费者信息
./zkCli.sh -server 192.168.5.130:
ls /

ls /dubbo

查看消费者
ls /dubbo/com.ivan.service.provider.UserService/consumers
查看生产者
ls /dubbo/com.ivan.service.provider.UserService/providers
- 删除一直在Terminating状态的Pod
使用命令
kubectl delete pod NAME --grace-period= --force
之前采用的命令是
systemctl restart flanneld docker kubelet kube-proxy
但问题是会把这台主机所有的容器重新启动一次。
仔细观察了一下有几台经常处于这种状态的主机,发现机器配置是2C,4G的内存,tomcat配置的是Xmx1G,但因为程序的原因,每次启动以后,如果3个实例分在三台不同的机器上,最后宿主机的free memory在500-700m,程序吃掉大量内存,这时候如果一旦重新部署,经常发生两个实例同在一台机器上的情况时,就会出现无法释放资源,一直在terminating的状态,重新启动也花费很长的时间。
但如果三个实例均分三台机器,系统还算能保持正常,因此修改部署文件为
在spec下加入podAntiAffinity选项。
template:
metadata:
labels:
app: zk
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: "app"
operator: In
values:
- zk
topologyKey: "kubernetes.io/hostname"
containers:
- name: k8szk
imagePullPolicy: Always
image: gcr.io/google_samples/k8szk:v3
resources:
requests:
memory: "2Gi"
cpu: "500m"
- 字符集
JAVA_OPTS="-Xms64m -Xmx256m -XX:MaxPermSize=128m -Dfile.encoding=GBK $JAVA_OPTS"
登录容器内部,通过
locale -a
查看所有的字符集,然后在Dockerfile中设置
ENV LANG C.UTF-
c.UTF-8本身是带有中文字符支持的。
如果有log4j,需要在properties文件中设置
log4j.appender.console.Encoding=UTF-
log4j.appender.logfile.Encoding=UTF-
- 容器内外的文件拷贝
kubectl cp pod_id:/pod_directory /host_directory
- 容器化的Nginx出现host not found in upstream
原理是nginx会先解析你的upstream,如果这个upstream指向一个Kubernetes服务,而这个服务没有启动的话,就无法解析,从而导致Nginx停止运行或者启动不成功。
解决办法,让nginx动态的解析upstream,而不是在启动的时候静态解析,这需要在location中间来设置,比如
upstream fp_tomcat {
server tomcattest:8080
}
location /foo {
resolver 127.0.0.11 ipv6=off;
# or some other DNS (you company/internal DNS server)
#resolver 8.8.8.8 valid=30s;
set $upstream_foo fp_tomcat;
proxy_pass http://$upstream_foo;
}
启动的时候,如果tomcattest服务不存在,日志中会报错,但不会影响其他的运行,当tomcattest启动以后,服务就会被成功调度
另外这个/foo路径千万小心,nginx会把foo路径带到后面的tomcat中,其实你访问
curl http://nginxsvc:nginxport/foo 就是访问tomcattest:8080/foo 这个基本问题折腾了半天。
Kubernetes应用迁移问题定位的更多相关文章
- VPGAME 的 Kubernetes 迁移实践
作者 | 伍冲斌 VPGAME 运维开发工程师 导读:VPGAME 是集赛事运营.媒体资讯.大数据分析.玩家社群.游戏周边等为一体的综合电竞服务平台.总部位于中国杭州,在上海和美国西雅图分别设立了电 ...
- VPGAME的Kubernetes迁移实践
VPGAME 是集赛事运营.媒体资讯.大数据分析.玩家社群.游戏周边等为一体的综合电竞服务平台.总部位于中国杭州,在上海和美国西雅图分别设立了电竞大数据研发中心和 AI 研发中心.本文将讲述 VPGA ...
- 阿里云开源 image-syncer 工具,容器镜像迁移同步的终极利器
为什么要做这个工具? 由于阿里云上的容器服务 ACK 在使用成本.运维成本.方便性.长期稳定性上大大超过公司自建自维护 Kubernets 集群,有不少公司纷纷想把之前自己维护 Kubernetes ...
- 【转载】Docker+Kubernetes 干货文章精选
主要涉及到以下关键字: K8S.Docker.微服务.安装.教程.网络.日志.存储.安全.工具.CI/CD.分布式.实践.架构等: 以下盘点2018年一些精选优质文章! 漫画形式: 漫画:小黄人学 S ...
- 基于Kubernetes 的Cloud Native 实战 培训课程安排
课程安排: 基于Kubernetes 的Cloud Native 实战 课程介绍: 云计算.虚拟化.容器微服务PaaS 技术已经广泛应用于新兴互联网企业(如电商平台.搜索引擎.社交平台网站.位置服务平 ...
- kubernetes备份恢复之velero
Velero备份.恢复.迁移Kubernetes集群 Velero简介 Velero 地址:https://github.com/vmware-tanzu/velero Velero属于VMWare开 ...
- Kubernetes部署-RKE自动化部署
一.简介 RKE:Rancher Kubernetes Engine 一个极其简单,闪电般快速的Kubernetes安装程序,可在任何地方使用. 二.准备工作 I.配置系统 系统:CentOS 7 / ...
- k8s入坑之路(13)服务迁移(定时任务 微服务 传统服务)
定时任务迁移kubernetes 服务迁移步骤 1.安装好java 2.安装好maven 项目打包 mvn package 测试传参运行 java -cp cronjob-demo-1.0-SNAPS ...
- 惊喜Skr人,Istio的创始人Shriram Rajagopalan手把手教你如何使用Istio
Shriram与来自Google.Lyft.IBM和其他公司的社区贡献者们一起并肩作战,积极地向Istio和Envoy项目作贡献.同时,Shriram是IBM的Amalgam8项目的创始成员之一.目前 ...
随机推荐
- Android各层推荐开发书籍及参考资料!!!
Android各层推荐开发书籍及参考资料 转自:http://blog.csdn.net/fancylovejava/article/details/8657058 Android系统按照架构来说一共 ...
- 深度学习方法:受限玻尔兹曼机RBM(四)对比散度contrastive divergence,CD
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入 上篇讲到,如果用Gibbs Sa ...
- Django 1.6在Windows平台下的配置
Django 1.6 在Windows平台下的配置 前言 最近两天研究了下Django1.6在Windows平台中的配置安装,服务器采用Apache.期间遇到过许多新手所遇到的各种问题,也算是一种宝贵 ...
- 数据结构与算法之--高级排序:shell排序和快速排序
高级排序比简单排序要快的多,简单排序的时间复杂度是O(N^2),希尔(shell)排序大约是O(N*(logN)^2),而快速排序是O(N*logN). 说明:下面以int数组的从小到大排序为例. 希 ...
- Java学习笔记(十三)——通过Netbeans开发环境生成oracle数据库中表的对应hibernate映射文件
[前面的话] 身体慢慢已经快好了,感觉真好,哈哈. 这篇文章要通过Hibernate对数据库进行操作,而Netbeans可以直接通过数据库逆向生成对应的映射文件.基础文章,选择性阅读. [步骤] 1. ...
- AC日记——明明的烦恼 bzoj 1005
1005 思路: prufer编码+组合数: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 1005 #de ...
- 安装jdk8-linux版
下载jdk http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 安装 rpm -iv ...
- 戴尔笔记本Inspiron 7560(灵越) 加装固态硬盘从选购固态硬盘到系统迁移到设置SSD为第一启动(受不了了,网上的教程就没有完整的)
菜鸡我的笔记本为戴尔灵越Inpsiron 7560,其实Inspiron 15 7560 和Inspiron 7560是同一个型号. 电脑拆了安过内存条,换过电池,现在又加了一块固态硬盘. 因为不想安 ...
- 最大子数组(LintCode)
最大子数组 给定一个整数数组,找到一个具有最大和的子数组,返回其最大和. 样例 给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子数组为[4,−1,2,1],其最大和为6 注意 子数 ...
- RabbitMQ (十五) 镜像集群 + HAProxy1.7.8 负载均衡
RabbitMQ 默认的集群模式,也就是普通模式,最大的问题就在于存储队列完整数据的节点一旦宕机, 如果是非持久化队列,则消息丢失;如果是持久化队列+持久化消息,则必须等该节点恢复. 所以后来 Rab ...