08-K8s集群搭建---CoreDNS创建&DashBoard
由于k8s集群内部的服务发现都是通过DNS来发现并实现的,所以需要依赖DNS服务 1.创建coredns.yaml文件:[root@linux-node1 ~]# cat > coredns.yaml << EOF apiVersion: v1 kind: ServiceAccount metadata: name: coredns namespace: kube-system labels: kubernetes.io/cluster-service: "true" addonmanager.kubernetes.io/mode: Reconcile --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: labels: kubernetes.io/bootstrapping: rbac-defaults addonmanager.kubernetes.io/mode: Reconcile name: syste...
07-K8s集群搭建---创建K8s应用
1.创建一个测试用的deployment[root@linux-node1 ~]# kubectl run net-test --image=alpine --replicas=3 sleep 360000 2.查看创建情况[root@linux-node1 ~]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE net-test-5767cb94df-6crmr 1/1 Running 0 17s 10.2.97.176 192.168.56.13 net-test-5767cb94df-9mpmb 1/1 Running 0 17s 10.2.70.187 192.168.56.12 net-test-5767cb94df-x8l44 1/1 Running 0 ...
06-K8s集群搭建---Flannel网络部署
1.为Flannel生成证书[root@linux-node1 ~]# vim flanneld-csr.json { "CN": "flanneld", "hosts": [], "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "BeiJing", "L": "BeiJing", "O": "k8s", "OU": "System" } ] } 2.生成证书[root@linux-node1 ~]# cfssl gencert -ca=/opt/kubernetes/ssl/ca.pem \ -ca-key=/opt/kubernetes/ssl/ca-key.pem \ -config=/opt/kubernetes/ssl/ca-config.json \ -profile=kubernetes flanneld-csr.json | cfssljs...
05-K8s集群搭建---Node节点部署
部署kubelet1.软件包准备[root@linux-node1 ~]# cd /usr/local/src/kubernetes/server/bin/ [root@linux-node1 bin]# cp kubelet kube-proxy /opt/kubernetes/bin/ [root@linux-node1 bin]# scp kubelet kube-proxy 192.168.56.12:/opt/kubernetes/bin/ [root@linux-node1 bin]# scp kubelet kube-proxy 192.168.56.13:/opt/kubernetes/bin/ 2.创建角色绑定kubelet 启动时向 kube-apiserver 发送 TLS bootstrapping 请求,需要先将 bootstrap token 文件中的 kubelet-bootstrap 用户赋予 system:node-bootstrapper cluster 角色(role), 然后 kubelet 才能有权限创建认证请求(certificate...
04-K8s集群搭建---Master节点部署
master节点涉及服务组件ApiServer , Scheduler , ControllerManager, kubectl 1.软件包准备:[root@linux-node1 ~]# cd /usr/local/src/kubernetes [root@linux-node1 kubernetes]# cp server/bin/kube-apiserver /opt/kubernetes/bin/ [root@linux-node1 kubernetes]# cp server/bin/kube-controller-manager /opt/kubernetes/bin/ [root@linux-node1 kubernetes]# cp server/bin/kube-scheduler /opt/kubernetes/bin/ 2.创建生成CSR的 JSON 配置文件:[root@linux-node1 src]# cat > kubernetes-csr.json << EOF { "CN": "kubernetes", "hosts"...
03-K8s集群搭建---部署ETCD集群
0.解压安装分发etcd二进制包:[root@linux-node1 src]# tar zxf etcd-v3.2.18-linux-amd64.tar.gz [root@linux-node1 src]# cd etcd-v3.2.18-linux-amd64 [root@linux-node1 etcd-v3.2.18-linux-amd64]# chmod +x etcdctl [root@linux-node1 etcd-v3.2.18-linux-amd64]# cp etcd etcdctl /opt/kubernetes/bin/ [root@linux-node1 etcd-v3.2.18-linux-amd64]# scp etcd etcdctl 192.168.56.12:/opt/kubernetes/bin/ [root@linux-node1 etcd-v3.2.18-linux-amd64]# scp etcd etcdctl 192.168.56.13:/opt/kubernetes/bin/ 1.创建 etcd 证书签名请求:[root@...
02-K8s集群搭建---CA证书生成
kubernetes 系统的各组件需要使用 TLS 证书对通信进行加密,使用 CloudFlare 的 PKI 工具集 cfssl 来生成 Certificate Authority (CA) 和其它证书; 使用证书的组件如下: etcd:使用 ca.pem、kubernetes-key.pem、kubernetes.pem; kube-apiserver:使用 ca.pem、kubernetes-key.pem、kubernetes.pem; kubelet:使用 ca.pem; kube-proxy:使用 ca.pem、kube-proxy-key.pem、kube-proxy.pem; kubectl:使用 ca.pem、admin-key.pem、admin.pem; kube-controller、kube-scheduler 当前需要和 kube-apiserver 部署在同一台机器上且使用非安全端口通信,故不需要证书。 (后面的操作我们做到哪一步再去做对应组建的证书,以免出现差错 1. 安装 CFSSL(二进制方式)[root@linux-node1 ~]# c...
01-K8s集群搭建---系统初始化配置
1.架构说明: 2.版本信息: 系统版本CentOS7.x Kubernets: v1.10 Etcd: v3.3.1 Docker: 18.03.1-ce Flannel: v1.10 CNI-Plugins: v0.7.0 建议部署节点:最少三个节点,请配置好主机名解析(必备) 3.系统初始化(三台服务器分别执行即可,以node1为例):a. 主机名配置 node1: echo "linux-node1.example.com" > /etc/hostname b. 设置/etc/hosts保证主机名能够解析 node1: echo "192.168.56.11 linux-node1 linux-node1.example.com" >> /etc/hosts c. 关闭SELinux及防火墙 node1: systemctl disable firewalld; systemctl stop firewalld sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config...
如何实现Mysql数据库差异化对比
在团队开发中,一般都会存在测试、预发布、正式环境或多版本进行开发;代码的管理一般也有git/svn等等工具; 但是在mysql的管理就有些麻烦了,对于一些正规化的大厂团队,对数据库的每一次表结构都有详细的记录,这样在执行变更/升级的时候只需要执行直接执行变更过的SQL即可,但是有时候也会出现记录不完整或者遗漏造成测试/预发布/正式环境的不一致。 这时候就需要人工去查找两个数据库数据表中的不同;看哪里少什么,哪里多了什么,但是如果人工去每次desc/select是很费时费力的事情;那么这时候我们就需要用到mysql的相关工具;例如mysqldiff 例如:这里有个db1跟db2 数据库,各自里面有两张表student_1,student2,这里只是举个例子,下面的结构用肉眼是可以看出来的; MariaDB [(none)]> use db1; Database changed MariaDB [db1]> show tables; +---------------+ | Tables_in_db1 | +---------------+ | student_1 ...
如何利用Git Webhook 进行部署
作为一名”伪码农”运维工程师,在接触了开发方面的知识后;也在写项目时一直使用git,可是开发、调试、部署都是在本地进行的;在部署到服务器时也是通过手工去获取仓库的代码;1.开发完代码提交到远程仓库;2.登录远程服务器,并切到代码目录进行git pull;3.重启supervisor应用(我这边开发的python web应用是supervisor进行管理); 当然如果只是一次性部署上去就不再修改的话并没啥问题,但是要是项目持续性修改迭代的话,就比较麻烦了,就在不断的重复着上面的步骤。作为一个”伪码农”,怎么允许不断的重复同样的工作,于是git webhooks闪亮登场;大家对于钩子并不陌生,同样的版本控制SVN也有钩子这个功能;只是个人更加的倾向于使用git; 然后git也催生出来了很多;比如使用最广泛的是GitHub,再其次就是Gitlab,最后就是我这边是用的Gogs;他们都有同样的功能;只是说看需求跟习惯; gogs有个docker版本;能在2分钟之内就可以跑起来非常轻巧方便;感兴趣的请点击这里Gogs git webhook进行自动部署如何实现 Git webhook进行自...
如何使用Celery(芹菜)异步神器执行后台任务
关于异步的知识网上很多,这里就直接上代码,目前结合Flask这个Python框架实现后台任务的执行操作; 1.需要了解的知识点: 了解生产消费模型或者发布订阅模式来实现消息队列 了解异步、同步之间的差别 2.实现过程(1)目录结构├── LICENSE ├── README.md ├── app // Flask APP应用 │ ├── __init__.py │ ├── auth │ ├── email.py │ ├── main │ ├── models.py │ ├── salt │ ├── static │ └── templates ├── config.py // 通用配置 ├── config.pyc ├── manager.py ├── migrations │ ├── READM...
Redis集群详细搭建指南
Redis 集群简介Redis 是一个开源的 key-value 存储系统,由于出众的性能,大部分互联网企业都用来做服务器端缓存。Redis 在3.0版本前只支持单实例模式,虽然支持主从模式、哨兵模式部署来解决单点故障,但是现在互联网企业动辄大几百G的数据,可完全是没法满足业务的需求,所以,Redis 在 3.0 版本以后就推出了集群模式。 Redis 从3.0.0正式版开始官方支持集群, Redis 集群采用了P2P的模式,完全去中心化。Redis 把所有的 Key 分成了 16384 个 slot,每个 Redis 实例负责其中一部分 slot 。集群中的所有信息(节点、端口、slot等),都通过节点之间定期的数据交换而更新。 Redis 客户端可以在任意一个 Redis 实例发出请求,如果所需数据不在该实例中,通过重定向命令引导客户端访问所需的实例。 随随便便搭建一个集群安装部署任何一个应用其实都很简单,只要安装步骤一步一步来就行了。下面说一下 Redis 集群搭建规划,由于集群至少需要6个节点(3主3从模式),所以,没有这么多机器给我玩,现在计划是在一台机器上模拟一个集群...
蓝鲸平台实践及应用...
前言:在今年三月份蓝鲸推出了一套免费的蓝鲸DevOps技能培训,借助蓝鲸平台致力于让每个运维屌丝都具备一定的开发能力;有幸在此次培训课程坚持了下来,也收获了关于腾讯蓝鲸运维的一些理念、思维;同时自己的工作方式、学习方式也有了一定的提升、改变;再此感谢各位导师的孜孜不倦的教授—–授人以鱼不如授人以渔。 一、如何学习它? Linux基础(必备); 需要有一定的Python基础知识; 前端方面也需要多写; 学习能力 + 学习方法; 二、学习途径:链接: 蓝鲸DevOps技能培训 三、我的学习记录:链接: 作业记录 四、目前学习成果: 蓝鲸paas平台页面截图: 蓝鲸开发者中心:  自主开发App权限控制平台:  自主开发运维管控平台:  五、小结:上面的两个应用已经应用在生产环境;其他各个部门的平台开发ing;现在小伙伴儿们如果去学习的话;应该非常的顺利,毕竟坑差不多都被填完了。不想说太多;此篇博文记录一下这三个月以来的一些收获吧; 你的对手在看书,你的仇人在磨刀,你的闺密在减肥,隔壁老王在练腰,我们必须不断学习,才能让自己变得更强。
How to Use Mojo/webqq Send QQ Message
1. get docker imagesdocker pull sjdy521/mojo-webqq 2. run itdocker run -d -p 9999:5000 -v /tmp/:/tmp/ sjdy521/mojo-webqq 3. check logsdocker logs -f CONTAINER_ID [17/04/07 15:57:13] [info] 当前正在使用 Mojo-Webqq v2.0.8 [17/04/07 15:57:13] [warn] 当前版本与1.x.x版本不兼容,改动详情参见更新日志 [17/04/07 15:57:13] [info] 执行插件[ Mojo::Webqq::Plugin::UploadQRcode ] [17/04/07 15:57:13] [info] 执行插件[ Mojo::Webqq::Plugin::ShowMsg ] [17/04/07 15:57:13] [info] 执行插件[ Mojo::Webqq::Plugin::Openqq ] [17/04/07 15:57:13] [info] List...
How to Install Gateone(WebSSH)
1.Install dependent package(CentOS7)yum install python-pip 2.Get install source codegit clone https://github.com/liftoff/GateOne.git cd GateOne/ python setup.py install 3. Start this service will Generate the configuration file(/etc/gateone/*)/etc/gateone # GateOne's default install dir service gateone start 4. You will see some messages flash by, wait untill you see something like:GateOne will by default run on 443(https), and will allow access only from the hostname that it autodetects,...
"Devops" Demo(如果文中图片显示不完整,请多次刷新)
今年断断续续在工作之余学习了一下 Python Web框架,下面简要说下学的东西主要有以下几个: Flask(包括各个子系统组件) + Bootstrap主要是第一个接触的就是Flask这个框架,期初给我的感觉就是开发起来非常的快捷、方便,各个子系统也有单独的学习资料,所以从一开始我也就一直断断续续的在折腾;Bootstrap DiaoBao了. SaltStack API(netapi/rest_cherrypy)这个就不用说了吧,运维人都知道;在掌握了SaltStack在命令行的用法之后就需要去学习、探索更多更便利的方法来实现我们想要的效果; Zabbix API监控利器 zabbix, 更不用说了。由于工作上的所需,增减服务器是常有的事,那怎么快速的去添加/删除主机呢,当然就要让接口帮忙去处理啦; 下面是demo的雏形:登录系统使用的是Flask自带的Flask-Login组件,验证码用的是Google的ReCAPTCHA,当然这个在Flask表单中已经集成了;  SaltStack 命令执行,调用的是SaltApi,这里需要手动填写主机名,是个需要优化的地方. 当...
Docker之gitlab-Ce
1、docker pull gitlab-ce 2、mkdir -p /data/gitlab/{config,data,logs} 3、docker run --detach \ -p 443:443 -p 80:80 -p 2222:22 \ --name gitlab-ce \ --restart=always \ --volume /data/gitlab/config:/etc/gitlab \ --volume /data/gitlab/logs:/var/log/gitlab \ --volume /data/gitlab/data:/var/opt/gitlab \ docker.io/gitlab/gitlab-ce 或者省略第一个步骤直接创建目录,然后run起来;docker run --detach -p 4433:443 -p 880:80 -p 2222:22 --name gitlab-ce --restart=always --volume /data/gitlab/config:/etc/gitlab --volume /d...
Flask+bootstrap写登录页面
最近有些需求、想法,毕竟devops的风还是很强烈的啊,所以就跟风学学dev方面的东西; flask是一个很小巧很方便的webframe,听朋友说起django非常的重,于是我就在还有点python基础的能力下选择flask学学;准备用这个框架开发新的平台,首先就要有用户登录页面,用flask可以这样实现: 代码结构: flasky├── run.py├── static│ ├── av1.jpg│ ├── av2.jpg│ ├── av3.jpg│ ├── bootstrap.min.css│ ├── bootstrap.min.js│ ├── bootstrap-responsive.min.css│ ├── excanvas.min.js│ ├── fullcalendar.css│ ├── fullcalendar.min.js│ ├─...