kubernetes

k8s拉取私有仓库镜像

首先k8s要主动拉取私有仓库则需要配置secret 只需要一条命令 kubectl create secret docker-registry {secret名字} --docker-server={仓库地址} --docker-username={你的账号} --docker-password={你的密码} --docker-email {你的邮箱} -n {命名空间} 当然在创建pod的yaml文件也需要指定secret,直接上例子 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: my-app namespace: uread spec: replicas: 2 template:

kubernetes

安装kubernetes-dashboard管理k8s集群

首先我们知道k8s功能十分强大,但是我们要学习它很多命令其实还是不够友好,所以需要一个web ui控制台来管理。 安装仅需要两个yaml文件 安装前提是已经安装好k8s 编写文件a.yaml(10.104.241.122改成自己的k8s的ip) apiVersion: extensions/v1beta1 kind: Deployment metadata: # Keep the name in sync with image version and # gce/coreos/kube-manifests/addons/dashboard counterparts

kubernetes

在centos7上安装配置k8s集群

配置背景介绍 为什么要用kubernetes这么复杂的docker集群管理工具呢?一开始接触了docker内置的swarm,这个工具非常简单快捷的完成docker集群功能。但是在使用docker1.13内置的swarm做集群的时候遇到vip负载均衡没有正确映射端口到外网,或者出现地址被占用的情况,这对高可用性的需求是不利的,然而又没找到一个解决方案,只能转投k8s。 实验环境 腾讯云 centos7.3 64位 安装 yum-config-manager --add-repo https://docs.docker.com/v1.13/engine/installation/linux/repo_files/centos/docker.repo yum

生产环境docker历险记

首先感谢产品狗jinkey(https://jinkey.ai/)把他的服务器托付给我部署应用,下面讲一下最近在生产环境使用docker惊心动魄的经历。 docker是双面刃 你爱的人往往伤你最深,docker的环境隔离,快速交付,持续构建支持等优势往往让人爱不惜手,但是越依赖于docker的时候,你却会发现越来越无助,因为高级的资料真的不好找。 环境隔离分析 首先我们来看一下docker环境隔离的实现原理,其实本质是利用linux系统的进程命名空间隔离进程。本身linux系统只有一个命名空间,每个命名空间下面可以有很多进程树。但是当新建了一个命名空间之后,该命名空间下的进程不能知道其它命名空间的进程,所以达到了隔离进程的目的。但是注意命名空间同级进程可以知道命名空间下的进程,这也是我们在系统输入ps aux可以看到docker容器跑起来的进程。 参考:http://blog.csdn.net/tongtest/article/details/

chrome插件开发实践

首先我们来看一下chrome能做什么事情,其实主要的功能是往页面注入一段js代码,修改浏览器外观和获取浏览器内部信息。 chrome插件生命周期 浏览器打开时执行一次的js代码 每打开一个页面执行的js代码 点击浏览器上插件按钮,打开一个页面,执行的js代码 开发chrome插件的准备工作 一个文本编辑器即可 一个hello world工程 新建一个文本文件:manifest.json 内容如下: { "manifest_version": 2, "name": "优读Uread网页版插件", "version": "1.

Uread 自动化运维平台实践

首先技术并没有好坏之分,只能说一种技术在特定场景会优于另一种技术。 首先uread优读(http://aiuread.com/)作为一个还处于起步阶段的团队,那么没办法造出像大企业他们那种自动化运维平台,真实情况是连用OpenStack来管理应用都是一种高难度活。 第一阶段,单体应用,纯人力部署 团队一开始,反正后端就一个系统,然后又是用git作为团队内部的协作工具,部署理所当然是直接每次发布新版本,直接执行git pull,然后执行一个封装好kill进程,重启进程的shell脚本,接着更新版本流程完成。 第二阶段,服务拆分,交互遇到问题 随着功能越来越多,后端前端的同学也越来越多,以前一个工程囊括整个项目的做法的弊端开始显露出来。首先,由于工程膨胀,要一位新来的同学看懂整个工程会变得非常困难,并且提交代码的时候冲突会非常严重。现在微服务不是很流行么,所以团队也考虑是不是拆开成微服务呢。

IOT

微信IOT与airkiss3的wifi硬件操作实践

最近接触微信硬件平台开发,然后微信扫描连接wifi设备的开发流程只是很简单的,无奈文档实在不多,下面我写一下详细的成功的开发流程。 硬件准备 1台安卓机,1台装有微信的手机(安卓或者ios) 模拟设备制作 假如我们手头上没有wifi硬件设备,我们可以拿一台安卓机来模拟wifi硬件设备,当然要下载一个软件,链接是: http://iot.weixin.qq.com/wiki/doc/sdk/Airkiss3.0_SDK_for_android_20160113_165358.zip 当然这个安装包里面的apk不要直接安装,因为没法直接用来调试,下面会说如何修改源码编译出可用的app。 申请一个测试号

java

从0开始编写一个spring boot 应用

为什么要使用spring boot? 入门简单,无需编写大量的xml文件来配置应用 内置tomcat,可以生成直接运行的独立jar文件 简化了spring框架一些繁琐的开发方式,提供很多与第三方库的结合 使用eclipse新建一个spring boot工程 1.先在eclipse官网下载一个eclipse EE 2.new -> Maven Project 3.填写项目信息 ** 安装spring boot依赖 ** 在pom.xml文件添加一点点东西(保存的时候eclipse会自动下载依赖),整个文件如下: <project xmlns="http://maven.

docker容器编排实践

由于本人比较懒,对于整天配置环境感到无聊,用了docker之后,都是能上docker即上docker。但是以前docker在跨主机情况支持较弱,往往要用复杂的mesos或者k8s,反正配置一次我就怕了。忽然发现docker 1.12之后自带了swarm来实现容器编排。 下面记录一下,一次利用swarm来实现容器编排的过程,仅仅是记录过程。 实践环境 2台1核1G服务器,用的企鹅家的服务器。 操作系统:centos 7.2 64bit docker版本:1.12.6 安装docker 既然是docker容器编排,必定要安装docker啦(仅需两句命令即可安装)。 yum install epel-release -y

利用微信服务号oauth实现扫码登录

谁说管理后台就要用繁琐的帐号密码登录的? 写代码写了五年,写管理后台更是家常便饭。然后写多了之后,一是觉得常规的太没有味道了。第一步,输入帐号密码,第二步校验帐号密码是否正确。最多就加上验证码,防止恶意登录。 但是,最近发现越来越多网站都支持APP扫码登录了,那么我写的管理后台也可以采用高大上(简单粗暴)的扫码登录嘛。但是,我没理由去开发一个APP吧(其实我不会app开发)。这个时候,捡一个现成的app就好了嘛。但是现成app要开发帐号信息才行呀,符合这个要求的一个app就是微信。微信服务号提供oauth支持,可以根据openid唯一识别用户。 先放三张帅气的图片体现一下这种方法的优雅: 别扫这个二维码,因为地址是本地的,线上地址怎么可以放出来呢? 看起来还是挺顺眼和方便的对吧,【容我自傲一下,毕竟我是后台和运维出身】 如果没有权限的微信扫码是不让他登录的,多么完美!

日志

聊聊日志这件小事情

写应用不写日志,只会在撞板后也不知道为何撞板。线上的问题永远不会知道为何会发生,只会出现事故之后身处茫然之中。 哪怕用print也要输出关键数据 新手会经常在调试的时候使用print,不论这种方式的优劣,反正关键位置数据哪怕用print输出都比没有好。在linux系统,nohup启动进程的时候,可以把print输出的内容导到一个文件。只要有print,就多了一条路子来定位数据。 记录日志请用成熟的框架 真心不推荐用print来记录日志,为什么呢?因为成熟的框架往往可以设置日志的存储方式和随意控制存储哪种级别日志内容。 我们记录日志,大部分时候是不会翻阅的,但是我们很多时候又需要从日志挖掘一些数据。例如每天请求某个接口多少次,然后有哪些接口请求耗时超过1秒的等诸如此类。 如果日志需要用于分析,我们存在于文本,就需要编写繁琐的代码来获取结果。假如我们用了mysql或者mongodb等数据库存储日志,我们就可以简单调用API来统计数据。 我们再看看这些主流的日志框架(例如java的log4j,python的标准库logging),他们往往提供若干个记录日志的方法。例如debug,info,

从开发微信小程序看开发模式

不讨论微信小程序的商业价值,单纯从开发微信小程序来看,它的开发模式是很先进的。 1.一个页面一个文件夹 小程序每一个页面都由一个wxml(其实就是html),一个wxss(其实就是css)和一个js文件构成。并且页面之间样式和js都是隔离开的,而路由统一由根目录下的app.json配置而成。这样子的结构在后期是非常有利于维护的。 2.内置了常用组件 以前我们还没有使用vue等框架的时候,我们页面的组件都是一堆html片段构成的,看起来就繁杂。让我们看看下面这两幅图对比一下(都是为了实现进度条组件): 是不是小程序的开发方式看起来就是赏心悦目呢? 3.小程序本质 可以看成,VUE + 内置一堆JS方法 + 禁止使用JQUERY。而微信小程序的开发者工具可以看作配置好的vue开发环境,不得不吐槽一下前端的环境配置不是一般的难(这句话对于后端同学来说的)。 禁止jquery意思是微信小程序不允许直接操作dom,而修改页面的方式跟vue的API差不多,

谈谈技术选型的那些事情

不知道多少想进入互联网行业的创业者曾问我,我想做一个项目,我该用什么技术? 存在即合理,你所选择的所有技术本质上都可以完成任务,只是成本问题。 首先考虑的成本是学习成本,如果你说用这种技术很轻易可以实现功能,但是学习使用这种技术就需要几个月,等你团队成员学习完成,项目早就过了最佳时期。所以你明白外面为什么一堆企业在用PHP了,因为上手实在是快得没有朋友。 接着需要考虑的成本,就是找人的成本。试想想,你决定用C++来写一个后台管理系统,你确定能很低成本找到会这技能的同学吗?但是假如你采用了php这开发方案,外头随便一抓都是php,找人根本不愁(注意:我并没有对php有偏见)。 核心技术研发风险也是一个需要考虑的问题,假如你是要制作一只爬虫,我相信你在搜索引擎找到的大部分资料都是关于python的,如果你用其它语言来写爬虫也无可厚非,反正都是可以写出来,还是那句话,成本问题。 请用你的技术leader最熟悉的技术,要知道项目排期,

学技术我们其实在学什么?

很多同学曾经问我,该学习什么技术,怎么样去学习技术?其实每当我听到这个问题,我是无比纠结。这是一个无法回答的大问题,这种话题可以吹上几年,并且每个人都是独特的,方法只能借鉴不可复制也。下面说说个人学技术的一些感悟,也许全都是错的,但是我就是要写出来。(不喜欢看长文章的同学请直接看结尾总结那段即可) 一、学习技术的目的 我们学习技术往往是带有功利心的,哪怕你用技术来玩,也是一种目的嘛。所以,每当你问别人,该学习什么技术的时候。先问一下自己想要做什么。举一个例子,一个上了大学java课程的同学跑过来问我,我应该如何学习,要学什么东西? 我会反问他一个问题,你以后想去开发安卓亦或者是开发网站,还是说想搞游戏。只要他回答出这个问题,我也知道如何回答了,假设这个同学选择了网站开发。 我会说,

前端

学习vue的一些资源

下图仅仅是给入门vue的同学一个参考,若有错误和建议欢迎指出 一些参考资料: 官方教程 什么是双向绑定 vue生态 vue 常用ui组件 使用webpack构建vue vue的小demo vue路由例子 vue跨组件通信的几种方法 Vue.js——60分钟快速入门 到底vuex是什么? VUE资源列表 Vue.js——60分钟组件快速入门(上篇) Vue.js——60分钟组件快速入门(下篇) 采用vue+webpack构建的单页应用——私人博客MintloG诞生记 在多页面项目下使用 Webpack + Vue *文章首发于公众号:研发课堂,

一只优雅的小爬虫诞生记

爬虫,几家欢喜几人愁。爬者,拿到有利数据,分析行为,产生价值。被爬者,一是损失数据,二是遇到不怀好意的爬虫往往被全站复制或服务器受冲击而无法服务。今天说的是一只友好的爬虫是如何构建出来的,请勿用它伤害他人。 爬虫一生所遇 俗话说,如果我比别人看得远些,那是因为我站在巨人们的肩上。前人之鉴,后人之师。小爬虫在胎教的时候就该传授它的前辈参悟的人生经验,了解网络的可怕之处。看看我提供的胎教课程: 被爬网站偶然出现服务无法响应,需重试 网站检查某些header,特别是referer这个参数,请警惕 访问频率限制,短时间单IP或者单帐号内往往有频率限制。更高级的还可能用近段时间访问频率,时间段请求频率来识别爬虫行为。 目标爬取网站需要登录 网站采用js运算产生最终页面 小爬虫身份成谜 爬虫如此泛滥,

技术团队组建的血泪经验

对于技术人来说非技术问题往往比技术问题更加难以解决,当下创业势头依旧强盛,而互联网行业就最受人瞩目,而互联网企业最重要的一个组成部分就是技术团队,今天分享一下过来人的一点点经验教训。 为什么需要技术团队? 也许有的人会有这样子的疑惑,怎么就要建立自己的技术团队,外面的外包团队一大堆,随便叫一家实现系统不就好了吗。 个人看法是尽可能拥有自己的技术团队,因为外包可能会出现下面的问题: 制作的系统功能可用,但是架构设计无比混乱,一旦加入新需求,往往需要推倒重做(这个当中原因是多方面的,也不是100%会出现)。 个别团队会在制作的系统加入后门,安全性无法保障。 沟通成本很高,需求修改耗时严重。 先找好技术负责人 可以这样子说,技术负责人关乎技术团队的死活。他一方面管理技术人员,另一方面跟需求方打交道。一个系统需求过来,要能够评估任务复杂度,拆分任务,任务排期。还要了解各种技术,

学会这几条命令就可以折磨服务器了

本文只想说如何让初学者快速上手linux服务器,但是服务器维护是需要大量经验积累的。本文只负责引导初学者进门,修行就靠各位看官自己了。 认识Linux 其实linux跟window也差不多,大家也有图形界面,只不过linux用于服务器的时候往往只使用命令行而非界面(界面太消耗资源了)。平时所谓的服务器维护,无非就是敲一下命令,重启应用,更新文件,安装软件等(当然高级的做法必然是有自己的运维系统,并且是可视化操作的,然而我们现在先学习最原始的方法哈)。然后下面介绍的命令是多年折磨服务器经验总结得出的高频命令,维护服务器基本上就使用这几条命令(入门将就着看,进阶再研究别的嘛) 文件复制,移动,删除,创建 复制:cp -v 源文件路径 目标文件路径 移动:mv -v