zhangguanzhang's Blog

zhangguanzhang's Blog

站在巨人的肩膀上

跨VPC或者跨云供应商搭建K8S集群正确姿势
去年开始各大云厂商搞活动 120 元一年的云主机,当时还不会k8s,但是了解到搭建集群需要好几台,于是当时攒了好几台来做准备: tx 一台,阿里两个别人账号买了两台,再加上很久之前几何云送了一台. 当时还有人怼说买这么多干啥,答曰:以后学 k8s,此人曰:呵呵 后面刚开始接触的时候不太了解网络,用的calico,跨vpc根本不行,有大佬说只能vxlan能跨SDN下的vpc之间但是云厂商的主机都是做的 ip 的nat,网卡ip都是内网ip,kubelet上报的时候和flannel都会用这个ip calico的 BGP 不能跨子网(好像需要人为干预配置才能跨)跨三层只能用ipip模式,另外...
二进制部署Kubernetes v1.11.x(1.12.x) HA可选
本次采用二进制文件方式部署 不建议使用secureCRT这个ssh软件复制本篇博客内容的命令,因为它的部分版本对包含多条命令的处理结果并不完美,可能很多命令不是预期结果 本文命令里有些是输出,不要乱粘贴输入(虽然也没影响) 本文命令全部是在k8s-m1上执行 本文很多步骤是选择其一,别啥都不看一路往下复制粘贴 如果某些步骤理解不了可以上下内容一起看来理解 本文后面的几个svc用了externalIPs,上生产的话必须用VIP或者LB代替 本文的HA是vip,生产和云上可以用LB和SLB,不过阿里的SLB四层有问题,可以每个node上代理127.0.0.1的某个port分摊在所有apise...
Kubernetes v1.11.x HA全手动苦工安装教学
多master高可用 或者 单master的ansible部署方案 管理组件采用staticPod或者daemonSet形式跑的,宿主机os能跑docker应该本篇教程能大多适用安装完成仅供学习和实验 本次安裝的版本: Kubernetes v1.11.1 CNI v0.7.1 Etcd v3.3.9 Flannel v0.10.0 或者 Calico v3.1.3 Docker CE latest version(18.06) ** 不建议用docker 18.05 , docker CE 18.05有bind mount的bug ** 本次部署的网络信息: Clust...
基于openstack的ecs上使用VIP
客户需要在云上使用vip,后面发现不通,查询了后发现openstack的neutron会存在ip和mac绑定的关系,可以阅读下面的链接查看说明https://blog.codecentric.de/en/2016/11/highly-available-vips-openstack-vms-vrrp/即如果网卡上有不是下发的ip在向外发包后包会被drop掉,需要用neutron的cli解绑ip和mac的绑定,我们这这个功能已经做在了web上了,所以可以直接解绑 存在绑定的关系下,意味着flanneld不能使用host-gw模式,除非云厂商实现了cni-plugins或者不是原生的open...
利用travis同步gcr.io镜像到dockerhub
项目地址https://github.com/zhangguanzhang/gcr.io/tree/master 利用gcloud sdk去查看谷歌镜像站的镜像,获取每一个镜像的tag后改名推送到自己的dockerhub上面全部是shell思路,脚本一旦写完就需要不断的执行去同步了,所以借用travis去构建两个分支,一个master分支和一个构建分支travis触发构建后拉取仓库后,切换到构建分支,pull构建分支,然后同步镜像 脚本我写了两种https://github.com/zhangguanzhang/bash/tree/master/google_containers_syn...
记录一次线上k8s节点故障
邮件收到zabbix的告警,业务的网页登陆状态不是200,后面又自愈了 说明服务挂掉过一次,登陆到机器上发现集群有台节点状态是nodelost状态上去看到相关服务都挂掉了然后排查到根分区占满了,排查到是k8s日志堆满了/var/log/ 12345678910111213141516[root@cloudos02 ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/centos-root 219G 216G 0 100% /devtmp...
kubernetes's Job总结和实战以及坑
Job有三种主要类型的 Job: Job的Pod运行完可以看到状态为Completed,低版本需要在get pod的时候添加-a或者--show-all才能看到job创建的pod 下面实例先创建一个固定完成数量2,并行数量4的Job 12345678910111213141516171819202122232425262728293031[root@k8s-m1 k8s]# cat job.yml apiVersion: batch/v1kind: Jobmetadata: name: test-jobspec: completions: 2 parallelism: 4 tem...
kubernetes的PodAffinity的不解
官方文档来看是下面的说法,摘自官方文档https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ An example of a pod that uses pod affinity: 1234567891011121314151617181920212223242526272829apiVersion: v1kind: Podmetadata: name: with-pod-affinityspec: affinity: podAffinity: requiredDuringSchedul...
[转载+修正]Kubernetes v1.10.x HA全手动苦工安装教学
转载自https://kairen.github.io/2018/04/05/kubernetes/deploy/manual-v1.10/作者文章的安装步骤文字是复制作者的1.8的安装步骤然后改的,安装过程变了部分,但是文字没有改正过来。 此过程我写了ansible安装部署方案,地址(一些文件下载不了的话可以去下面的github里找对应的文件) 多master高可用版 单master版 本文内容所有url都没改过,以下的添加的内容是我的建议和安装的经验 本文里如果有些范围不知道在哪台主机上执行请看前后命令都可以判断出,不清楚的请下面评论我会更新 以下我转载过来并修改+上我的提醒 管...
kubernetes的configMap文件挂载不同的路径且不覆盖目录的解决方法
看到configMap这个资源对象,突发奇想 如何让一个configMap里文件挂载到容器的不同路径 书上和网上都找不到对应例子 最终github上搜索到了有个subPath选项除了支持路径还不会覆盖容器内部的整个目录参考链接https://github.com/dshulyak/kubernetes.github.io/commit/d58ba7b075bb4848349a2c920caaa08ff3773d70这里记录下 123456789101112131415161718192021222324252627282930313233343536373839404142434...
使用管理网当作业务网keepalived VIP的心跳线
客户的业务情况如下,我们连的 vpn2 上去部署的业务,一开始三台机器,上面只有 NC1 这一个网卡,客户给了个 vip 让我们配置上,说 vip 两个 vpn 都能访问到。后面实际配置完发现不通,沟通了一番了解清楚网络后,使用了如下方案。 NC1 的网络是 172.18.27.252/25 via 172.18.27.129 是默认路由,NC2 是 172.18.27.99/25 via 172.18.27.1,两个网卡不同的 vlan,172.18.27.0/25 的网络里没有多少 IP 了,所以拿来做 VIP 的话得用 NC1 做心跳线。 123456789101112131415...
Linux tc基础使用
ens192 网卡 63%丢包率+6s延迟作用于目标 ip 是 114.114.114.114 12345tc qdisc add dev ens192 root handle 1: priotc qdisc add dev ens192 parent 1:3 handle 30: netem loss 63% delay 6000mstc filter add dev ens192 protocol ip parent 1:0 u32 match ip dst 114.114.114.114 flowid 1:3# 清理网卡上的规则tc qdisc del dev ens192 ...
docker无法删除掉镜像的解决方法
碰到了docker rmi无法删除掉image的问题版本如下 12[root@guanvps ~]# docker --versionDocker version 17.12.1-ce, build 7390fc6 问题如下,也没有任何容器在运行,重启发现依然无法删除掉 12345678[root@guanvps ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEnginx latest ...
慎用docker的--rm选项!!!
Dockerfile里的VOLUME和docker run -v /path的时候挂载容器的挂载点效果是一致的会在宿主机/var/lib/docker/volumes目录生成随机目录发现--rm不单单是删除掉容器,还会删掉挂载点的数据 首先不使用--rm下看看效果 1234567891011[root@guan_tx ]# docker run -tid --name busybox -v /guan busyboxbe59bd455fbde8a8d195220d96c6676ad8fa6f26e1ebac6533020c83dacbf907[root@guan_tx ]# dock...