- 博客(380)
- 资源 (1)
- 收藏
- 关注
原创 使用Python3解压gz、tar、tgz、zip、rar五种格式的压缩文件例子
使用Python3解压如下五种压缩文件:gz、tar、tgz、zip、rar简介gz: 即gzip,通常只能压缩一个文件。与tar结合起来就可以实现先打包,再压缩。tar: linux系统下的打包工具,只打包,不压缩tgz:即tar.gz。先用tar打包,然后再用gz压缩得到的文件zip: 不同于gzip,虽然使用相似的算法,可以打包压缩多个文件,不过分别压缩文
2017-10-11 22:23:00 8036
原创 kubernetes--pod的生命周期管理
下文基于kubernetes 1.5.2版本编写lifecycle概念创建资源对象时,可以使用lifecycle来管理容器在运行前和关闭前的一些动作。lifecycle有两种回调函数:PostStart:容器创建成功后,运行前的任务,用于资源部署、环境准备等。PreStop:在容器被终止前的任务,用于优雅关闭应用程序、通知其他系统等等。例1、部署代码以下
2017-09-28 15:18:18 7865
原创 etcd集群日常维护
配置文件和启动参数说明命令行 | 配置文件 | 说明data-dir | ETCD_DATA_DIR | 指定节点的数据存储目录,包括节点ID,集群ID,集群初始化配置,Snapshot文件,若
2017-09-27 16:26:33 6074
原创 让外部网络访问K8S service的四种方式
kube-proxy+ClusterIPkubernetes版本大于或者等于1.2时,配置:修改master的/etc/kubernetes/proxy,把KUBE_PROXY_ARGS=”“改为KUBE_PROXY_ARGS=”–proxy-mode=userspace”重启kube-proxy服务在核心路由设备或者源主机上添加一条路由,访问cluster IP段的路由指向到ma
2017-09-21 15:45:46 10065
原创 kubernetes监控--Prometheus
kube-state-metricskubectl create ns monitoringkubectl create sa -n monitoring kube-state-metricscat kube-state-metrics.yamlapiVersion: extensions/v1beta1kind: Deploymentmetadata: name: kube
2017-09-18 13:58:16 2689 1
原创 kubernetes1.5.2--部署dashboard服务
使用http方式访问api server的部署cat dashboard-controller.yaml apiVersion: extensions/v1beta1kind: Deploymentmetadata: labels: k8s-app: kubernetes-dashboard kubernetes.io/cluster-service: "true"
2017-09-01 20:04:56 2611
原创 kubernetes--应用程序健康检查
K8S的应用程序健康检查分为livenessProbe和readinessProbe,两者相似,但两者存在着一些区别。livenessProbe在服务运行过程中检查应用程序是否运行正常,不正常将杀掉进程;而readness Probe是用于检测应用程序启动完成后是否准备好对外提供服务,不正常继续检测,直到返回成功为止。
2017-08-24 16:16:13 5229
原创 kubernetes--优雅删除资源对象
当用户请求删除含有pod的资源对象时(如RC、deployment等),K8S为了让应用程序优雅关闭(即让应用程序完成正在处理的请求后,再关闭软件),K8S提供两种信息通知:1)、默认:K8S通知node执行docker stop命令,docker会先向容器中PID为1的进程发送系统信号SIGTERM,然后等待容器中的应用程序终止执行,如果等待时间达到设定的超时时间,或者默认超时时间(30s),会继续发送SIGKILL的系统信号强行kill掉进程。2)、使用pod生命周期(利用PreStop回调函数),
2017-08-23 15:51:09 4876
原创 kubernetes资源对象--Label
Label机制是K8S中一个重要设计,通过Label进行对象弱关联,灵活地分类和选择不同服务或业务,让用户根据自己特定的组织结构以松耦合方式进行服务部署。
2017-08-22 16:52:00 6966
原创 kubernetes--资源管理
kubernetes的资源管理分为资源请求(request)和资源限制(limit),资源请求能够保证Pod有足够的资源来运行,而资源限制则是防止某个Pod无限制地使用资源,导致其他Pod崩溃。kubernetes1.5之前的版本只支持CPU和内存这两种资源类型。kubernetes的资源管理有3种方式,分别是单个资源对象的资源管理(以下简称resource)、limitranges、resourcequotas。resource和limitranges可以单独使用,也可以同时使用,而resourceq
2017-08-21 17:09:28 3035
原创 kubernetes资源对象--limitranges
概念LimitRange(简称limits)基于namespace的资源管理,包括pod和Container的最小、最大和default、defaultrequests等。一旦创建limits,以后创建资源时,K8S将该limits资源限制条件默认/强制给pod,创建后发现不符合规则,将暂停创建pod。在创建资源时,用户可以为pod自定义资源管理限制,在创建时会去检查和匹配limits值,发现不匹配将在创建时报错。创建后,该pod的资源使用遵守自定义规则,而不会遵守namespace的limit
2017-08-15 17:55:16 2426
原创 kubernetes资源对象--Horizontal Pod Autoscaling(HPA)
概念HPA全称Horizontal Pod Autoscaling,即pod的水平自动扩展。自动扩展主要分为两种,其一为水平扩展,针对于实例数目的增减;其二为垂直扩展,即单个实例可以使用的资源的增减。HPA属于前者。HPA的操作对象是RC、RS或Deployment对应的Pod,根据观察到的CPU实际使用量与用户的期望值进行比对,做出是否需要增减实例数量的决策。原理它根
2017-08-11 17:59:14 7027
原创 kubernetes资源对象--ConfigMap
原理很多生产环境中的应用程序配置较为复杂,可能需要多个config文件、命令行参数和环境变量的组合。使用容器部署时,把配置应该从应用程序镜像中解耦出来,以保证镜像的可移植性。尽管Secret允许类似于验证信息和秘钥等信息从应用中解耦出来,但在K8S1.2前并没有为了普通的或者非secret配置而存在的对象。在K8S1.2后引入ConfigMap来处理这种类型的配置数据。ConfigMap是存储通用的
2017-08-11 16:18:09 7506
原创 kubernetes资源对象--ingress
Ingress在K8S1.1之前还没有。概念Ingress是一种HTTP方式的路由转发机制,为K8S服务配置HTTP负载均衡器,通常会将服务暴露给K8S群集外的客户端。Ingress是一个允许入站连接到达集群服务的规则集合。Ingress能把Service(K8Sservice)配置成外网可访问集群service的URL、负载均衡、SSL、基于名称的虚拟主机等。用户通过POST Ing
2017-08-10 17:41:31 5521
原创 kubernetes资源对象--PetSets/StatefulSet
PetSet首次在K8S1.4版本中,在1.5更名为StatefulSet。除了改了名字之外,这一API对象并没有太大变化。注意:以下内容的验证环境为CentOS7、K8S版本1.5.2,并部署SkyDNS。http://blog.csdn.net/liyingke112/article/details/76685794概念在云原生应用的体系里,有下面两组近义词;第一组是无状态(s
2017-08-08 16:12:07 3176
原创 kubernetes资源对象--持久化存储Persistent Volume和Persistent Volume Claim
概念存储管理跟计算管理是两个不同的问题。理解每个存储系统是一件复杂的事情,特别是对于普通用户来说,有时并不需要关心各种存储实现,只希望能够安全可靠地存储数据。为了简化对存储调度,K8S对存储的供应和使用做了抽象,以API形式提供给管理员和用户使用。要完成这一任务,引入了两个新的API资源:Persistent Volume(持久卷,以下简称PV)和Persistent Volume Cla
2017-08-07 16:46:46 7215
转载 在K8s中创建StatefulSet
在K8s中创建StatefulSet遇到的问题:使用Deployment创建的Pod是无状态的,当挂在Volume之后,如果该Pod挂了,Replication Controller会再run一个来保证可用性,但是由于是无状态的,Pod挂了的时候与之前的Volume的关系就已经断开了,新起来的Pod无法找到之前的Pod。但是对于用户而言,他们对底层的Pod挂了没有感知,但是当Pod挂了之后
2017-08-04 17:12:49 1920
转载 StatefulSet: Kubernetes 中对有状态应用的运行和伸缩
在最新发布的 Kubernetes 1.5 我们将过去的 PetSet 功能升级到了 Beta 版本,并重新命名为StatefulSet。除了依照社区民意改了名字之外,这一 API 对象并没有太大变化,不过我们在向集合里部署 Pod 的过程中加入了“每索引最多一个”的语义。有了顺序部署、顺序终结、唯一网络名称以及持久稳定的存储,我们认为,对于大量的有状态容器化负载,我们已经具备了一定的支持能力
2017-08-04 15:12:52 2282
原创 kubernetes资源对象--DaemonSet
DaemonSet能够让所有(或者特定)的节点运行同一个pod。当节点加入到K8S集群中,pod会被(DaemonSet)调度到该节点上运行,当节点从K8S集群中被移除,被DaemonSet调度的pod会被移除,如果删除DaemonSet,所有跟这个DaemonSet相关的pods都会被删除。在某种程度上,DaemonSet承担了RC的部分功能,它也能保证相关pods持续运行,如果一个DaemonSet的Pod被杀死、停止、或者崩溃,那么DaemonSet将会重新创建一个新的副本在这台计算节点上。
2017-08-03 15:56:11 5905
原创 docker--基础镜像和dockerfile
制作基础镜像注意:需要在CentOS6下操作准备工作yum -y install febootstrap下载ISO镜像文件到服务器mkdir /mnt/centos6/mount -o loopCentOS-6.8-x86_64-bin-DVD1.iso /mnt/centos6/安装基础包febootstrap -i bash -i yum -i iputils
2017-08-02 17:48:34 4422
转载 kubernetes资源对象--Volume
在Docker的设计实现中,容器中的数据是临时的,即当容器被销毁时,其中的数据将会丢失。如果需要持久化数据,需要使用Docker数据卷挂载宿主机上的文件或者目录到容器中。在K8S中,当Pod重建的时候,数据是会丢失的,K8S也是通过数据卷挂载来提供Pod数据的持久化的。K8S数据卷是对Docker数据卷的扩展,K8S数据卷是Pod级别的,可以用来实现Pod中容器的文件共享。支持的类型Emp
2017-08-02 15:05:42 3001
原创 kubernetes资源对象--pod和job
podPod是K8S的最小操作单元,一个Pod可以由一个或多个容器组成;整个K8S系统都是围绕着Pod展开的,比如如何部署运行Pod、如何保证Pod的数量、如何访问Pod等。特点Pod是能够被创建、调度和管理的最小单元;每个Pod都有一个独立的IP;
2017-08-01 18:03:39 9144
原创 kubernetes资源对象--RC和RS
Replication Controller(RC) RC是K8S中的另一个核心概念,应用托管在K8S后,K8S需要保证应用能够持续运行,这是RC的工作内容。主要功能确保pod数量:RC用来管理正常运行Pod数量,一个RC可以由一个或多个Pod组成,在RC被创建后,系统会根据定义好的副本数来创建Pod数量。在运行过程中,如果Pod数量小于定义的,就会重启停止的或重新分配Pod,反
2017-08-01 17:54:05 11452
原创 kubernetes资源对象--deployment
Deployment(中文意思为部署、调度)提供了一种更加简单的更新RC和Pod的机制,K8S版本1.2实现的。通过在Deployment中描述所期望的集群状态,Deployment Controller会将现在的集群状态在一个可控的速度下逐步更新成所期望的集群状态。Deployment主要职责同样是为了保证pod的数量和健康,90%的功能与RC完全一样,可以看做新一代的RC。功能Depl
2017-08-01 17:33:25 10463
转载 Kubernetes服务之“运行单实例的有状态服务”
Kubernetes服务之“运行单实例的有状态服务”,kubernetes实例目标 在你的环境中创建一个PV 创建一个MySQl的Deployment 在集群中以DNS名称的方式,将MySQL暴露给其他的pod开始之前 你需要一个Kubernetes集群,一个可以连接到集群的kubectl命令行工具。如果你没有集群,你可以使用Minikube来创建。 我们
2017-08-01 16:54:13 834 1
原创 kubernetes创建资源对象yaml文件例子--rc
apiVersion: v1 #指定api版本,此值必须在kubectl apiversion中kind: ReplicationController #指定创建资源的角色/类型metadata: #资源的元数据/属性 name: test-rc #资源的名字,在同一个namespace中必须唯一 labels: #设定资源的标签 software: apache pr
2017-08-01 14:28:41 6337
转载 听说你天天加班,那就不给你加薪了
比自己不加薪更痛苦的是什么?别人加薪了。比别人加薪更痛苦的是什么?“别人”没有我努力(加班多)。其实,老板都看得见。无论是你天天留下来加班到八九点,还是你P了十分钟图晒的朋友圈,聪明又善良的老板都会勤勤恳恳的点赞。 然而,点赞是因为老板的职业素养,而不是你的看上去很勤奋。说的再直白点,点赞因为我是个好领导,而不是因为你看上去是个好员工。
2017-08-01 12:04:32 2533 1
转载 kubernetes将外部服务映射为内部服务
在实际应用中,一般不会把mysql这种重IO、有状态的应用直接放入k8s中,而是使用专用的服务器来独立部署。而像web这种无状态应用依然会运行在k8s当中,这时web服务器要连接k8s管理之外的数据库,有两种方式:一是直接连接数据库所在物理服务器IP,另一种方式就是借助k8s的Endpoints直接将外部服务器映射为k8s内部的一个服务。下面这个例子就是展示Endpoints将外部服务映射为k8s内部服务的例子。
2017-07-27 15:57:28 7429
转载 Kubernetes核心概念总结
1、基础架构1.1 Master Master节点上面主要由四个模块组成:APIServer、scheduler、controller manager、etcd。 APIServer。APIServer负责对外提供RESTful的Kubernetes API服务,它是系统管理指令的统一入口,任何对资源进行增删改查的操作都要交给APIServer处理后再提交给etcd。如架构
2017-07-24 17:54:34 961
原创 使用kube-proxy让外部网络访问K8S service的ClusterIP
本文基于kubernetes 1.5.2版本编写配置方式kubernetes版本大于或者等于1.2时,外部网络(即非K8S集群内的网络)访问cluster IP的办法是: 修改master的/etc/kubernetes/proxy,把KUBE_PROXY_ARGS=”“改为KUBE_PROXY_ARGS=”–proxy-mode=userspace” 重启kube-proxy服务 在核心路由
2017-07-24 16:27:34 48748
转载 etcd:从应用场景到实现原理的全方位解读
随着CoreOS和Kubernetes等项目在开源社区日益火热,它们项目中都用到的etcd组件作为一个高可用强一致性的服务发现存储仓库,渐 渐为开发人员所关注。在云计算时代,如何让服务快速透明地接入到计算集群中,如何让共享配置信息快速被集群中的所有机器发现,更为重要的是,如何构建这样 一套高可用、安全、易于部署以及响应快速的服务集群,已经成为了迫切需要解决的问题。etcd为解决这类问题带来了福音,
2017-07-11 15:09:06 1082
原创 docker web-GUI DockerUI和Shipyard对比
DockerUI和Shipyard对比相似基于Docker API,提供等同Docker命令行的大部分功能,支持container管理,image管理。web页面查看和管理容器和镜像,均能批量管理容器的生命周期管理差异dockerui能修改容器配置 dockerui能管理和新增网络 dockerui能新增volume Shipyard能创建容器 Shipyard能拉取镜像 Ship
2017-07-10 16:43:34 2824
原创 cAdvisor、InfluxDB、Grafana搭建Docker1.12性能监控平台
通过cadvisor+influxdb+grafana三者有机结合,打造跨主机容器监控。优点1、跨主机监控,可扩展2、容器自发现3、历史数据长期保存4、自定义配置程度高5、采集间隔很短,达到秒级6、多种方式告警缺点1、不能自动隐藏已停止的容器2、grafana会展现所有的数据,导致展示长时间的数据时,各个数据点重叠。组件数据采集–cAdvisorcAdvisor为Docker容器用户
2017-07-10 14:54:16 2819
原创 python字典和nametuple互相转换例子
如果tuple中的元素很多的时候操作起来就比较麻烦,有可能会由于索引错误导致出错。 namedtuple对象给tuple命名。下面的例子可以字典和nametuple互相转换
2017-06-16 01:59:00 3790
原创 xshell登录到CentOS7上时出现“The remote SSH server rejected X11 forwarding request.
其原因是肯能对openssh版本进行了升级。解决方法为: yum install xorg-x11-font* xorg-x11-xauth /etc/ssh/sshd_config文件中 X11Forwarding参数为yes 再将UseLogin参数为no,可能这一行最开始是被注释,去掉注
2017-04-28 15:00:42 20860
原创 Python模拟浏览器上传文件脚本(Multipart/form-data格式)
http协议本身的原始方法不支持multipart/form-data请求,这个请求由原始方法演变而来的。multipart/form-data的基础方法是post,也就是说是由post方法来组合实现的,与post方法的不同之处:请求头,请求体。multipart/form-data的请求头必须包含一个特殊的头信息:Content-Type,且其值也必须规定为multipart/form-data,
2017-04-18 22:49:21 15488 1
原创 zabbix发送告警
之前使用邮件和短信发送zabbix告警信息,但告警信息无法实时查看或者无法发送,故障无法及时通知运维人员。后来使用第三方微信接口发送信息,愉快地用了一年多,突然收费了。zabbix告警一直是我的痛点,近期发现一个基于个人微信号的信息发送工具-lykchat。引用:http://blog.csdn.net/liyingke112/article/details/68955298
2017-04-05 17:59:16 1517
原创 个人微信号发送zabbix告警信息
之前使用邮件和短信发送zabbix告警信息,但告警信息无法实时查看或者无法发送,故障无法及时通知运维人员。后来使用第三方微信接口发送信息,愉快地用了一年多,突然收费了。zabbix告警一直是我的痛点,近期发现一个基于个人微信号的信息发送工具-lykchat。引用:http://blog.csdn.net/liyingke112/article/details/68955298
2017-04-05 16:07:41 1421
原创 一个简单好用的zabbix告警信息发送工具
之前使用邮件和短信发送zabbix告警信息,但告警信息无法实时查看或者无法发送,故障无法及时通知运维人员。后来使用第三方微信接口发送信息,愉快地用了一年多,突然收费了。zabbix告警一直是我的痛点,近期发现一个基于个人微信号的信息发送工具-lykchat。
2017-04-05 15:48:06 1784
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人