zhangguanzhang's Blog

zhangguanzhang's Blog

站在巨人的肩膀上

golang的net/http包的客户端简单科普
之前准备写个简单的 api 的调用,百度和问了很多人后发现基本对于 http 的客户端熟悉的人非常少。或者对包的不了解自己造了效率很低的轮子,而且官方一些包里有坑,被坑过,这里简单科普下 简单的get和posthttp 包里下列可以直接使用的请求方法 1234func Head(url string) (resp *Response, err error)func Get(url string) (resp *Response, err error)func Post(url string, bodyType string, body io.Reader) (resp *Response...
uefi模式下docker+交换机部署pxe批量安装
华三服务器的 ipmi 的 web 提供了 nfs 挂载 iso 去安装,也是我之前使用的,发现研发给的镜像在4g以上(镜像基于centos7.3改的,我之前测试都是用的minimal镜像890M左右)。安装的时候报错,然后当面测试得出结论 nfs 的网速原因,其次也是我们这边办公网是百兆。。。办公网被 it 接管了,交换机密码不给,自己找了台 5130 交换机,下面接服务器和我自己电脑搭建测了下定制iso的pxe流程 这是组网情况 123456789101112131415 10.96.4.1/24 +------------+ ...
拟定excel表格服务器自动按照表格配置信息和安装的实现过程
修改镜像以及编程实现了从服务器买来上电就会自动化安装指定 ip 和 hostname 的步骤(包含了自动做raid),全程非交互 先讲讲事情的由来,新节点建设,几百台服务器得人为安装系统,虽说服务器有带外 ipmi,但是 raid 和安装系统时候 hostname 和ip啥的得去配置。系统镜像还是修改过的,安装界面的菜单自动应答通用的流程还不行,于是决定看看能不能研究出来。想要达到的一个效果就是:服务器送货到节点后,一个人带着电脑和设备的标签,高主频高io啥的分类好后贴上标签,按照贴的写一个所有设备应该配置的信息的excel: 123hostname 序列号 IPM...
SMASH CLP的一些笔记
https://support.hpe.com/hpsc/doc/public/display?docId=c03334058https://www.golinuxhub.com/2018/02/hp-ilo4--cli-guide-cheatsheet-example.htmlhttps://h50146.www5.hpe.com/lib/products/software/oe/linux/mainstream/support/doc/general/mgmt/hponcfg/lights-out1.70guide.pdfhttps://server-recycling.nl/ima...
golang cobra的一些笔记
这几天稍微写了下cobra,网上搜到的博客分为两类,一类是把官方的readme翻译一下完事的,一类是写的都太简单了没有实际常见场景的。这里不废话了,先用官方demo讲解下 Cobra介绍是一个golang的库,其提供简单的接口来创建强大现代的CLI接口,类似于git或者go工具。同时,它也是一个应用,用来生成个人应用框架,从而开发以Cobra为基础的应用。热门的docker和k8s源码中都使用了CobraCobra 结构由三部分组成:命令( Command )、标志( Flag )、参数( Args )。 1234567type Command struct { Use ...
standard_init_linux.go:211: exec user process caused "too many open files in system"
故障现象部署好业务 pod 后,有很多 pod 一直 Crash 或者无法就绪。 处理过程describe pod 的状态有显示下面的: 1Error: failed to start container "xxxxx": Error response from daemon: OCI runtime start failed: cannot start a container that has stopped: unkown 上去这个节点查看容器状态: 12345$ docker ps -a | grep 6cb6440a7e90bde reg.xxx.lan:5...
闲谈线上俩k8s环境同等limits下pod启动时间不一样解决过程
线上用的k8s版本是1.6.7非常老,而且HA有问题,上个月研发想把里面的一些服务迁出来到一个新集群里,新集群的搭建是我负责的。上周开始陆陆续续的迁移过来了,但是同等limit下部分pod在测试环境上(测试环境和老环境部署是一样的,下文的老环境和测试环境可以理解为一样)启动非常快,在我搭建的新k8s环境上启动非常慢,研发他们应用都是java+springboot,这里不谈jvm无法识别cgroup,已经加选项识别到了还有那个随机熵的选项肯定也是加了的。因为之前一次有个用户反映他们本地虚机启动springboot应用20s,我们云上启动就三分钟,后面漠然大佬教我加java的启动参数输出lo...
一次kube-controller-manager的bug导致的线上无法调度处理过程
线上的k8s环境普遍版本很低,今天同事心血来潮去一个新节点上去看了下发现根分区满了,清理了后发有一个pod没有创建出来。清理后把因为文件系统满了而down掉的k8s相关进程起来后发现kubelet的log一直报错cannot remove /var/lib/kubelet/xxxxconfig/key resource busy now 啥的。查看了下describe对应rc还没有任何Event 1234567891011121314151617181920212223242526272829303132333435363738$ kub...
不走etcd v2 api下二进制跑flannel的总结
前言这几天给线上搭建 k8s 集群,文件和 systemd 参数大多是从 kubeadm 的 staticPod 的 yml 里扣出来的,起初是除了 flanneld 全部是 systemd 管理二进制。脚本问题导致 kube-proxy 的 kubeocnfig 少执行了 use-context 所以显示的是匿名用户无法 list node 信息,kube-proxy 是在运行但是无法维持 svc 的网络,flanneld 因为是 pod 要 watch 节点是通过 kubernetes 这个 svc 走的连接导致不通,然后 pod 状态变成退出,而 kubelet 在不手动清理掉退出...
k8s高可用涉及到ip填写的相关配置和一些坑
etcd 就不说了,奇数个副本,可以坏 (n-1)/2 个,但是不可能同时坏那么多,这里不讨论 etcd 单独不单独跑。推荐个文档 https://github.com/etcd-io/etcd/tree/master/Documentation/op-guide 管理组件先说说 k8s 组件, kubelet 和 kube-proxy 啥的肯定写 LB 或者 VIP:HA_port,如官方的图和 https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/ha-topology/ 里的,这里的文档内容...
二进制部署Kubernetes v1.13.12 HA可选
本次采用二进制文件方式部署,本文过程写成了更详细更多可选方案的ansible部署方案 https://github.com/zhangguanzhang/Kubernetes-ansible和之前的步骤差不多都是和kubeadm步骤一样,不过这次所有kubelet全部走bootstrap不会像之前master上的kubelet生成证书,另外证书换成openssl生成 不建议使用secureCRT这个ssh软件复制本篇博客内容的命令,因为它的部分版本对包含多条命令的处理结果并不完美,可能很多命令不是预期结果 本文命令里有些是输出,不要乱粘贴输入(虽然也没影响) 本文命令全部是在k8s-m1...
docker部署jira(8.0.0)和confluence(6.14.1)
记录下这几天搭建的过程jira和confluence是分别两台,数据库也是分开的,数据库是用mysql的rpm的repo添加后安装的,jira和confluence是docker跑的,把破解的jar加到镜像里然后改了下别人的Dockerfile本次安装的版本: jira-software 8.0.0 confluence 6.14.1 Docker CE 18.06.02 OS CentOS 7.5.1804 系统基本设置 所有防火墙与SELinux 已关闭:123systemctl disable --now firewalld NetworkManagersetenforce...
通用的dashboard部署和tls,SSL相关部署
详细的讲解下部署dashboard,比市面上更详细和更多场景的选择,本文dashboard的暴露不会用nodeport(不喜欢使用它)和apiserver的web proxy代理也就是/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/这种 讲下四种场景方式: 纯dashboard http和https不惨合外部证书 openssl 证书给dashboard当https 个人向域名使用https小绿锁 ingress tls 代理http[s]的dashboard以及最后讲解的如何定义带权...
fstab与systemd.mount自动挂载的一点研究和见解
每次挂nfs,iscsi,cifs改fstab都心惊胆颤,怕改错了开机hang在那影响业务。每次都是改之前去搜第四列列的所有选项值。写下今天趁线上挂了cifs的一台机器可能重启之前在我自己虚机上做了测试和一些问题搜到的见解虚机桥接网络,宿主机共享一个目录,折腾了半天autofs都没配置起来,而且网上普遍的samba的fstab为下面这样 1//10.0.23.85/test /mnt cifs username=zhangguanzhang@xxxxx.com,password=xxxxxxxxx,iocharset=utf8 0 0 但是我在宿主机把445端口屏蔽...
proxmox里使用cloud-init和一些笔记
cloud-init的镜像模板制作centos7 模板制作记录下proxmox制作带有 cloud-init 的虚机模板过程因为刚开始制作虚机模板的硬盘是固定大小,后面通过克隆后调整硬盘大小就会自动 growpart ,需要安装 cloud-utils-growpart。好像只能往大的扩,我个人也倾向于最小 20G,所以这里我开的是20G硬盘的虚机另外查了下和实际试了下 cloud-utils-growpart 好像只支持 ext3 和 ext4 不支持 lvm 自动扩,其他的文件系统可以考虑试试 lvm 自己写个脚本去开机启动自动扩。这里我分区不带 swap,标准分区+ext4安装完后...