- 博客(147)
- 资源 (10)
- 收藏
- 关注
原创 五、istio可视化监控
• 监控指标(Grafana)由grafana组件实现• 网格可视化(Kiali)由kiali组件实现。• 调用链跟踪(Jaeger)由istio-tracing 组件实现。默认情况下,此三个组件都是内部访问,没有暴露处理,我们可以编辑配置文件将期暴露出来[root@master istio-1.4.2]# cat monitor-gateway.yaml---# 监控指标apiVersion: networking.istio.io/v1alpha3kind: Gatewaymet
2021-04-28 09:50:22 1131 1
原创 四、Istio 实现灰度发布
灰度发布(金丝雀发布)只升级部分服务,即让一部分用户继续用老版本,一 部分用户开始用新版本,如果用户对新版本没有什么 意见,那么逐步扩大范围,把所有用户都迁移到新版 本上面来。特点:• 保证整体系统稳定性• 用户无感知,平滑过渡缺点:• 自动化要求高灰度发布(A/B Test)灰度发布的一种方式,主要对特定用户采样后,对收 集到的反馈数据做相关对比,然后根据比对结果作出 决策。用来测试应用功能表现的方法,侧重应用的可 用性,受欢迎程度等,最后决定是否升级。这种发布方式主要是面向业务功能侧
2021-04-27 17:39:34 2876
原创 三、istio部署 bookinfo 微服务示例
Bookinfo 应用分为四个单独的微服务:productpage :productpage 微服务会调用 details 和 reviews 两个微服务,用来生成页面。details :这个微服务包含了书籍的信息reviews :这个微服务包含了书籍相关的评论。它还会调用 ratings 微服务。ratings :ratings 微服务中包含了由书籍评价组成的评级信息。reviews 微服务有 3 个版本:v1 版本不会调用 ratings 服务。v2 版本会调用 ratings 服务
2021-04-25 22:26:27 904
原创 二、istio Sidecar 注入示例
部署httpbin Web示例:cd istio-1.4.2/samples/httpbinkubectl apply -f httpbin-nodeport.yaml访问,根据svc生成的端口,[root@master httpbin]# kubectl get svc|grep httpbinhttpbin NodePort 10.0.0.172 <none> 8000:31118/TCP 23d我们访问界面:http://192.16
2021-04-25 09:54:08 340
原创 一、Service Mesh介绍与istio安装
Service MeshService Mesh 的中文译为 “服务网格” ,是一 个用于处理服务和服务之间通信的基础设施层,它 负责为构建复杂的云原生应用传递可靠的网络请求, 并为服务通信实现了微服务所需的基本组件功能, 例如服务发现、负载均衡、监控、流量管理、访问 控制等。在实践中,服务网格通常实现为一组和应 用程序部署在一起的轻量级的网络代理,但对应用 程序来说是透明的。所以说服务网格是一个概念 而不是一个产品,代表产品有Istio、Envoy、Linkerd等Isito是Service Mes
2021-04-22 22:43:15 694 2
原创 k8s中将flannel网络切换calico网络
注意事项:1、kubelet 配置必须增加 --network-plugin=cni 选项2、kubec-proxy 组件不能采用 --masquerade-all 启动,因为会与 Calico policy 冲突,并且需要加上–proxy-mode=ipvs(ipvs模式),–masquerade-all=true(表示ipvs proxier将伪装访问服务群集IP的所有流量,)1、停止flanneld服务yaml形式安装的flanneld切换calico1、利用之前部署的flanneld文件删
2021-03-07 15:33:00 4658 1
原创 4、自定义一个自己的chart模板
开发自己的Chart:我们已Java应用为例完成这个chart,以后创建各种应用只需换应用镜像即可创建模板helm create javademo修改Chart.yaml,Values.yaml,添加常用的变量[root@master javademo]# cat values.yamlreplicaCount: 1image: repository: 192.168.25....
2020-02-23 14:46:19 1211
原创 3、helm的Chart模板
Helm最核心的就是模板,即模板化的K8S manifests文件。它本质上就是一个Go的template模板。Helm在Go template模板的基础上,还会增加很多东西。如一些自定义的元数据信息、扩展的库以及一些类似于编程形式的工作流,例如条件语句、管道等等。这些东西都会使得我们的模板变得更加丰富。创建chart中的自定义文件我们自定义yaml文件cd templates/rm -...
2020-02-18 23:02:18 2185
原创 2、helm chart基础使用
我们安装mysql的时候可以把chart包下载下来查看详情:helm pull stable/mysql --untarvalues yaml与set使用:构建一个Helm Charthelm create mychart#Creating mycharttree mychart/mychart/├── charts├── Chart.yaml├── templates│...
2020-02-17 19:46:15 1219
原创 1、helm3基础使用
最新helm3 https://helm.sh/docs/1、Helm 介绍Helm是一个Kubernetes的包管理工具,就像Linux下的包管理器,如yum/apt等,可以很方便的将之前打包好的yaml文件部署到kubernetes上。Helm有两个重要概念:helm:一个命令行客户端工具,主要用于Kubernetes应用chart的创建、打包、发布和管理。Chart:应用描述,一系...
2019-12-19 23:01:32 1356
原创 五、容器化构建jenkins与slave的cicd流程
1、构建jenkinsjenkins是有状态的服务,我们需要建一个数据存储,这里我们试用nfs的动态存储StorageClass准备nfs服务每台机器都要安装nfsyum install -y nfs-utils这里我们将192.168.25.137作为nfs服务器定义nfs服务路径与权限:[root@node2 ~]# cat /etc/exports/data/nfs_dat...
2019-08-15 10:19:27 1569
原创 四、利用jenkins的pipline流水线构建k8s的cicd详细方案
示例java文件:git@github.com:liaochao1991/tomcat-demo.git1、准备测试文件:git clone git@github.com:liaochao1991/tomcat-demo.git更改配置并且指定我们的仓库地址git remote remove origingit remote add origin git@192.168.25.135:...
2019-08-05 17:17:21 2091 3
原创 三、为k8s配置git和jenkins
部署git在192.168.25.136上1、安装Git# yum install git2、创建Git用户并设置密码# useradd git# passwd git3、创建仓库# su - git# mkdir solo.git# cd solo.git初始化# git --bare init4、配置客户端SSH密钥认证提交代码端:将秘钥推送到git服务端...
2019-08-01 16:03:12 915
原创 二、部署Harbor镜像仓库
部署Harbor镜像仓库下载地址:https://github.com/goharbor/harbor/releases离线包可能要翻墙才能下载:百度云盘下载链接:https://pan.baidu.com/s/10M1W4VIWSoD-B5LWCR-75Aharbor服务器准备地址:192.168.25.135安装harbor需要docker-compose环境,我们需要安装pip ...
2019-07-31 22:58:52 860 1
原创 一、容器平台自动化CICD流水线准备
CI/CD持续集成(Continuous Integration,CI):代码合并、构建、部署、测试都在一起,不断地执行这个过程,并对结果反馈。持续部署(Continuous Deployment,CD):部署到测试环境、预生产环境、生产环境。持续交付(Continuous Delivery,CD):将最终产品发布到生产环境,给用户使用。环境概述:IP 角色192.168.25.1...
2019-07-31 21:32:44 1577 2
原创 十八、阿里云api调用
sdk参考下载地址:https://developer.aliyun.com/tools/sdk#/pythonpip安装sdk:pip install aliyun-python-sdk-ecs用法:api概览:https://help.aliyun.com/document_detail/25485.html?spm=a2c4g.11186623.6.921.26b51f3cUQ...
2019-01-24 14:13:08 1592
原创 十七、python中的importlib反射
importlib反射,可以动态的导入模块来执行方法。它有三个方法:getattr,hasattr,setattr。此处,我们可以利用getattr,动态的导入模块来执行类方法,不用手动的执行from xxx import xxx。极大的简洁和方便了开发。例如我们获取服务器的参数,其中获取disk的方法写入一个py文件:路径为:func/hosts/disk.pyclass Disk(o...
2019-01-21 14:54:37 529
原创 saltstack安装和配置salt-api(python调用)
saltstack介绍https://docs.saltstack.com/en/latest/topics/index.html可以使用salt-ssh远程执行,类似ansible,也支持c/s模式,下面我将使用该种模式,需要准备两台机器安装192.168.1.39为服务端,192.168.1.9为客户端设置hostname以及hosts,master,master02两台机器全部安...
2019-01-19 15:29:45 1929
原创 十六、cmdb的增删改查
初步实现cmdb增删改查功能,先实现功能后面补充样式。1、设计表,在models中定义好字段;models.pyclass Disk(models.Model): '''磁盘''' path = models.CharField(max_length=64, blank=True, null=True, verbose_name='挂载路径') size = mode...
2019-01-17 17:28:03 1810
原创 十一、k8s收集 pod中 java日志
这里我们采取用伴生容器的形式采集java日志tomcat日志1、部署一个configmap用来保存filebeat配置:[root@master yml_files]# cat filebeat-tomcat-configmap.yamlapiVersion: v1kind: ConfigMapmetadata: name: filebeat-config namespace:...
2019-01-14 15:55:37 7552 2
原创 十、Kubernetes平台中日志收集
我们Kubernetes平台中日志收集,主要收集那些日志:K8S系统的组件日志K8S Cluster里面部署的应用程序日志日志方案:容器中的日志怎么收集:方案一:Node上部署一个日志收集程序DaemonSet方式部署日志收集程序对本节点/var/log和 /var/lib/docker/containers/两个目录下的日志进行采集优点:每个Node仅需部署一个日志收集程...
2019-01-14 15:43:38 1734 1
原创 九、k8s pv与pvc持久化存储(静态与动态)
PersistenVolume(PV):对存储资源创建和使用的抽象,使得存储作为集群中的资源管理PV分为静态和动态,动态能够自动创建PV• PersistentVolumeClaim(PVC):让用户不需要关心具体的Volume实现细节容器与PV、PVC之间的关系,可以如下图所示:总的来说,PV是提供者,PVC是消费者,消费的过程就是绑定PersistentVolume 静态绑定根据...
2019-01-08 11:34:43 12998 8
原创 十五、django 中间件
django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法。应用场景:登录验证,session验证因为所有的流量都需要经过中间件,所以用中间件做登录验证是非常方便的在django项目的settings模块中,有一个 MIDDLEWARE列表,其中每一个元素就是一个中间件,如下图。...
2019-01-04 16:12:54 195
原创 十四、django Form表单
Form表单验证(用户请求验证+生成HTML标签)应用场景:示例:1、用户管理2、添加用户页面、 显示HTML标签、3、提交:数据验证(例如用户名密码不为空,电话号码位数等)4、成功之后保存error_messages:错误信息 widget:渲染方式 required:不为空案例:写一个简单的注册,并且验证填写规范,并且成功把数据存入Mysql注意,更多的字段判...
2019-01-03 17:58:23 773
原创 八 、 k8s volume 本地存储和网络存储
volume 根据使用可以分为以下三类Volume 本地和网络数据卷PersistentVolume 持久数据卷PersistentVolume 动态供给 数据卷参考;https://kubernetes.io/docs/concepts/storage/volumes/Volume:• Kubernetes中的Volume提供了在容器中挂载外部存储的能力• Pod需要设置卷来...
2019-01-02 18:53:29 4731 4
原创 十三、FBV和CBV和数据序列化
FBV代表func,也就是函数。CBV代表class,也就是类应用场景:登录验证.FBV写法:def login(request): dic = {'tag':None,'data':None,'status':True} if request.method == 'GET': # 第一次登陆跳转到登陆 return render(reque...
2019-01-02 14:56:07 292
原创 十二、python cookie和session
COOKIE 与 SESSION简介1、cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生。cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地;当浏览器再次访问时,浏览器会自动带上cookie,这样服务器就能通过cookie的内容来判断这个是“谁”了。2、cookie虽然在一定...
2018-12-28 19:55:02 1230
原创 十一、django 分页
django的分页我们引用它自带的Paginator就可以了1、在usl.py中添加路由#测试分页url(r'^page/$', views.PageTurning),2、view.py处代码def PageTurning(request): data_li = ['join','paul','george','ringo'] obj_li = models.Useri...
2018-12-27 15:00:53 174
原创 七、k8s ingress (http/https)部署与使用
简单来讲,就是一个利用负载均衡的玩意,其主要用来解决使用NodePort暴露Service的端口时Node IP会漂移的问题。同时,若大量使用NodePort暴露主机端口,管理会非常混乱。好的解决方案就是让外界通过域名去访问Service,而无需关心其Node IP及Port。那为什么不直接使用Nginx?这是因为在K8S集群中,如果每加入一个服务,我们都在Nginx中添加一个配置,其实是一...
2018-12-26 20:48:45 13136 2
原创 十 、 ORM中的高级条件操作与惰性机制
双下划线(__)之单表条件查询:例如我们查询用户表里面的数据# 获取id大于0 且 小于5的值obj_li = models.Userinfo.objects.filter(id__lt=5,id__gt=0) # 获取id等于2,3的数据l = [2,3]obj_li = models.Userinfo.objects.filter(id__in = l) # not in...
2018-12-26 14:00:32 350
原创 九、ORM中的一对多,多对多的增删改查
模型之间的三种关系:一对一,一对多,多对多。一对一:实质就是在主外键(author_id就是foreign key)的关系基础上,给外键加了一个UNIQUE=True的属性;一对多:就是主外键关系;(foreign key)多对多:(ManyToManyField) 自动创建第三张表(当然我们也可以自己创建第三张表:两个foreign key)查询操作:一对多查询,多对多查询:注意, ...
2018-12-25 19:29:01 1504
原创 八、django modles 数据库选择与增删改查
1、选择mysql数据库在setting中配置:DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'py', #你的数据库名称 'USER': 'root', #你的数据库用户名 'PASSWORD': '...
2018-12-24 14:19:03 221
原创 七、django admin模块
admin是django强大功能之一,它能共从数据库中读取数据,呈现在页面中,进行管理。默认情况下,它的功能已经非常强大,如果你不需要复杂的功能,它已经够用,但是有时候,一些特殊的功能还需要定制,比如搜索功能,下面这一系列文章就逐步深入介绍如何定制适合自己的admin应用。初始化账户密码python manage.py createsuperuser将英文站点改为中文站点(可选)在se...
2018-12-21 16:45:43 215
原创 六、django view视图模块的返回
一个视图函数,或者简短来说叫做视图,是一个简单的Python函数,它接受web请求,并且返回web响应。响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . . 是任何东西都可以。无论视图本身包含什么逻辑,都要返回响应。代码写在哪里也无所谓,只要它在你的Python目录下面。除此之外没有更多的要求了——可以说“没有什么神奇的地方”。为了能够把代码放在某个...
2018-12-21 16:40:25 1271
原创 五、html中的模板继承
extend模板继承到目前为止,我们的模板范例都只是些零星的 HTML 片段,但在实际应用中,你将用 Django 模板系统来创建整个 HTML 页面。 这就带来一个常见的 Web 开发问题: 在整个网站中,如何减少共用页面区域(比如站点导航)所引起的重复和冗余代码?Django 解决此类问题的首选方法是使用一种优雅的策略—— 模板继承 。本质上来说,模板继承就是先构造一个基础框架模板,而后在...
2018-12-20 22:06:50 5203
原创 四、django template模块
将页面的设计和Python的代码分离开会更干净简洁更容易维护。 我们可以使用 Django的 模板系统 (Template System)来实现。所以说template 主要负责html部分。一、指定读取静态资源1、首先在settings.py中确定 已经指定了静态资源路径,并且static文件夹也在django下面建好:STATIC_URL=’/static/’2、在html中指定...
2018-12-20 22:01:10 151
原创 三、django url模块
URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间,它就是我们的网站路由系统 urlpatterns = [ url(正则表达式, views视图函数,参数,别名),]参数说明:一个正则表达式字符串一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串可选的要传递给视图函数的默认参数(字典...
2018-12-19 11:35:32 258
原创 二 、django models基本使用
django 本身提供了非常强大易使用的ORM组件,并且支持多种数据库,如sqllite,mysql,progressSql,Oracle等1、定义数据,我们使用sqlit数据库在models.py模块中定义表和字段格式:from django.db import models# Create your models here.class Userinfo(models.Model)...
2018-12-18 10:44:28 683
原创 一、Django的基本流程
MVC和MTV模式Django的MTV模式本质是各组件之间为了保持松耦合关系,Django的MTV分别代表:Model(模型):负责业务对象与数据库的对象(ORM)Template(模版):负责如何把页面展示给用户View(视图):负责业务逻辑,并在适当的时候调用Model和Template此外,Django还有一个url分发器,它的作用是将一个个URL的页面请求分发给不同的view处理...
2018-12-17 14:07:30 270
原创 六、k8s pod 健康检测
健康检查(Probe)Probe有以下两种类型:livenessProbe如果检查失败,将杀死容器,根据Pod的restartPolicy来操作。readinessProbe如果检查失败,Kubernetes会把Pod从service endpoints中剔除。Probe支持以下三种检查方法:httpGet发送HTTP请求,返回200-400范围状态码为成功。exec执行She...
2018-12-13 10:38:12 1430
calico3.9.6离线镜像包.zip
2021-03-07
helm-push_0.7.1_linux_amd64.tar.gz
2020-06-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人