自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 使用kubebuilder结合code-generator开发k8s controller(2)

前面记录了kubebuilder+code-generator的一些踩坑记录和解决方法的相关准备工作,这篇文章记录kubebuilder+code-generator创建一个controller的过程使用kubebuilder结合code-generator开发k8s controller(1)https://mp.csdn.net/mp_blog/creation/editor/120344414一、使用go mod管理依赖mkdir examplego mod init gateway

2021-09-17 17:06:07 807

原创 使用kubebuilder结合code-generator开发k8s controller(1)

为了开了controller,先后分析和尝试了几周,现把步骤和踩的坑记录分享一下。本篇记录准备工作及遇到的问题和解决方法问题一: kubebuilder安装参考网上安装kubebuilder方法,但以下方式在curl的时候并无法下载对应安装包,因此放弃该方式,如有兄弟尝试成功,可分享成功经验os=$(go env GOOS)arch=$(go env GOARCH)curl -L https://go.kubebuilder.io/dl/2.3.1/${os}/${arch} | ta

2021-09-17 11:23:48 517

原创 k8s命令自动补全

设置k8s命令自动补全命令:source <(kubectl completion bash) && echo 'source <(kubectl completion bash)' >> ~/.bashrc

2020-09-03 20:27:47 901

原创 如何查看docker容器里的操作系统

在linux中,我们可以用uname命令来查看当前的操作系统。在docker容器里,我们要查看操作系统时,正确的方法是:cat /etc/issue错误姿势:cat /process/version或者uname -a因为用以上方法查出来的是宿主机的操作系统...

2020-09-03 19:55:19 10309

原创 dockerfile构建镜像优化实践

大家日常构建docker镜像时,常用dockerfile生成,而dockerhub上的dockerfile也已经超过100w了。本文将在5个方面介绍,如何在生产环境中,提高docker镜像的构建速度,减小docker镜像大小,以及增强dockerfile的可操作性、安全性和可重用性。TIP1:提升docker镜像构建速度在生产环境中,会经常涉及到代码修改,代码修改后,我们就需要重新构建dock...

2020-01-18 16:33:40 389

原创 linux自定义命令,alias或/usr/bin

在Linux日常操作中,有时我们对某个操作需要重复多次,每次都手动敲命令,如果命令很长而且每次都一样的话,我们可以尝试使用Linux提供的alias,将这部分命令封装为自己的命令,提升工作效率。1、 alias举个栗子,如写我们自己的pwd命令:alias mypwd='pwd'这样就完成了自己的pwd命令创建,创建完成后,可以查看所以的aliasalias -p...

2019-09-22 17:40:27 963

原创 linux文件处理之重复行处理,sort和uniq使用

1. uniq命令,uniq只能去掉连续重复的行举个栗子:#cat test.txtabcdabcdabcddddabcd则执行cat test.txt | uniq后,结果为:#cat test.txt | uniqabcddddabcd上面栗子打印出文件中不同的行,如果希望打印出相同的行,则cat test.txt | uniq -d#ca...

2019-07-07 16:21:34 778

原创 linux shell获取文件名和路径,basename/dirname/${}运用

1. 获取文件名:basenameshell本身提供了获取文件名的命令:basename,该命令可以从路径中提取出文件名(带后缀)。举个栗子:#/bin/bashFile=/dir1/dir2/dir3/a.b.c.txtbasename $File执行的结果为:a.b.c.txt上面的栗子输出结果是文件后缀的,若不想带后缀,则:#/bin/bashFil...

2019-07-07 15:33:36 36291 3

转载 linux gcc编译

https://blog.csdn.net/flyztek/article/details/73612469https://www.cnblogs.com/sunsky303/p/7731911.htmlhttps://www.ibm.com/developerworks/cn/linux/l-cn-linklib/https://www.ibm.com/developerworks/...

2019-05-11 17:17:29 135

原创 python yield 用法小结

yield:在python中,使用yield的函数是一个generatorgenerator(生成器):在每次调用next()的时候执行,当遇到yield时返回结果。并且当再次执行时,从上次返回的yield出继续执行。与普通函数的区别:普通函数是顺序执行的,直到遇到return或者函数的最后一行时返回iterator:迭代器是一个可以记住遍历的位置的函数只可往前、...

2019-05-03 15:02:12 393

原创 python程序调试方法总结

1. 使用assert / printeg:# err.pydef foo(s):n = int(s)assert n != 0, 'n is zero!'return 10 / ndef main():foo('0')执行方式: python err.py如执行时使用 -0 参数:python -0 err.py,则关闭assert,把assert当成pass使用...

2019-05-03 14:53:28 189

原创 Linux 不同network namespace 之间通信方式

在云平台中,网络实现网元与外界通信,而对于虚拟机或容器来说,其没有物理网卡,需要通过虚拟网卡与外界通过。在Linux环境中,network namespace实现了网络资源的隔离,它可以为网元提供网络设备(网卡)、ip配置等。下面我们来看看Linux环境下network namespace如何工作的。network namespacesnetwork namespaces主要提供了关于网络...

2019-05-03 14:29:36 2414

原创 Linux利用iptables实现负载均衡loadbalance

1. iptables实现负载均衡的方式:在Linux中使用iptables完成tcp的负载均衡有两种模式:随机、轮询The statistic module support two different modes:random:(随机) the rule is skipped based on a probability nth:(轮询) the rule is skipped...

2019-05-03 00:06:01 7748

原创 分布式消息通信队列——rabbitmq

对于传统的Linux服务中,各模块间通信我们可以通过进程间通信、线程间通信的机制实现。但对于分布式系统中,其架构中含有多个组件、多个子系统,而且各组件/子系统可能是分布在不同节点上,因此要如何实现它们之间的通信呢?第一种方式:IPCIPC通信的缺点是其各模块耦合性太大,不适合扩展第二种方式:Socketsocket是一种常用的通信方式,是开发中常用的一种手段,但它需要维持链接不中断,而且...

2019-05-02 20:19:31 385

原创 openstack nova源码分析--compute创建虚拟机(1)

博客作为学习笔记记录,若有理解或表述错误,欢迎指出在OpenStack nova创建虚拟机过程中,nova-api收到虚拟机创建请求,然后nova-scheduler完成选择合适计算节点的任务,nova-conductor则开始调用build_instance()来创建虚机。在conductor.manager.ComputeTaskManager.build_instance()中,通过rp...

2019-04-13 18:57:35 643

原创 k8s job机制初探

博客作为学习笔记记录,若有理解或表述错误,欢迎指出k8s的job机制,k8s官网参考k8s的job是用来执行一次性任务的一类资源,相关的还有cronjob,用于执行以下周期性任务。部署job之后,k8s会起对应pod,当pod的状态为finished之后,job的状态会更新为complete,即这个job任务已经执行完成,pod不在系统中继续运行。相对于ReplicaS...

2019-03-28 23:06:40 5178

原创 使用kubeadm命令为k8s集群添加节点命令查询

博客作为学习笔记记录,若有理解或表述错误,欢迎指出kubeadm安装完成后,添加节点的命令忘记了,可这么查:kubeadm token create --print-join-command --ttl 0...

2019-03-28 22:04:28 1904

原创 centos下载rpm包及其依赖,而不安装rpm包

博客作为学习笔记记录,若有理解或表述错误,欢迎指出1. yum install --downloadonly --downloaddir=/root/mypackages/ httpd-2.2.6-40.el7若不指定--downloaddir,则默认把软件包存在/var/cache/yum/ 的 rhel-{arch}-channel/packageslocation 目录2....

2019-03-28 21:59:30 911

原创 linux命令小技巧大全(个人)

博客作为学习笔记记录,若有理解或表述错误,欢迎指出1) 远程挂载文件目录到本地,eg:mkdir /root/110mount -t cifs -o username=root,password=123456 /<host-ip>/share//root/1102) 格式化新建硬盘,并挂载(sdb为新建的硬盘)mkfs.ext4 /dev/sdbmount -t ...

2019-03-28 21:54:32 428

原创 linux crontab中command not found错误解决方法

博客作为学习笔记记录,若有理解或表述错误,欢迎指出平时我们在做自动化运维、任务管理时,如创建lnux 周期监控任务时,会使用crontab来完成。eg: 每分钟执行/home/my-shell.sh*/1 * * * * /bin/sh /home/my-shell.sh但有时我们明明调试通过的脚步,放到crontab中执行,会遇到command not found的错误。这是因...

2019-03-24 21:13:39 3789

原创 docker网络连接——docker network connect命令

博客作为学习笔记记录,若有理解或表述错误,欢迎指出docker network connect 命令是用于将docker容器连接到某个网络中,或者与其他容器建联,容器可以使用容器名或者容器ID。用法docker network connect [OPTIONS] NETWORK CONTAINER选项名称,简写 默认 说明 --alias 为...

2019-03-24 20:36:26 9604

原创 通过ssh连接到docker容器中

博客作为学习笔记记录,若有理解或表述错误,欢迎指出我们可以通过ssh登录到服务器、虚拟机上完成操作。而容器是运行在服务器上的,我们通过22端口(ssh默认服务端口)登进去的是服务器界面.一般情况下,要对容器执行一些操作,则为:ssh root@<host-ip>docker exec -it <container-id> bash此时可以在容器内执行一些...

2019-03-24 17:37:06 5489

原创 docker容器的健康状态监控功能healthcheck

博客作为学习笔记记录,若有理解,表述错误,欢迎指出。healthcheck是docker1.12版本引入的新功能,用于容器健康状态监测暂时k8s不支持docker的healthcheck功能,k8s由其之前就提供的liveness和readiness功能来实现healthcheck,docker引入healthcheck功能,估计也是向k8s学习的。docker 的healthc...

2019-03-24 16:12:39 3653

原创 docker多阶镜像(multi-stage)构建

博客作为学习笔记记录,若有理解,表述错误,欢迎指出。docker 多阶镜像(multi-stage)是为了解决多个容器镜像之间文件拷贝等问题,多阶镜像有几个常用的场景:1. debug:用于调试dockerfile的特定阶段2. 用于测试和debug阶段Q: 为什么要用多阶镜像在以前,如果需要从一个容器里把编译好的文件放到另外一个容器执行,需要分开两步操作。举个栗子...

2019-03-24 15:25:49 857

原创 k8s pod 在节点间调度控制

博客作为学习笔记记录,若有理解,表述错误,欢迎指出。k8s起pod时,会通过调度器scheduler选择某个节点完成调度,选择在某个节点上完成pod创建。当需要在指定pod运行在某个节点上时,可以通过以下几种方式:1. 在部署pod的yaml中,指定nodeName指定了nodeName的Pod会直接跳过Scheduler的调度逻辑,直接写入PodList列表,该匹配规则是强制匹...

2019-03-24 12:57:35 4312

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除