Posts

kubernetes dashboard 升级之路

在前面手动搭建高可用的kubernetes 集群一文中我们安装的kubernetes集群是v1.8.2版本,该版本的dashboard插件还是1.6.x,如果你把dashboard暴露在公网环境下面访问的话,是非常不安全的,因为该版本没有任何的安全登录之类的处理,在最新版本的1.7.x中则新增了更多安全相关的特性,我们可以升级到该版本或以上来暴露我们的dashboard到公网环境下面,当然安全都是相对的,能不暴露在公网环境下面当然是最好的。

给博客加上HTTPS

谁都不愿意在使用网站服务的时候,被恶心的运营商劫持加上一些他们的服务(真的很贱,不是吗?),不过这能难道我们程序员吗?当然不能,上https,老子全站https,你再劫持给我看看。

https证书服务大部分都是收费的,而且很贵,阿里云可以申请一个免费的证书,只能绑定一个域名,这里我们使用更加友好的免费https服务:Let’s Encrypt

手动搭建高可用的kubernetes 集群

之前按照和我一步步部署 kubernetes 集群的步骤一步一步的成功的使用二进制的方式安装了kubernetes集群,在该文档的基础上重新部署了最新的v1.8.2版本,实现了kube-apiserver的高可用、traefik ingress 的部署、在kubernetes上安装docker的私有仓库harbor、容器化kubernetes部分组建、使用阿里云日志服务收集日志。

部署完成后,你将理解系统各组件的交互原理,进而能快速解决实际问题,所以本文档主要适合于那些有一定kubernetes基础,想通过一步步部署的方式来学习和了解系统配置、运行原理的人。

本系列系文档适用于 CentOS 7Ubuntu 16.04 及以上版本系统,由于启用了 TLS 双向认证、RBAC 授权等严格的安全机制,建议从头开始部署,否则可能会认证、授权等失败!

Django 中STATIC_ROOT 与STATICFILES_DIRS的区别

在做Django项目的时候,经常会遇到静态文件访问的问题,在本地开发的时候可以正常的访问静态文件,部署到服务器上后就出现各种幺蛾子了,我猜你一定也遇到过吧?之前在settings.py配置文件中对STATIC_ROOTSTATICFILES_DIRS两个配置项不是特别理解,总感觉都差不多,在线上就把STATIC_ROOT替换成STATICFILES_DIRS了,虽然可以解决问题,但是却没有知其所以然。

利用Python 优雅的将PDF 转换成图片

之前收集了很多优秀的PDF文档,但是需要看的时候不是很方便,需要去找到这个文件,如果是在手机上的话往往还需要下载PDF相关的插件才行,而且最大的问题是不便于资料的整理和分享。如果能够将PDF转换成网页,岂不是就能解决这些问题了?还能直接分享出去。

这里利用PyPDF包来处理PDF文件,为了方便快捷,我这里直接将一个页面转换成图片,就不需要去识别页面中的每一个PDF元素了,这是没必要的。

服务网格(Service Mesh)是什么?

现在最火的后端架构无疑是微服务了,微服务将之前的单体应用拆分成了许多独立的服务应用,每个微服务都是独立的,好处自然很多,但是随着应用的越来越大,微服务暴露出来的问题也就随之而来了,微服务越来越多,管理越来越麻烦,特别是要你部署一套新环境的时候,你就能体会到这种痛苦了,随之而来的服务发现、负载均衡、Trace跟踪、流量管理、安全认证等等问题。如果从头到尾完成过一套微服务框架的话,你就会知道这里面涉及到的东西真的非常多。当然随着微服务的不断发展,微服务的生态也不断完善,最近就发现新一代的微服务开发就悄然兴起了,那就是服务网格/Service Mesh

Kubernetes Deployment滚动升级

我们k8s集群使用的是1.7.7版本的,该版本中官方已经推荐使用Deployment代替Replication Controller(rc)了,Deployment继承了rc的全部功能外,还可以查看升级详细进度和状态,当升级出现问题的时候,可以使用回滚操作回滚到指定的版本,每一次对Deployment的操作,都会保存下来,变能方便的进行回滚操作了,另外对于每一次升级都可以随时暂停和启动,拥有多种升级方案:Recreate删除现在的Pod,重新创建;RollingUpdate滚动升级,逐步替换现有Pod,对于生产环境的服务升级,显然这是一种最好的方式。

Kubernetes使用Prometheus搭建监控平台

最近在测试环境搭建了Kubernetes集群环境,迁移了部分测试环境的应用,由于测试集群性能不是很好,有时会遇到集群资源不够的情况,一般情况下我们是直接通过Dashboard的资源统计图标进行观察的,但是很显然如果要上到生产环境,就需要更自动化的方式来对集群、Pod甚至容器进行监控了。Kubernetes内置了一套监控方案:influxdb+grafana+heapster。但由于之前我们的应用的业务监控使用的是Prometheus,所以这里准备使用Prometheus来完成k8s的集群监控。

Python装饰器简介

装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能

用awk做基本运算

awk是非常强大的文本处理工具,之前经常见到脚本里面有使用,但是没有自己完完整整来写过awk命令。正好今天公司里有一个非常的大的日志文件需要分析。需求是将日志文件中记录的耗时时间评价值、最大值、最小值计算出来。日志的格式如下:

[2016-03-30 00:02:02,475] [17243] [140344433927936] [MainThread] [tasks.py:733] DEBUG [upload to oss] upload file /data/image5/user_upload_image/20160330/00/1458483897397580_101183475_1459267295740.jpg to oss cost time 28 ms

Nginx中如何设置301跳转

网站中带www和不带都可以访问,但是这样却会不利于网站SEO的,会分权,所以需要将二者的访问合并到一起,这特别在网站架设之初就应该好好规划。

有很多的第三方DNS解析服务,提供了直接的显示跳转的服务,比如dnspod,但是最近我在使用的过程中发现该服务非常的不稳定,导致网站经常性的访问不了。所以就打算自己来做,方法很简单,就是301跳转301是永久跳转302是临时性跳转

用python处理csv文件

CSV通常是纯文本文件。可以用Sublime Text或者EXCEL打开,python提供了一个非常强大的处理csv文件的库csv。

一般情况,如果csv文件不是很复杂则可以直接输出文件中每行的数据,代码如下:

import csv

def read_csv_file(path):
    with open(path, 'rb') as f:  # r表示读取,b表示读取的文件
        reader = csv.reader(f)
        for row in reader:
            print row
    f.close()