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项目的创始成员之一.目前 ...
随机推荐
- Mysql安装发生「Access denied for user ‘root’@’localhost’ (using password: NO)」错误
参考:http://www.aipacommander.com/entry/2014/05/26/152247 mysql_secure_installation 依赖重置密码
- mybatis开启字段自动映射为java驼峰命名规则
<settings> <setting name="mapUnderscoreToCamelCase" value="true"/> & ...
- LinkedList 源码分析
LinkedList :双向链表结构, 内部存在frist节点 和 last节点.通过改变 首节点和 尾节点的引用来实现新增和修改 有一个内部类: //节点类,内部包括前节点和后节点,和数据项 // ...
- leetcode 之Remove Nth Node From End of List(19)
这题比较简单,方法有很多.其中一种比较有意思的做法是设置两个指针,一个先走n步,然后再一起走.一个到了末尾,另一个也就确定了要删除元素的位置. ListNode *removeNthFromEnd(L ...
- jdbc操作数据库以及防止sql注入
public class pr { public static void main(String[] args) { Connection conn = null; Statement st = nu ...
- java的IO流之字符流
# 原创,转载请留言联系 输出流 FileWriter类 常见的构造方法: FileWriter(String fileName) 根据给定的文件名构造一个 FileWriter 对象.Fil ...
- 获取GUID的方法
uses QString; procedure TForm12.btn1Click(Sender: TObject); var g: TGUID; begin //方法1(Guid的Helper)-- ...
- Unique Binary Search Trees I&&II(II思路很棒)——动态规划(II没理解)
Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For exa ...
- 熟悉并了解uml的使用(一)
本资料对UML各种模型图的构成和功能进行说明,通过本资料的学习达到可以读懂UML模型图的目的.本资料不涉及模型图作成的要点等相关知识. UML简介 UML (Unified Modeling Lang ...
- cocos2dx 大地图分块加载的研究(初)
http://blog.csdn.net/dinko321/article/details/46739563 http://blog.csdn.net/u012812482/article/detai ...