- 博客(22)
- 收藏
- 关注
原创 利用k8s Infra 容器,解决pod网络故障注入的问题
我们知道,在kubernetes中,pod中容器的资源隔离主要通过namespace和cgroup来实现。2.通过前面infra容器的前置知识,可以知道infra container是和pod所有容器共享networknamespace的,因此可以直接把故障做在infra容器上,并且infra容器的生命周期是和pod相同的。在给pod注入网络故障,模拟pod网络延迟,丢包的场景下,会出现注入故障的目标container重启,进而导致故障恢复失败,最后只能重启相应pod来恢复故障。
2024-02-04 10:48:32
790
原创 使用event_control监听memory cgroup的内存使用率
如果要在日常使用中监控一个应用程序的内存使用率,定时轮训存在一定的延迟,让我们看看如何做到触发即通知
2023-03-07 17:59:17
231
翻译 (译)Kubernetes 如何控制你的集群
Kubernetes is the most popular container orchestrator by far. Much of its success comes from its reliability. All software has bugs. Kubernetes is somehow less buggy than alternatives when it comes to running your containers.
2023-02-12 17:10:38
186
原创 kubernetes的垃圾回收机制(资源对象删除机制)
k8s中,在删除deployment的时候,deployment从属的replicaset也会被删除,这背后就是垃圾收集器控制器在起作用
2023-01-25 16:31:34
1432
原创 device-plugin组件原理介绍
一:device-plugin能做什么:在k8s中使用gpu资源和设备过程中想到如下几个问题:1.如何在不修改k8s任何组件的情况下引入除cpu,memory外的第三方资源2.kubelet在创建docker的时候如何让docker使用到node的gpu资源。3.k8s在调度任务的时候如何识别到第三方资源(上层调度器如何看到底层资源和设备)。针对引入第三方资源的问题,社区给出了解决方案:community/device-plugin.md at master · kubernetes/c
2021-10-06 21:02:13
2451
2
原创 scheduler优选算法中的map-reduce
查看k8s1.16scheduler的代码中发现其中有这么一段代码:pkg/scheduler/core/generic_scheduler.go:730results := make([]schedulerapi.HostPriorityList, len(priorityConfigs), len(priorityConfigs)) // DEPRECATED: we can remove this when all priorityConfigs implement the // M.
2021-09-21 19:11:03
235
原创 使用controller-runtime开发简单的controller
kubebuilder和operator-sdk都是在controller-runtime基础上做了一层封装,如果不需要自定义crd资源,只是使用k8s现有的resource做一些自定义的开发,可以直接使用controller-runtime快速开发。这里我们实现一个对namespace打上label就创建对应的service功能。 首先先初始化一个manager,manager的作用是用来管理controller var namespace string var m...
2021-02-14 17:02:30
2239
2
原创 client-go阅读和使用(三) informer机制
kubernetes并没有使用传统的消息队列来传递消息,而是使用了informer机制来实现各模块间的消息传递,每个资源对象都实现了一套自己的informer,如下图:
2020-08-16 11:06:57
717
原创 client-go阅读和使用(一) Client客户端对象
1.RESTClient客户端最基础的客户端。其他客户端都是基于它实现。ClientSet客户端2.ClientSet客户端最经常使用的客户端。需要提前知道Resource所在的Group和对应的Version信息。 不能直接访问CRD资源。需要通过client-gen重新生成ClientSet才能访问。// Clientset contains the clients for groups. Each group has exactly one// version included in
2020-08-09 20:01:29
1356
原创 使用client-go 之dynamicclient(二)
在开发中碰到一个场景,在一个yaml文件中同时定义了deployment和service两种资源类型(可能还有更多个),
2020-05-15 16:22:38
2011
5
原创 客户端上传文件发生Connection reset by peer: socket write error问题排查
1.问题描述研发在测试环境进行测试,通过内网上传文件能正常收到nginx返回的错误信息,nginx做了30MB大小的上传限制{ "return_code": 20010, "returnDesc": "Request body too large. It should not exceed [30 MB]"}通过走公网域名访问就会报错:java.net.Soc...
2020-02-21 17:21:10
6110
原创 容器网络实验(二):模拟flannel vxlan模式
前置知识: FDB表:Forwarding DataBase,相当于交换机的mac表 实验拓扑 创建vxlan网卡(注意vxlan0的mac地址,后面手动添加arp和fdb表需要用到) host1:ip link add vxlan0 type vxlan id 42 dstport 4789 local 192.168.120.128 dev ens33 ...
2020-01-31 13:23:12
791
原创 容器网络实验(一):模拟docker bridge模式
创建vethpair对ip link add v0 type veth peer name v0_pip link add v1 type veth peer name v1_p加入namespaceip netns add ns1ip netns add ns2ip link set v0 netns ns1ip link set v1 netns ns2分配ip,启动网...
2020-01-28 19:17:47
324
原创 容器化redis-cluster使用(一)集群自身ip变化更新问题
最近把redis-cluster集群迁移到了k8s上后发生了一个问题,当一个pod重启后,java程序报错,连不上redis服务器。我们查看集群状态后发现,当pod重启后,pod的ip发生了改变(我们并没有固定redis-cluster的pod的ip),去非重启pod使用cluster nodes查看集群信息,一切正常,但在重启pod节点查看集群信息,发现集群信息中使用的还是重启前的p...
2019-09-17 10:43:19
10031
3
原创 容器化redis-cluster使用(二)java客户端刷新cluster topology问题
前一篇提到了容器ip变化后集群自发现的问题,现在接着讲这个问题引申出的另两个问题:1.虽然集群ip问题解决了,但java client还是连接报错,似乎连的是老的ip地址。2.当key所在的master挂了,slave切换到master后,java客户端却一直尝试重连,直到超时,并没有随着master的切换去连主拿key。以下代码和例子为环境模拟。集群信息:1...
2019-09-16 22:11:27
6902
2
原创 swarm基本原理以及带来的容器运维
最近公司上了docker,在考虑容器编排工具时,出于上手简单易用的目的,小范围推广了官方的swarm,试用了一段时间后,做了如下总结:一、swarm可以解决的问题1.容器编排问题2.负载均衡问题3.集群管理问题4.应用部署、迭代问题展开:1.容器编排问题关键字:replicas,label,volumereplicas可以控制启动docker实例的数量label可以控制docker实例在哪些节点启...
2018-02-22 17:49:34
1054
转载 shell中的多进程【并发】
根据我个人的理解, 所谓的多进程 只不过是将多个任务放到后台执行而已,很多人都用到过,所以现在讲的主要是控制,而不是实现。先看一个小shell: 看执行结果: 很明显是8s=============================这种不占处理器却有很耗时的进程,我们可以通过一种后台运行的方式来达到节约时间的目的。看如下改进: 用“{}”将主执
2017-03-28 23:19:47
9648
1
原创 记一次keepalived脑裂问题查找
在自己环境做keepalived+redis实验时,当重启了备用redies机器后,发现两台redies主机都拿到了VIP[root@redis2 ~]# ip addr list1: lo: mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2017-03-06 15:47:50
8957
2
原创 django实现局部页面刷新
模块:{% csrf_token %}{{ form.model }}应用:{{ form.application }}{{ form.text }}模仿京东提交表单未登录跳出登陆界面功能,用jquery ajax提交表单来实现。网上有很多类似的代码,我参考了一些代码来实现自己的功能先附上表单
2017-01-09 14:19:10
13848
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人